Do Not and Call That Out

"Do nothing which is of no use."
— Miyamoto Musashi

I.

Should we agree that our software should do anything that anyone can think of? Of course not, and yet how often we act as if we do agree! We do that whenever we come upon some extra use case while we are coding, and then think: "but what if the user wants that?", and then commit to doing it. We sometimes commit when it is not even worth the time, and then have none left.

Clearly, it is to our advantage to not be wasting time on things that are not worth it. But whatever is the better way to go, it had better be simple. If it is complex, then we may want to do it, but probably will not.

The simple solution is this: make it a policy to first document that the code will not do the thing. Now you no longer have to think about it, until and unless a case is made that it is worth the effort.

It is highly unlikely that something important will go undone because you followed this policy. Rather, following this policy will help you avoid wasting your time and have you working on the more important things.

II.

Suppose that someone were to ask you if you accept the bet. What bet? Well, they have not said what it is for or for how much it is. Would you accept it?

Yet how is accepting an unknown bet different from electing to write code without considering (1) how much of your time it is going to take and (2) just how much anyone really needs it or even cares? Certainly, you can write code like that, maybe win some and lose some, but in the long run you will end up broke for time.

But is that even fair to say? There are a million things we do not do even though we should, from diet to personal finance. We cannot do everything right; our minds get taxed enough. We might imagine ourselves making time estimates, cost / benefit analyses, etc. but, realistically, that is not going to happen.

True, but we are not trying to fix a bug here, so that we can then be perfect. Rather, what we want is more like a feature enhancement: to get better. We should definitely be able to find something that gives a nice 80/20 effect.

So let us try to find something by analogy. Time is money and we have only so much. Suppose that we have this bad habit of making impulse buys. Yet sometimes what we buy is actually useful. How to break this habit but still buy useful things? Change the reason why we will have bought the thing. Make it not be because of some impulse. Force it to be that some convincing reason was set down as to why. How to force that? First set it down that you do not buy the thing. What is important will still find a way to prove itself.


« index »

« subscribe »