afontcu.dev

Be predictable, my friend

2 min read

There are many virtues a team can show. But I’ve come to realize that it boils down to this:

If I wanted a team to be better, I’d ask them to be predictable.

“What does ‘predictable’ even mean, Adri?” you might ask.

I’m not a dictionary, but I’ll try to answer.

I understand predictability as “the ability to produce a stable flow of value per unit of time by spending a similar amount of resources”.

To do so, a team needs to keep costs stable. You know what I’m talking about. Development costs, infrastructure costs, maintenance costs, opportunity costs…

Keeping them at bay is not free, though. Our software and infrastructure degrades over time (yeah, folks, I’m talking about software entropy), so we need to actively keep it clean and shiny.

It is like a restaurant: you can’t keep on serving menus without cleaning up the kitchen. You can’t offer innovative dishes if you don’t sharpen your skills.

The larger the feature, the harder it to be predictable

So the only way to be predictable is to keep things small. No, not that small. Smaller. Smaller. Now we’re talking.

It is hard to have a variable flow when things are kept small. Things tend to run smoothly. When we take less time to deliver something, there are fewer opportunities for shit to happen.

Keep things short, so unexpected events can’t mess with them.

Also, being wrong on a large batch is expensive. But if you fuck up a small feature, well, it is not that bad.

Large batches are fragile because we have more to lose than to gain in the presence of disorder. And disorder shines in our world: time, uncertainty, lack of knowledge, errors… They all pile up to make our industry both challenging and exciting.

Wrapping up

Writing software is the best way to deliver value at a sustainable pace.

Having a predictable team is good for the team itself and also for the business. It’s a team you can rely on. It will also keep improving its environment, and others might benefit.

You want a predictable team. Cool.

The only way is to work on small batches, finish stuff before starting a new one, and focus relentlessly on improving the system.

Oh, and some stability won’t hurt.

But… Adri. How do I know if my team is predictable or not?

Oh, my friend. You’re entering the realm of the metrics of flow. We’ll get into that soon enough – stay tuned!