Possibility and Probability

A Python programmer with a personality thinking about space exploration

6 June 2016

Full stack development/too many languages

by nickadmin

[caption id=”attachment_684” align=”alignright” width=”420”]swiss army knife Full stack developmet == swiss army knife developers[/caption] “Full stack development” is a bit of a joke. On paper it means that the developer will be touching every layer of the application from the data store to the GUI. In practice it means that the developer is expected to be an expert in several languages and technologies. In reality, its what has been going on forever and it isn’t pretty. No one really wants to be the person who says “no” when the bosses come asking for a fix or a new feature. But at the same time its difficult for most developers to be proficient much less experts in the many different languages that compose our modern computing ecosystem. The end result is a system that “kinda” works, but is buggy and poorly understood by the entire team. The irony of this is that full stack development is meant to be a shorthand for “any of our developers can jump in and take this over”. At least, that is what I have seen. Reality provides a cruel and sobering wake up call in the form of a mishmash of languages and techniques being spot welded together in the hopes that the final result “just works”. A sign of this is the humble code comment. Every language in our stack has its own quirks, and how you comment out code is one of those. Yesterday I was helping a friend debug a CSS issue. Everything he was describing made sense, his investigation of what class was responsible for the color on a certain div, is finding of all instances of that class, and his deployment of the new code. But it just didn’t work. The colors remained unchanged on the screen. We paired up and he talked me through his thought process and for the life of me everything seemed ok. The only thing that looked off to me was that he commented out the previous color. I personally would have deleted/changed the line, but that’s just me. But when I looked closer I noticed the “commented out” line came after the new line… and that it was commented out using the HTML comment tag. This was a .less file, but I was suddenly unsure of how to comment out things in CSS or LESS. I pointed that out, and lacking any other reasonable ideas, we removed it and redeployed. And that was the trick: the new and updated colors suddenly appeared on the screen. And that I think highlights the issue: we have grown an ecosystem of so many tools and languages, each meant to support us and make our lives easier. But the plethora of tools has also embedded a complexity that those outside of development don’t fully grasp and those inside of development can barely grapple with. I’m not saying that we should have one standard for comments across our layers, but I am saying maybe its time to reevaluate how we build the teams that develop our software. In the past there was always a specialist for each technology in the stack. Traditionally there was some overlap, but you usually had a few who were clearly very knowledgeable. Having a requirement that everyone be an expert on all technologies in the stack is unrealistic and leads to a poorer end result. Either developers wind up building to the lowest common denominator, or they wind up throwing code at the problem until it is fixed. One approach leads to sad useless application that no one like, the other to a sad enraging application that no one likes. The next time you find yourself saying “full stack development” think about what that really means. Would you go to a doctor who was an “expert” at brain surgery, rock climbing, baking bread, and applying bandages? Or one who is… and expert at what you need right now?   P.S.: Replace the phrase “full stack development” with “devops” and you’ll get my feelings on DevOps. :)