I am okay with the front end, I know my way around React/Redux and can make a decent looking site. I can also put together an Express/Mongo backend and use templates or simply use the server as an endpoint for a React App.
I am not an excellent designer though. Nor can I solve complex backend problems.
For job hunting do you guys think it’s better to develop this broad knowledge across the stack, or specialize?
I personally like building things which is why I have learned the whole stack albiet without that specialist level of skill.
I may do freelance work as well (its either that or a remote job for me) where I hear full stack is quite important.
But if I take a salaried job I’m not sure full stack / generalists are compared to single end specialists.
I’m thinking depends on organization you’re interested in… For example on smaller startup im guessing full-stack dev could do more for. But in larger company i would say specializing could be a better option. And for freelancing its probably jack of all trades aswell.
This is strictly my experience. A base set of skills and fundamentals is often expected, and what that base set is varies depends on the team and the company stack, but your strength and expertise in certain areas is what set you apart and get you hired. The depth of knowledge varies depends on the individual, but no one is actually complete locked in to specialize one thing
Being a front-end developer does not give you a free pass to not know anything about the back end and vice versa. Same goes with front end and design. You don’t have to be a good designer as a front-end developer, but it doesn’t mean you can be clueless about design and ux/ui principles.
Do not use these terms narrowly to box yourself in, no one really neatly fit into either. The specialists I’ve met are generalists with specialized skills and the generalists I’ve met also have strength and weakness in the breadth and depth of knowledge.
What became very apparent with my job after I was hired is that my team actually desperately need developers to code the frontend, and though not explicitly stated, I’m convinced it is why I was hired. However, the job they posted was for a full stack developer, and a small percentage of my work does involve coding the backend, so it is a job that you would not have gotten if you had no knowledge of SQL and Java Server-side technology. So you tell me, was I hired because I was a specialist or a generalist?
My point is, these 2 terms are actually somewhat deceptive and not really representative of what most developers are, so don’t use them to categorize yourself. Most likely companies are not looking for either, they’re looking for people with T-shaped skills.
Most jobs are advertised based on the full stack which that company uses. In practice, devs tend to specialise towards front or back end or devops or database admin. But someone who can work across the whole stack is useful because they give a team more flexibility.
However, as a Junior Dev, the most important things is to achieve a professional competence in one area. Most likely, that will be front end.
I would recommend spending 2/3 of your time learning front end, and 1/3 learning backend and databases.
I personally recommend being familiar with the whole stack, and only focus on specialization when you get the job. Since you can spend all your days learning some front-end or back-end technology X, and end up in a job where they use Y.
Depending on the job you end up actually getting (or full stack freelancing) you will either end up specializing or generalizing more depending on the position, and even then having an idea of how the whole stack works really helps you understand what the heck is going on in a bigger picture sense.
So I would continue to continue broadening your learning so you get an idea of multiple domains, so you don’t get “locked in” to a specific domain. Heck pick up another language for even extra versatility haha.