When good is good enough
November 20, 2007
Have you ever played this game: taking a large piece of paper, and sitting down beside it together with a couple of small children, and all together try to draw, say, a fairytale landscape?
If you are in it for the fun, you're gonna get loads of it.
But if your aim really is to draw a fairytale landscape, like those on fantasy books hardcovers, you are going to experience a great deal of frustration.
Now, a similar effect awaits you when writing software in a group: if you are a code perfectionist, you are going to be frustrated. Simply because normal developer teams are a mix of people with varying ambitions.
At some point, a developer has to let go his own feeling of responsibility toward the code, especially toward the code he has written himself. Some day, someone else will start changing your code, making it look weird and clumsy, introducing new ideas, taking charge of your code. It will happen and it is fine (as long as they don't break your regression tests).
But in my experience, letting go of your code is hard, especially code that you have polished during many hard-working hours. It's in human nature to care for what you create.
Once, during a conference long ago, I heard a developer call that 'ego-less' programming.
I am still trying to get better at that. I even wrote 'ego-less' on the corner of my desktop screen, to stare at it every day. But this is a typical example of self-refactoring: it takes time...
If you are in it for the fun, you're gonna get loads of it.
But if your aim really is to draw a fairytale landscape, like those on fantasy books hardcovers, you are going to experience a great deal of frustration.
Now, a similar effect awaits you when writing software in a group: if you are a code perfectionist, you are going to be frustrated. Simply because normal developer teams are a mix of people with varying ambitions.
At some point, a developer has to let go his own feeling of responsibility toward the code, especially toward the code he has written himself. Some day, someone else will start changing your code, making it look weird and clumsy, introducing new ideas, taking charge of your code. It will happen and it is fine (as long as they don't break your regression tests).
But in my experience, letting go of your code is hard, especially code that you have polished during many hard-working hours. It's in human nature to care for what you create.
Once, during a conference long ago, I heard a developer call that 'ego-less' programming.
I am still trying to get better at that. I even wrote 'ego-less' on the corner of my desktop screen, to stare at it every day. But this is a typical example of self-refactoring: it takes time...