~10 years ago Joshua Kerievsky taught me a lesson that only yesterday I finally came to understand.
Or at least this is how I now understand his feedback.
You must do Continuous Deployment / Delivery. If you are not doing it, you are competing in the wrong league.
If you're not doing CD because the thing you are working on just isn't ready for it, you must be following a plan with the goal of being finally able to start doing CD.
If you are doing CD, your software is leaner, more flexible, well organized. Your processes are smooth and possibly automated. You have the minimum requirements for taking your chances in A-league.
~2010 I was working at a company whose main product was a Java web framework with an Open Source core and some paid-for plugins.
I was the main frontend developer and also the DevOps guy.
We demoed the product to a potential investor, and Joshua followed up with an interview as a technical advisor to the investor.
This is how I remember it:
Joshua: So how do you guys distribute the product? Are you doing Continuous Deployment?
William: Well, the product is actually more of a lib, and it most certainly isn't a SaaS, so we c
Joshua: You should do CD. If you are not doing CD you are competing in the wrong league.
W: Let me rephrase, the product is
J: I got it the the first time :) but if you are not doing CD I think it's better - and he turned towards the investor - if we talk again when you are doing it.
Shortly after, hands were shaken, goodbyes were given, and off we went.
On our way out of the building, we brainstormed about the feedback we got, and we all agreed we didn't understand how it was even possible to continuously deploy a lib. Maybe he did mean Delivery instead of Deployment? But surely no one would ever abandon GitFlow! But then how...
One of the cofounders, who had been knowing Joshua for years, then told me: "I know, I don't understand it either. But if he said it, some day we most certainly will."
"Some day" was yesterday
Yesterday I started a proposal to abandon GitFlow for some form of trunk-based development at my current company.
A couple hours later, I stumbled upon this post by Joshua about technical debt.
The topic is slightly unrelated, but seeing who the author was made me think about that day of years ago and it finally clicked.
In the current status of the software development industry, you must be doing Continuous Development / Delivery, and if you don't, you must be willing to do it. Meaning that you must be following some well-thought plan that will finally enable you to do it.
Or you will be competing in some B-league. And it's fine, but you should at least be aware of the circumstances you find yourself in.