In a recent TechCrunch article, Peter Yared made the argument that "it's becoming virtually impossible for a single developer to program across the modern full stack."
Yared is correct in observing that to get the most of the new stack full stack, there is a lot of tweaking and monitoring that needs to be made. He's also right in pointing out that this is probably a job best suited for multiple developers.
But what the article misses is the perspective of what most software development "needs" -- and it is not some complex software using the full stack. This is particularly true for a startup that is still trying to prove its value.
So I'm advocating for a new breed of developer: the un-stack developer.
Here's why: The "stack" typically refers to developing for modern applications: Web and mobile. But what happens when you're developing for desktop apps, or in a situation where you're developing for mainframe vs. developing for AS400? There are different stacks for each environment.
Un-stack developers look at a given stack and figure out how to write code that solves problems up and down and across it -- especially in startups. The un-stack developer uses only the stack technologies that make sense for their software project. Thus, it's entirely conceivable that a single person can add features across all parts of the chosen stack. This new breed also doesn't necessarily have an "advanced level of knowledge" of the technologies in the stack, which Yared argues is necessary in modern developers.
Let me be clear: an advanced developer is not the same as a good developer. Certainly every good developer should have advanced skills, but not every developer with advanced skills in technologies is a good developer for a startup. Rather, startups need nimble coders with the kind of education that trains them to learn quickly, test often, and get an idea out the door quickly.
Twitter provides an excellent example. Developed on the back of what was the full stack at that moment for developers, Twitter was initially, from a technology standpoint, complete failure. The company built its solution on a stack that could not handle the volume of users for whom the app was designed.
The lesson for startups is that you often don't know what you are going to need until you finish iterating. The first Twitter iteration was on a Ruby on Rails stack. When the app reached thousands of users, and the blue whale was more common on the site than the application, the company had to rewrite the whole thing to make it work.
In the enterprise, it's a different story, of course, but even in that environment, an organization really only needs its number-one software developer to be a stack developer. The five or six other team members just need the right tools to work at different levels in the stack.
Ultimately, I see this as a major opportunity for tool vendors: these companies need to respond to what will be increasing demand for solutions that simplify how to work with a modern full stack. In turn, the creation of better tools will help motivate people considering becoming software developers, and help turn average developers into good ones.
The truth is that most software developments don't need the full stack. And even if the installation requires a full stack, it doesn't always require an advanced developer in all technologies of the stack, especially if you are a startup.
Good developers can write code and architect systems both for the current state and the unknown future. Given the speed of change at which all companies, from startups to enterprise, operate, developers need to keep reading and never stop innovating and learning new technologies -- so that they can develop simple solutions that work well and endure.