October 28th, 2011
(written by lawrence krubner, however indented passages are often quotes). You can contact lawrence at: firstname.lastname@example.org
Not too long ago I was working on Prometheus and realized “This is not going to be the clean, beautiful, API I want,” and I gutted the whole project.
I still failed.
The goal I was trying to accomplish was simply too large in scope to maintain a clean API (a goal I’ve gone on about before) and I shifted my goals. Beauty was not the inherent purpose of Prometheus, so I resolved to keep it as clean as I could while fulfilling its main purpose.
Recently, a very talented developer faced the same issue. In his case his goal and philosophy were cleanliness in templating. He chose to kill his project rather than bastardize it in the name of completion. That decision had to be much harder than the one I made.
I have written projects and killed them before, but never without a good bit of regret. Maybe that’s normal, I can’t really say, but for me killing a project is always like ending a bad relationship. You know you need to do it, you’ve been unhappy with it for a long time and it’s not going where you want it to, but you’re comfortable and you don’t want to let go.
I could have given this post a title of “The impossibility of purity”. This particular universe seems to consist of circumstance. I think everyone who takes programming seriously eventually has an era of their life where they obsess over the conceptual cleanness of what they are doing. That’s what causes some people to explore a language like Haskell, and others try to imagine a program without side effects, a black box, pure, but unable to interact with the world, as the world would sully it and give it side effects.
I can identify with what Michael is saying, as I have spent some serious time trying to imagine a clean architecture for some of the projects that I work on. But I find, in the end, to be productive, I have to allow myself some clutter, some debris, some garbage. You can not easily cut down a tree if you are afraid of bugs, and past a certain point, an craving for purity in software design becomes like the obsessive compulsive disorder that causes some people to wash their hands endlessly, trying to get rid of all the germs.Source