If you’re reading this, I imagine you’re some sort of software developer. A programmer, an engineer. A coder. What made you want to be a one of those?
For me, it was the idea that I can make a computer do anything I want. I imagine it might be similar reasons for other people. Within our digital domain, we are all-powerful bit-flipping super gods.
But here’s the interesting thing: sometimes I think we forget that.
Have you ever said something like: “That feature isn’t finished yet, because I’m waiting for the other team to finish their API”?
What about: “We can’t release this feature because we already merged the other feature, and that isn’t ready yet because the front-end team haven’t finished their bit, so we’ll just have to wait”?
All-powerful bit-flipping super gods? What happened?
API not finished? Code a stub. Test for the new schema and use the existing behaviour until it turns up. Understand the domain logic, learn that the value we want is “false” 90% of the time and just hard code “false” for now.
Front-end not ready? Add a feature flag. Release the new API anyway, because the front-end can just ignore it for now. Version your API. Just go over to the front-end team and get your hands dirty.
Push forward, any way you can. Blockers are all in your mind. Smash them. Work around them. Get creative. Bend those machines to your iron will.
I understand it’s hard to do. I’ve used plenty of those kinds of excuses myself. But the problem is really just the way we think about things. Everyone knows software is never finished. But individual features are never finished either.
There’s always a temptation to delay merging and releasing until everything is perfect. But our idea of perfection is always changing, just like everything else.
So: embrace the chaos, get stuck in and get busy changing stuff. We can always change it again tomorrow. That’s what we do.