Paul Graham has another essay to ponder. One point he makes is that good software developers don’t overly plan their entire program.
“Systematic” is the last word I’d use to describe the way good programmers write software. Code is not something they assemble painstakingly after careful planning, like the pyramids. It’s something they plunge into, working fast and constantly changing their minds, like a charcoal sketch.
In software, paradoxical as it sounds, good craftsmanship means working fast. If you work slowly and meticulously, you merely end up with a very fine implementation of your initial, mistaken idea. Working slowly and meticulously is premature optimization. Better to get a prototype done fast, and see what new ideas it gives you.
I think I should try working faster. When writing code, I plan and diagram all sorts of UML, sometimes even write out requirements and timelines. By the time I finish all this work, the fire in my idea is a glimmer of light and I’ve had to move onto something else. And there’s also the fear of where to start. Joel on Software wrote about this in “Fire and Motion” and it’s something I keep in the back of my head. Just code something. I need to dive right in and get coding.
I’d like to do a little personal survey around the office to see if our good developers dive right in or do they sit back and carefully plan.