I have a reasonably unique skill among programmers - I can change the World. Throughout my career I have joined teams that consisted of smart people who all wanted some change to happen. But it did not happen, and nobody was able to pinpoint the reason. In many situations I managed to point at a set of small and fairly isolated changes to remove the obstacles and the smart people will charge ahead. It is that unique skill to identify the small changes, the order in which we should make them and the reasoning behind is the skill that I am writing about.
It started small. Almost all the teams I worked with changed their version control systems. CVS to SVN, SVN to Git, Perforce to Git, SourceSafe to Mercurial. And I was at the centre of all of those changes. I did not notice the pattern for a long time, until I did. And then it became painfully obvious.
My latest test of the skill was moving a company of 300 people into Continuous Delivery mode of operation. The teams talked about it for years. The monolith was split into multiple microservices, but the deployment was still done in an orchestrated manner. I offered my help, identified the crucial piece and started to work on it. The technical part was done in a week. The rest of the project took 5 months to complete. And what a success it was! The moment the changes to the pipelines were adopted for the crucial piece, all the other teams in the company charged ahead and finally broke loose from the old "orchestrated deployment" paradigm. The microservices are being deployed independently now, each as soon as it is ready, without expensive checking of external dependencies.
On the tail of this success comes my favourite part. Removing the old parts. I love it. This is the true closure. I am happy spending a bit of extra effort cleaning up the remains of the old world while the new world emerges enabled by me and no longer requiring my attention. The developers are smart, they are improving the tests, they are honing out the pipelines. They know how to do it and no longer need my special skill.
It is a great skill. But, God, is it hard to market!
There is a zero chance I will be able to use it during a coding interview process. Talking about it in a resume is fine, but nobody reads the long sentences required to explain it. You shorten it, but then it just looks pretentious and fake:
"So you say you were a Software Engineer II in a company with thousands of Software Engineers and it was you alone who migrated dev process to Git?"
"Well, not alone, I am the one who enabled the migration"
The big part of it is the lack of awareness that such skill exists. I am a Catcher in the Rye of the Software World and the playful children in the field are blissfully unaware of my existence.
Perhaps it is the way it should be.