Discipline Equals Speed

Building software is a process of making decisions and writing them down. Decisions like:

To a first approximation, efficient software development is all about making the correct decisions and executing on them rapidly.

For those of us who strive to excel at our jobs, the first step on this journey is usually to build more faster: to type faster, to problem solve faster, to iterate faster, to get code working faster. It’s an additive process: we’re trying to make more and more and more, as much as we can, as fast as we can.

This approach is foundational, but it has its limits. Namely:

To move beyond that, it’s not sufficient to just go faster. You also have to stop doing things that are counterproductive. You have to integrate “no” into your process:

That’s discipline.

When you first start applying discipline, it sucks. It takes away tools you habitually used, and thus reduces your ability to get things done. But that slowdown is temporary: you’ve simply taken ineffective tools out of your toolbelt. Once you adapt and lean harder on your good tools, you come out the other side a faster engineer, and a less burdensome teammate.