Kill your darlings…
This post was written for the Fleck.com blog where I posted it on March 16, 2006. I’m posting it here so it is more easily accesible. The original post can still be found here, including some comments and pingbacks.
This last week I have been trying to finish the layout for the main user interface screens. And I just couldn’t finish them. I kept postponing my work, checking my mail, staring out the window and finding reasons to do other things instead. At first I thought I just had a (code)writers block but after 3 days I still didn’t feel like finishing my work.
I couldn’t even explain why I didn’t finish the design, after all, I had 90% of the screens finished and we only needed a few more pages. So yesterday Patrick and I were in the car and suddenly I blurted out ‘The design isn’t good enough. I want to start over’. Patrick looked shocked and confused and I explained to him that we were making things to complicated for users in the current design and we needed to go back to the basics of the service.
We went back to the office and decided to spend a few hours just trying to look at the whole thing with a fresh look. After 2 hours we were sweating, high on caffeine and extremely excited because of what we sketched on our whiteboard. We decided to throw away my 2 weeks work and implement a much simpler design. It reminded me of this great story which I’m going to ask you to read now:
From Folkore.org: MacPaint was good at drawing text, allowing the user to specify characters at any position, with any font, size or style. But once the text was instantiated, it just became pixels like everything else; you couldn’t go back and edit it as text. In June 1983, Bill thought he could do something about that.
Bill decided to try to turn pixels back into characters when you selected them with the text tool. He wrote a lot of elaborate code, probably as much as for any other MacPaint feature. First, he wrote assembly language routines to isolate the bounding box of each character in the selected range. Then he computed a checksum of the pixels within each bounding box, and compared them to a pre-computed table that was made for each known font, only having to perform the full, detailed comparison if the checksum matched.
Bill got his character recognition routines working well, and it seemed like magic, if you were used to the earlier MacPaint, to be able to recover and edit previously placed text. It wasn’t perfect, because it would fail to recognize a character if a single dot was out of place, but it was still very useful. Everyone loved the feature, and congratulated Bill for pulling off another miracle.
I was surprised a few days later when Bill told me that he decided to remove the character recognition feature from MacPaint. He was afraid that if he left it in, people would actually use it a lot, and MacPaint would be regarded as an inadequate word processor instead of a great drawing program. It was probably the right decision, although I didn’t think so at the time. I was amazed that he was able to detach himself from all the effort that he put into creating the discarded feature; I know that I probably wouldn’t have been able to do the same.
So why is this story so important to me? Because it shows a lot of courage to throw away your work when you realize that the final product will be better without it. And I was lucky that it was MY work that I thought we should throw away and not someone else’s. How would I have felt If I would have been happy with my work and Patrick would have suggested we throw MY work away? I would have resented the suggestion and been offended. Which I shouldn’t be. I should welcome the suggestion. That is why I think every developer should read the story about Bill Atkinson and MacWrite. Every day you should ask yourself
‘am I doing the right thing? Should I start over? Is this feature really cool or do I just like it because I CAN build it?’ and if the answer is no, you should be able to detach yourself from your work and throw it out of the window.
Like a rabbit chewing off its leg to get out of a trap…
Filed under Business, Developing, Innovation, Inspiration, Personal, Programming |
5 Responses to “Kill your darlings…”
Leave a Reply




It is really annoying sometimes when someone in the team cries out ‘let’s throw it all away and start over from a different perspective’. But every single time the result was better.
Like our Dave suggesting we should drop the whole CommunicatieGarage thing because we were actually grown way past that kind of fun. It was a shock, but we will never regret it.
It is harder when looking at your own work, but I guess it is a sign of seniority when one can do just that.
Too true Boris, too true!
We definitely made the ‘too complicated’ error with Lovest.at (we’re remedying this at the moment). Probably all a good lesson for loads of third party user testing, or at least he private / public BETA approach.
I wish people had the balls to suggest throwing my work away. Sometimes it takes an objective third party to put you out of your misery. Throwing my own work away is not that hard, it’s the allowing myself consider it a valid and constructive option, instead of a personal failure.
BTW, did you read Seth Godin’s “The Dip”?
[...] has recently published a post in which he stated that we sometimes should “kill our darlings”. Although [...]
http://267300.spreadshirt.net/.....en-7450580