I was recently asked by Be IT Resourcing to write a guest blog post for them on the benefits, or otherwise, of being a full stack developer versus a specialist. You can read my thoughts on their blog or below, whatever you fancy.
Does being a full stack developer have its benefits over specialising in front or back
This is a question I get asked from time to time and the nature of the question only allows me to truly answer it from one perspective, the full stack one, and, card on the table, from a Microsoft technology stack perspective.
It’s probably worth a paragraph or two identifying what today’s understanding of a full stack developer is as, naturally, it’s changed a bit over the years as technology has advanced and development focus has shifted away from desktop to web and mobile platforms.
What is a full stack developer?
Fast forward a decade and a half and the world of the developer has changed dramatically. Bespoke Windows application development is starting to feel like a thing of the past with the majority of efforts being focused toward web and mobile solutions which means that, naturally, the definition of a full stack developer has changed too.
Today, for me, a full stack developer is someone who has a good understanding of all that is required to build and deliver an application, but is someone who may only truly specialise in one or two of those areas. There are plenty of articles on the web that fully breakdown what a full stack developer is in today’s marketplace so I won’t regurgitate that information here, instead I’ll provide my opinion based on my experience in the industry. That is, for me, to claim to be a full stack developer in your chosen area you need to be able to: Communicate with your Client (think Business Analyst); Design a fit for purpose database; Interact with your database in a manner that suits the problem you’re trying to overcome; Design and develop a model that represents the domain you’re working in; Develop a UI that fits the user’s expectations; Know how to adequately and repeatable test what you’ve built.
Now there’s a certain argument that with the rise of ORMs that you don’t necessarily need Database design or development skills but as a community I don’t think we’re there yet. Let’s just park that as a discussion for another day.
So taking all that into consideration, and before getting to the benefits part, the next question is:
What is a specialist developer
Well, in short, it’s an individual who is a subject matter expert in a single discipline and who’s work revolves solely around that discipline. Whilst that doesn’t mean you won’t have the same understanding of all that is required to build and deliver an application as the full stack developer, what it does mean is that you’ll be the go to guy for your subject matter, be it Entity Framework, Database Design, Domain modelling, design, or whatever.
So is being a full stack developer more beneficial?
At the start of this article I mentioned that I could only truly answer this question from the perspective of someone who is classed as a full stack developer and it’ll probably come as no surprise that my answer is yes but for reasons that are personal to me.
Looking back over my career I have worked in environments where there have been specialists who have come in to work on Integration Services, Reporting, Solution Architecture etc and I’ve often thought wouldn’t life be easier if I just specialised in something rather than continually having to learn new technologies. For example I once considered focusing purely on Dynamics CRM and just taking on project work in that area but I soon realised that it’s the learning part that keeps me motivated. Sure I could probably be a bit choosier with the project work I take on if I specialised in a single product, technology or area, and could probably charge more for it too, but what I love about sitting in the full stack area is the variety of the work that I get. I can be working on one project that is full end to end whilst at the same time be working on another that is focused purely in the back end or front end, all the while keeping my skills relevant and improving them at the same time, which, ultimately, is what keeps me going.