Sometimes I will write some software that is the realization of a very simple idea. I will spend perhaps a few days on it, polish it up, and be very happy with it.
What I have is something that tries to do only one thing. But it does that one thing very well. There is a kind of poetry to it.
But then I will be tempted to get ambitious. “As long as I’m doing this thing well,” I say to myself, “why not add that other capability?”
Soon I am adding capabilities right and left, and my once simple little software gem starts to turn into Dr. Frankenstein’s creature. It does all sorts of things, but it no longer has a clear purpose. The poetry of it is gone.
I’ve been getting better at resisting the temptation to keep building things to the point where I kill the poetry. I think it’s a skill you develop over time.