Making hard decisions later

Today, a colleague of mine recommended a short video by Jonathan Blow, an acclaimed developer in the gaming industry. Jonathan mentions that sometimes it is better to make a hard decision later in the project rather than sooner. The later you decide:

  • the better you can explore and refine the idea, and
  • the better you know the technical things needed to build the idea.

I like that. I like to think of a project as having the start, the middle, and the end. For the start, I follow a process that works well for me. After the start, we move to the middle, where hard technical decisions often need to be made. Jonathan's approach gives me guidance on how to tackle such decisions with more control.

Thing number one: If you get a rough draft of your program together, you can use that to figure out how you really want it to behave. Some of your ideas about what you wanted to build in the beginning might not have been very good ideas. You can refine those ideas by having something approximating the thing that you were building. And so the faster you get to that approximation the better.

Thing number two: The more time you spend working in that space of your approximation to the thing that you want, the more time you spend becoming an expert in the field of this specific application that you're making, the better you get at that subfield of programming, and the better your decision-making about technical issues in that field is going to be.

So if you make hard decisions later they will be made better, both by a more skilled person and with more contextual information than if you make those hard decisions early on.

—Jonathan Blow, On solving hard problems