Fullstack DevOps is not a Tautology
Now is an exciting time to be in the IT business. So many things are changing, so many fundamental concepts are being disrupted, so many new tools and buzzwords getting born virtually every day.
Tools and technologies left aside - I'm most interested in the social and cultural shift taking place. It started with the proliferation of open-source projects and gradually seeped into commercial software development and operations organisations. This is how Agile movement was born and this is how later DevOps came to be. These cultural and social phenomena are natural products of continuous improvement which takes place spontaneously when groups of smart individuals work toward a common goal. It does require leadership, someone to define and shape the vision but in the end it always comes down to (a sometimes unspoken) agreement regarding what's the best way for a group to work together.
It's like a communication protocol which gets improved over time in order to ensure the messages going through in the most effective and usable way.
Besides DevOps which you hear me speaking about on a daily basis, there's another similar (but different) concept. It originated around the same time and has been causing approximately the same amount of confusion.
I'm talking about Fullstack.
So, what the hell is a "fullstack developer"? And is this somehow related to DevOps? Googling the term doesn't come up with a formal definition but in general this is a software professional who has some familiarity with all stages and layers of software development/operation stack. I.e: network, system, API, databases, web servers, message queues, security, front end (including user interface and user experience considerations), testing frameworks and other surrounding tooling.
According to an urban myth the concept originated from Facebook, who allegedly only hired 'full stack developers' to their teams. There's been a lot of discussion of this on the web. Some people love the idea. It turns the developer into a kind of a renaissance man able to provision the whole stack with his bare hands. Others have voiced their concerns regarding such a thing being beneficial or even at all possible.Yet others tried to refine the concept applying the notion of T-shaped professionals - i.e. people with stack-wide understanding but deep expertise in a certain layer.
There's also been some overlap between fullstack and devops concepts with some guys I talked to actually thinking it's the same thing. In part this results from the confusion around devops. No matter how hard we preach it being a cultural change many people still think it's about devs taking the ops guys jobs or vice versa.
I'm not saying there isn't an overlap. If you want to enable DevOps in your company - you'll need those multi-disciplinary guys. Call them DevOps guys, call them Fullstackers, whatever. You have to deal with all layers of the stack to build a great Continuous Delivery pipeline. And when hiring for devops I'll always prefer a fullstacker to a non-fullstacker if all other parameters are the same. Or in other words I'll probably choose the guy/gal whose stack is fuller. Btu it's those other parameters which define if you're a good fit for a DevOps team or not.
So to get back to the title of this post (which is already getting too long) - fullstack and devops are not the same. You'll end up pretty much Fullstack if you keep doing DevOps for any substantial time length. But it doesn't work the other way - being Fullstack doesn't automatically make you a DevOps. Because as I keep saying - it's not what you know - it's what you're ready to do and learn in order to enable your co-workers to do their work in the most effective and transparent way that make you a great DevOps.