Jason Sultana

Follow this space for writings (and ramblings) about interesting things related to software development.

Don't rent the full stack fallacy

31 May 2021 » other, career

G’day guys!

First off, let me say that this article is not meant to be demotivating in any way. It’s just my 2 cents worth of advice to the younger developers that might be trying to create too much of a balanced skillset - chasing that Full Stack title so intently that they’re sacrificing true mastery. If you’re already a full stack developer, and life is good for you, then fantastic! But if you are a junior or mid-level developer and wondering whether to focus on front-end, focus on back-end, or try to be a full-stack-dev, here are my (potentially controversial) thoughts.

Don’t do it!

Imagine an RPG, where you had assigned the same number of skill points to each stat available. 6 strength, 6 health, 6 mana, 6 charisma…actually don’t imagine, I’ll make this easier for you. Viola!

Now it’s pretty obvious from looking at this that the player has probably made a pretty bad choice. They don’t have enough strength or HP to be a warrior; they don’t have enough intellect to be a mage; they don’t have enough agility or dexterity to be a thief; and they don’t have enough faith to be a cleric. So what does that make them? Essentially, they’re a jack of all trades. They can fulfil any of the typical RPG roles to a certain extent, but can’t do any of them well enough to be a valuable member of a party. Where does that leave him?

Sad Mario

This is basically what may happen while trying to become a full stack developer (the stats, not necessarily the sad mario). The thing is, there is so much to learn in the game of software engineering, and the list of must-know tech just seems to be growing every day. Perhaps a decade-and-a-bit-ago, it was enough to get by with HTML, CSS, JS, PHP and MySQL. The idea of being a full-stack developer was much less of a goal, and much more of a requirement for most web dev jobs. Today, the game is different. On the backend alone, you’re likely working with APIs, API Gateway(s), Redis or Memcached (caching), SQL, NoSQL, Serverless Functions, Cloud Storage, Microservices, Containers, Message Brokers, Streams - and I’m really just rattling off a list of commonly used backend tech off the top of my head. This list will likely grow, and in 5 years time, it’ll probably be obsolete.

Don’t let me give you the impression that it’s only the backend that’s become much more complex over the last decade or so though - the frontend has as well, perhaps even more so when we compare it to what it used to be. I would put together a list of equally intimidating front-end tech, but - since I’m no longer a front-end dev - I’d probably just embarass myself by my lack of current knowledge for that side of the stack.

I guess the point that I’m trying to make is that, from what I’ve seen over the last decade or so in the software engineering game, both the front and back end of the software development discipline has become pretty complex, demanding a wide skill set even just focusing on one side of the stack. Trying to master both sides of the stack - which is basically what I call the Full Stack Fallacy - will probably result in learning both sides somewhat, but neither side particularly well. And while it’s definitely worthwhile to have some understanding of the whole stack, I think you’re best off picking a side to truly focus on and become a master at.

For me, I kind of fell into the backend when I started acquiring some Microsoft certifications for my previous employer, so they’d be able to qualify for Microsoft’s Partner Program and get cheaper licences and extra support. Acquiring the certifications meant studying for and passing some exams - and you do need to be pretty knowledgable in the subject area in order to pass. In other words, without quite realising it, I was maxing out my skill points on back end stats, and getting pretty good at it.

What about you guys? How did you end up becoming specifically a front-end dev, or a back-end dev? Was it a concious decision, or did it just kind of happen, like in my case? Let me know in the comments!

Catch ya!