Just as Fred Brooks recounted the Mythical Man-Month in his famous essay back in 1975, so this article will take up the equally mythical role of the Full Stack Developer. We’ve all seen the job adverts for the roles wanting the Full Stack Developer. That person who can craft visually stunning user-interfaces, write elegant, clean code, and build a highly scalable, lightning fast production database. Is it just me, or does this seem rather far fetched?
Much of this demand comes from companies wishing to reduce their costs, namely their staffing costs. Rather than advertise and employ for each of the roles separately, they try to minimise those costs by employing a single developer who can do all of them. The market then responds to this demand in the form of developers cross-skiling as best as they can into areas that they are not familiar with, not experienced at, or just plain have no interest in. But to get a job they are forced to assume the role of Full Stack Developer as that is what the market demands.
I don’t care who you are, or how good you think you are. No one is equally adept at all of these skills. They are all fundamentally different. Yes, they may all be involved in creating a software application, but that’s where the similarity ends. If you ever needed brain surgery, you probably wouldn’t want the cardiologist to take over in the event the brain surgeon was ill. But why not? After all, aren’t they all just different forms of medicine?
But this is precisely what people expect from software developers. Rather than understanding that these are all different areas of speciality, requiring different skills and knowledge, they are all lumped together into a general purpose skill set. That brilliant graphics designer who can create stunning user-interfaces, has to also cobble together a workable database. An area they have little interest or knowledge.
The Full Stack Developer is essentially a compromised role. For example, whilst the successful candidate may be a brilliant software developer, they may also have poor user-interface skills. And whilst they may get the job done and create an acceptable user-interface, it will lack the visual appeal and immediacy of a true specialist in the field. People use specialists all the time. When you visit the doctor and it turns out you require a consultant in a particular field, you will be referred to a specialist in that branch of medicine, and everyone is absolutely fine with that.
Yet for some unknown reason, the software industry is being driven by an insatiable demand for general purpose, jacks-of-all-trades. When in reality, what it really needs, is more specialists. Software is an increasingly diverse, complex, growing and specialised industry. It’s an industry that covers the web, artificial intelligence, database technology, avionic software, mobile apps, the Internet of Things etc. It is a huge and ever expanding industry. As such, people tend to specialise into areas where they have an interest and are passionate. Just like in so many other industries.
If you hire a Full Stack Developer, don’t be surprised if your applications come with weaknesses due to the weaknesses in the skill set of the person you hired to do the job. What’s worse, those areas of weaknesses may be in areas you can’t see e.g. the database or code. In which case, you have no idea how good or bad the application really is, until it fails that is.
If this article was helpful to you, please do hit the 💚 button below. Thanks!