The term “Full-Stack Developer” has a chequered past in the Software industry. Like many terms, when it moved from being a real and unique job description to being a marketing buzzword, it lost much of its meaning. In our role of providing teams of Software Consultants to our clients, words have a very important meaning – how well we meet the client’s needs relies on a precise understanding of those requirements.
The History Lesson
You can argue that Full-Stack development goes back to the earliest days of software development when it was more common than not that software was written by one person from start to finish right across the full stack from User Interface to Storage. In the early days of software development, this was mostly due to the fact that the partitioning of different parts of the software stack was inconsistent if not non-existent. Most programmes were standalone until eventually the stack was separated into layers through the arrival of client-server and later internet computing leading to the need for complex team-based software development. Specialisation followed, leading to a clear set of separate development specialisations. When the tools and the development stack matured sufficiently around 2010, it soon became possible again for a single developer to build an application from UI to storage. Soon enough, the term Full-Stack Developer started to gain popularity. But in the constant drive for more and more involved web solutions with the tools and frameworks struggling to keep pace, specialisation again became essential. This established a continuous cycle of one phase where solution complexity outpaced the tools and frameworks leading to developer specialisation followed by a second phase of advances in tools and frameworks outpacing the application complexity allowing the emergence of the Full-Stack Developer.
Full-Stack Developer – What works for your Project?
In the context of modern software development, there is still much debate on what is and isn’t a full-stack developer. One place to start is whether a full-stack developer is meant to be an expert at every layer in the stack or whether you need a developer with a broad appreciation of each layer and how the layers work together while having deep knowledge in a couple of areas.
One area where there is consensus is in product start-ups. In this environment, a key need is to be able to build rapid prototypes or MVPs (Minimum Viable Products). In this area, speed is key to allow a workable prototype to be created with minimum feature set and minimum investment. In this environment, using an efficient toolset and software stack, a competent Full-Stack developer can get an MVP into the hands of real users in a matter of weeks. The ability to test product concepts can allow a start-up the ability to pivot numerous times without burning too much cash and efficiently achieve Product-Market fit.
In a more established product organisation, the need for a Full-Stack developer is more debatable. In such organisations, there is a key need for deep expertise in each area. Users may forgive a clunky User Experience in a cool new product concept, but when they are paying significant subscriptions for an enterprise solution, there will be a high demand for an excellent (UX) User Experience.
Similarly, while a poorly designed data schema can deliver well enough for a few thousand trial users, an optimised data model is essential to scale a product to commercial levels.
Most developers will readily admit that they have a preference or unique talent for working in one area of the stack. Some will consistently build beautiful User Interfaces, some are exceptionally skilled at optimising the data layer while others get great satisfaction tweaking a distributed architecture for ultimate performance.
So specialists are essential for mature solutions, which means that Full-Stack developers are only for early-stage start-ups then? Well, that again depends on definitions.
There are three broad levels of expectation of a Full-Stack Developer:
- Jack of all trades and Master of none
This may be just the solution for cranking out an MVP, but won’t cut it later on in the product lifecycle.
- The Renaissance man (or woman)
This developer is every hiring manager’s dream hire – a solid architect, a UX artist, and infrastructure, data layer, and API guru. The reality most managers understand is that these are so rare, that you can’t build a real-world software team based on these requirements.
- The Seasoned Generalist
These real-world developers know enough across the full stack that they can guide the architecture, lead specialists while deferring to their niche skills, and can roll up their sleeves in a couple of areas as well as anyone else.
Most teams will work well with a good combination of specialists based around one or more Seasoned Generalists. The key is to know what your expectations are of each role and build a team of top-performing developers who complement each other.
While we all dream of uncovering the Renaissance Developer, the reality is that the hiring manager needs a super-power of their own – hire a group of complementary individuals and build them into a super-performing team. For more information on our portfolio of services, please get in touch.