Full stack and a word of the week

The full-stack developer - image of a stack of pancakes

Obfuscation: The action of making something obscure, unclear or unintelligible.

I had such fun with my last two words of the week that I decided to keep the theme today. (For the developers, now you know where the term "code obfuscation" comes from.)

Recently someone asked me about the concept of a "full-stack developer". This is one of those buzz words that recruiters and managers love. So what, if anything, does the term "full-stack developer" mean?

What's the stack, anyway?

A complete software system consists of many layers. There is the user interface, aka the front-end. There is the database and server on the other end, aka the back-end. And then there are layers between. These in-between layers handle the control and business logic. The "solution stack" is the set of technologies used for an end-to-end solution.

So a full-stack developer is one who can complete an end-to-end solution.

My stack is not your stack

There is no single software stack. Developers (or managers or architects) choose what technologies to use for a system.

Are you developing mobile apps or web apps or native applications? We assume the front-end is web-based, but there are many different JavaScript frameworks. And we can make no assumptions about any other layers. Are you using Java or PHP or Python or .Net? What frameworks are you using? And you might not even be using a database system. And now the serverless stack is an option with cloud computing.

So "full-stack" means different things to different people. You need to be specific about the skills you want, or the skills you have. Otherwise, the term is just obfuscation.

Jack of all trades, master of none?

There is plenty of heated debate about the concept of a full-stack developer. (Some cynics think that it's a ploy by companies to make a developer do three jobs and only get paid for one.) Most of the debate is about the level of expertise expected of such a role.

There is merit in many of the arguments. Here are a few thoughts to consider:

  • Developers should understand how all the technologies in the system fit together. Working in silos ("not my job") leads to bad communication and bad decisions.
  • Developers should know more than one technology or language. The challenge is not what to learn. The challenge is to develop the habit of life-long learning. Good developers are always learning.
  • Technology is complex and it changes fast. It is unrealistic to expect a developer to be an expert in everything. Even so-called full-stack developers will have better skills in some areas than others.
  • The hype around "full-stack" may be dangerous. It can encourage wide breadth and shallow depth knowledge — the jack of all trades, master of none. Experience matters.

Is full-stack a good choice?

Many roles need specialist knowledge, like UI design and database administration. Specialization isn't suitable for everyone, but neither is generalization. And the bigger the company, the more specialised your developer roles will be.

Alexander Katrompas suggests that "no developer is full stack in practice in enterprise production. At least not if you’re doing it right." His article is a fun read, and food for thought.

What do you think about the "full-stack" developer? I'd love you to share your comments on the blog.

Leave a Comment

Your email address will not be published. Required fields are marked *

Thank You

We're Excited!

Thank you for completing the form. We're excited that you have chosen to contact us about training. We will process the information as soon as we can, and we will do our best to contact you within 1 working day. (Please note that our offices are closed over weekends and public holidays.)

Don't Worry

Our privacy policy ensures your data is safe: Incus Data does not sell or otherwise distribute email addresses. We will not divulge your personal information to anyone unless specifically authorised by you.

If you need any further information, please contact us on tel: (27) 12-666-2020 or email info@incusdata.com

How can we help you?

Let us contact you about your training requirements. Just fill in a few details, and we’ll get right back to you.