Now or never

This is another one of those principle pairs that is more about the method of writing than the writing itself. The statements of now being better than never but never being better than right now may seem somewhat paradoxical, but they describe the nature of writing code and delivering value through it.

Now doesn’t mean right this second. It is meant to represent the near future and in that near future, the code we have written has delivered value. This is opposed to never releasing the code at all or releasing it in an unrealistically long timeframe, by the end of which the written code might become irrelevant. As Steve Jobs used to say:

Real artists ship.

However, right now is also never a good time. To release something too early, with no thought put into it, no understanding, and no game plan, can result in disaster. The basic lesson there is to look before you leap. And if you leap into a volcano, you probably didn’t do your due diligence.

One of the reasons that right now is looked at as not a good time is because right now, there are no good ideas. There are never any good ideas right now; you kind of have to wait for your brain to come up with one. You push too hard trying to get something through that is hard to explain – that is a bad idea. That is how we can explain all the stupid trades that general managers make in sports at the trade deadline.

Hard-bad/easy-good

If you’re having a hard time explaining something, it is probably a bad idea. There’s not much to explain there – that’s just common sense. A complex vision is no vision at all. It needs to be reduced, simplified, and shaped into something that most people can understand (or at least work toward).

An idea that is complicated is simply an idea that hasn’t been reduced to its most useful, simplest component yet. As the old adage goes, there is always a ratio of 20% of the effort producing 80% of the output. To create the good idea, we just need to bring out and work on that 20%.