Focus On Software Delivery Fundamentals

When you’re in a situation where you feel people are overcomplicating software delivery, take a step back and think. Does the path we’re going down help improve our software delivery fundamentals? Or does it avoid improving the basics altogether?

Stephen Curry is one of the most influential NBA players today. Kids growing up today want to be like Steph and shoot three-pointers. They skip all of the fundamentals of basketball and only practice their three-point shooting.

In sports, having solid fundamentals allows you to learn and make more advanced moves easily. The same is true for software.

Here’s a situation I’ve seen too often:

An engineering team is having issues with software quality. They’re worried about causing production incidents. Instead of focusing on the fundamentals of delivering small changes quickly with automated tests, they invent complicated processes to try to prevent incidents. One example might be batching up many changes to be manually tested. Or they might start spending time writing code to help them introduce new changes safely.

All of this effort could have been instead spent on improving the fundamentals. They’re trying to jump straight to shooting threes when they can’t dribble the ball down to the three-point line. If you have a good automated test suite and deployment pipeline, there’s no need to have runbooks for cherry-picking to hotfix branches. There’d be no need to reserve an entire environment for your team to test their feature. No code freezes.

If you don’t have the basics down, don’t create processes to work around it. Just focus on the basics.


Join the 80/20 DevOps Newsletter

If you're an engineering leader or developer, you should subscribe to my 80/20 DevOps Newsletter. Give me 1 minute of your day, and I'll teach you essential DevOps skills. I cover topics like Kubernetes, AWS, Infrastructure as Code, and more.

Not sure yet? Check out the archive.

Unsubscribe at any time.