It's hard for me to think someone is a very good developer if they don't at least know basics around multiple areas in development.
To me it's like being a chef that only makes cake, or worse, a chef that only makes one kind of cake.
Agree on it, I believe one has to draw from certain fundamentals or multiple mental models to allow yourself to become a better developer.
Which is not limited to just technical skills in the latest technology to become a better developer.
It could be from writing to demonstrate clear thinking to psychology that encourages user behaviours or philosophy which teaches us on how we should build software that is ethically sounded.
Ah! It was just few years ago, when just knowing php and jQuery was more than enough. Now you have to be superman just to be the average one.
That's so true lol. Things have become more complicated, but often it's because the demands are for more complicated use cases.
I call myself a full stack developer.
First things first: I do exist, despite what the web seems to say lately.
Why I think that my role is important? Because frontenders are mostly unaware of how deal with Axon in a Java Spring application and backenders have no clue how to cope with React Hooks. This makes me the first point of contact with business/product/management when sh*t hits the fan.
If someone who can deal with the unknown in no time is needed, that one is me.
At the same time, having a broader overview of how things work, makes me useful in meetings (any kind of meeting) and gives me the opportunity to give insight and different options to my colleagues which are more specialized than me.
Am I the best frontender of my team? No
Am I the best backender of my team? No
Am I the best devops of my team? No
Am I the best designer of my team? No
Do I want to be the best in one specific area of those? By no means.
I am a generalist and life is proving me on a daily basis that the world needs generalists. We really should stop lying and telling the myth of how useless a jack of all trades is, because that simply doesn't hold true.
Not being the best at something doesn't exclude you from being able to help a colleague if he's / she's stuck on something too. That's the beauty of it and that's what people miss on most... Thinking outside the box!
That is why you are unique in your own way due to your experiences and skills gained by being a jack of trades.
For me it is more towards that I tend to learn stuff widely.
Which leads me to persist in solving problems with whatever tools I have in my disposal or seek advice to help me in solving a problem.
I'm a freelancer so being a full stack developer allows me to have multiple jobs at the same time compared to most of the freelancers I know. Most of them get 2 or 3 jobs a year and spend the rest complaining how hungry they get.
It's also a plus for clients as they only need one ressource to do the whole job.
All the hating about full stack devs recently got me thinking... Why all the hate??? I don't get it, I'm not hating on angular and react dev, even though I don't like these is frameworks...
Honestly you and me both since I don't really know why is there is so much hate in it.
I hope with this, it could help in shedding light in it that it is totally fine to be a full stack developer and not treat it as a bad thing.
There are no hate Against "full stack", the hate is Against the people who "use" others with catchy terms like this and discard their true value and hard work. Full stack people can learn anything fast.
You saw my post as well, I still tell people to learn a lot and try to be full stack.
The hatred itself is misleading.
People only write that kind of article when something happens to them due to this term. They get heartbroken when they see their dream getting shattered and passion of programming getting questions just because of a term.
It's great that we both agree that we should learn more to become a better developer.
What I'm advocating is being unique by skill stacking.
To stand out from crowd to do work that uses your knowledge and skills in different way like building board games to teaching programming.
Bruce Lee always said : the more you know, the less stupid ;)
Often, trying other stack / techs can drastically help you better code on your main tech. Ex PHP and Python. PHP and C# using unity etc
Yeah, Bruce Lee's quotes are always direct to the point despite he's a philosopher, kung fu master who created his own martial art form from various material art forms and a famous actor.
Yes, we should always strive to use different stacks to not be the person who focuses on using a hammer to solve every problem.
Bruce Lee was a full stack martial artist ;)
Hahaha, he sure is one of the renaissance men in that time.
While I was reading your article, I realized that if there's some kind of "hatred" on the "full stack" title; an even bigger hatred would exist on the so-called "DevOps", since that title is even wider than full stack to me. Or maybe I don't know enough about DevOps and am just impressed by how complex it sound !
Programmers are supposed to fix TV, install windows, hack friends Facebook ID....
They are supposed to be nerds sitting on chair all day with lame dress.
They are modern slaves.
DevOps? That's just another kind of slaves.
Its complex enough.
All these buzzwords are to be used by business people.
Fair enough why people hates the terms.
Hmm... Agreed I think it is some kind of a buzzword and latest trend when I'm searching for it. Comparable to data scientist as well from my end.
Personally, I know some really great "full stack" engineers who can move between the front end and back end fairly well, but they are few and far between. All of the developers where I currently work, besides our two front end guys, are considered "full stack" and I would definitely NOT consider any of them "full stack". Just because they know how to use Razor to pull data in from a .NET model and use a little jQuery for some form validation, then sprinkle some random Bootstrap classes on it and call it a day doesn't mean they understand how the front end works. On the flip side, just because I can add some logic to a controller and update a model/DTO, doesn't mean I'm "full stack", either.
I see this a lot in new job listings. The term "full stack" is the new term for "back end" at a lot of companies, which becomes deceiving. I see full-stack as a senior/architect level position. Someone with enough knowledge in key areas who can build an entire MVP by themselves without needing the help of another. It might not be perfect in all areas, but it will be functional enough for a specialist to come in and polish it on the next iteration.
The full stack dev is the person you assign to build a new product proof of concept, so you don't have to pull multiple resources from other tasks. Building an entire team out of true full stack devs is difficult and probably the wrong way to go about your business. Most good devs will have enough knowledge on both sides to talk each other's language and make simple edits, and if they don't, the knowledge can be picked up fairly easily. This does not necessarily make someone "full stack", this just makes you a competent developer.
Yeah I agree that building a entire team out of full stack is ridiculous.
Most of time when you look further into the job.
It will be specific skills sets for either the frontend or backend to build MVP.
In the sea of black & white cows, it is much easier to be a purple cow through talent stacking than be a pure white cow or pure black cow.
Since the pie is large enough that caters to different markets, it is totally fine to be a specialist or a generalist as the work we do is totally different.
I actually like this article from AngelList the most which is What Skeptics Get Wrong About Full-Stack Engineers—And Why We Need Them while doing my research before writing my article for this.
Next time, please don't put the reading time in the title.
Cool, I shall not be putting it in the title then :)
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.