When To Be A Full Stack Developer — And When To Specialize
Alto is hiring, and that means that we are doing a lot of interviews right now. Having been in a lot of interviews over the years, I have learned what I look for in a candidate and what I know to reject in a candidate. But this isn’t a post about that.
This is about a recent discussion myself and a few other developers got into when I stated that seeing “full stack” in a developer’s resume is actually a negative for me rather than a positive. This led to quite the debate and explanation, so I felt it would be interesting to take this to the Internet and get more opinions — but first, mine.
Searching For A Developer
When most companies are looking for a new developer, they are looking for a specific kind of developer, e.g., Angular Developer, Google Cloud Developer, Java/Spring Developer, etc. Sure, companies will put into their job requirements that a developer know every piece of technology that the company uses, but rarely, if not never, have I seen a request for a “general developer.”
We need an Angular Developer that knows Java with Spring with hand-written Oracle SQL statements and can deploy their code continuously into Google Cloud.
The problem is that a handful of managers and HR folks probably got their hands on the job requirement and thought this was a time to get a magical unicorn of a developer when the hiring manager really means to say…
We need an Angular Developer, and a good one at that, everything else is gravy.
In graphs this translates to:
The problem is that developers see these job requirements and never send a follow-up email or ask recruiters what they really need. This leads to some developers feeling that they need to become a full stack developer to get a job. Leading to these same developers working really hard to learn a lot of disassociated skills in an attempt to get a job. These same developers, when in interviews, instead of looking like unicorns, end up being a bad fit for the open job.
Learning And Growing
Does this mean that I am saying you shouldn’t learn many different areas of software development (if you want to)? Not at all. You should constantly be filling your head with as much knowledge as you can cram in there. The important part is to build up a solid technology to really get deep into and master. The act of mastery helps you when you decide to learn other areas, because then you can see how much you can learn around a specific topic. When you go to the next topic, you know the questions to ask and some expectations to have when you are learning a new area of focus.
As an example, I remember when I was getting deep into front-end development. Originally I knew how to “make things work.” I would run the code over and over again to ensure there weren’t any bugs. I thought I was a good developer and most people were happy. Then I started to go deeper. Performance best practices, unit testing, automated tests, design patterns, compilers, code reuse, code organization, framework architecture, continuous development, build scripts, and much much more started to fill in every corner of front end development. When moving to other areas of development a lot of this knowledge overlaps and helps as a basis for future learning.
I consider that a man’s brain originally is like a little empty attic, and you have to stock it with such furniture as you choose. […] It is a mistake to think that that little room has elastic walls and can distend to any extent. Depend upon it there comes a time when for every addition of knowledge you forget something that you knew before. It is of the highest importance, therefore, not to have useless facts elbowing out the useful ones.
~ Sir Arthur Conan Doyle, Sherlock Holmes — A Study In Scarlett
I love this quote, as it wonderfully explains my next point. As you learn, you do forget. As you learn, your level of knowledge in one area will dip as another grows. Over time, you might not be the super expert you once were, but the time you already put in refreshing your knowledge won’t take nearly the amount of time you spent the first time around.
A True Full Stack Developer Evolves
Now we start talking about a full stack developer that I would be excited to talk to. With years of experience, lots of time learning and mastering development skills, we evolve to eventually having mastery over multiple areas within the development space. Maybe the developer still has a favorite stack that is near and dear to their heart, but they understand so much about so many different areas that they can’t help but call themselves a full stack developer.
These kinds of developers aren’t those this article is meant for. They understand the work it takes to get where they are and most likely understand the development career game very well after the time that they put in.
Not all developers reach this stage, and many developers don’t even see this as a goal for their careers. Many developers are very happy to learn one or two areas of development and stay there for their whole careers.
When spending time thinking of your own personal growth track, you need to determine which sort of developer you want to be and where you want to put your precious time. It is my opinion that you not try to do everything at once. There is just too much, and you will suffer from being bounced from project to project since you haven’t clearly defined a speciality or what area of development makes you happy.
For some developers, this means turning down projects that might be outside of your track or at least communicating within your organization the area that you would prefer to work in.
Take control of your career path and find an area of focus and become a master.
Jonathan Campos is an avid developer and fan of learning new things. I believe that we should always keep learning and growing and failing. I am always a supporter of the development community and always willing to help. So if you have questions or comments on this story please ad them below. Connect with me on LinkedIn or Twitter and mention this story.