Full stack or not full stack — that is the question
Full stack developers are a total buzz today. Just open any hiring site, enter “full stack developer” into the search box and enjoy the demand. In this article we will take a look at all the pluses and minuses of being a full stack developer.
Hundreds of companies are waiting for these “magical people” (I’m not kidding when I call them “magical”, still not everyone believes in their existence). But I do. I know that such specialists exist (no matter what they are called), and they have knowledge and experience which allow them to create software from scratch and release it. And this software can be used either on web platform, mobile or desktop.
Sounds too good to be true, right? And indeed, not everything is so positive about full stack developers.
As promised above, let’s take a look at all the pluses and minuses of being a full stack developer.
- In a separate sphere/language a full stack developer may perform worse than a specialist. If someone has spent five years studying a certain programming language, then it can be assumed that he’ll have deeper knowledge than a person who has spread his attention over several languages over the same period of time.
- It’s difficult for you to dig deeper into something. A good full stack developer is permanently overloaded. As a result you have little to none time for learning something new. And if you managed to find some time you have to spread it over different topics you need to learn.
- Higher probability of being overloaded with tasks. Even if you have great time management skills, situations may occur when a couple of projects (if not more) require your attention at the same time. You’ll need to solve this problem by either delegating some of the work to your colleagues or with the help of meticulous and (in many cases) overtime work. Of course, no one is safe from overtiming but in case of full stack developers such probability is simply higher.
- Such developers are difficult to replace. At first you may think that it’s an advantage as you’re a valuable employee, but it’s only half-true. Problems with delegating work, inability to go on vacation when you want, numerous phone calls when you’re out of office – you really want all this? (As a side note: full stack developers are generally a godsend for startups as they can replace a small team of developers).
- You can’t catch up with all the latest tendencies/frameworks/libraries/etc. Companies tend to look for developers who are able to work with the latest tools. But it is difficult to try and implement all the latest things as you don’t have enough time.
- You pretty often have to turn to manuals for help. Even functions for handling strings look different in different programming languages, not to mention more serious things. If you switch between languages and technologies then you’ll need to peek into manuals to brush up some things, and that’s normal. But little by little this slows down your working process.
The bright side
- It’s easier for you to change specialization. You see the application of different technologies, thus it’s easier for you to understand what’s more appealing to you or what technology can be the next Big Thing. Sure, you’ll need to spend some time studying the peculiarities of the selected language/framework/etc., but it won’t be a waste of time.
- If you have the possibility to change projects and technology stack, then you’re less fed up with doing the same thing over and over again. Well, it isn’t applicable if you’re a hardcore fan of a specific language and ready to write code day in day out, but nevertheless.
- It’s easier to become a team-lead or an architect. Well, this point is pretty clear – the broader range of knowledge you have, the easier it is for you to occupy some managerial position. If you aim at occupying such a position, that is.
- You can debug things. If you know it, you can debug it. As simple as that.
- You can create beautiful things at the intersection of different technologies. And you can do that alone, without involving additional people in the project (at least at the beginning of it).
- Your solutions work faster and are more reliable. Well, that’s not always true, but what I want to say here is that having worked with different systems and technologies, you have better understanding of possible bottlenecks that may appear in the project. As a result, you can choose better for the technologies necessary for completing a project.
- You can read and use almost any source code. Today, when a lot of low-level tasks are already solved, there’s no need to reinvent the wheel. Thus, with your experience you can take almost any repository in any programming language and use it to your advantage or as a starting point on the way to create something unique. It will also help you not to repeat the mistakes made by other developers before you.
- Life is better. You know that there’s no such thing as the best database or the best programming language, and you don’t need to argue about it.
Well, that’s it, I think. You’re welcome to agree or disagree with the above-mentioned points in the comments section.