Are you procrastinating? Or are you just thinking?
I came across this terrific post on a blog "devoted to all things geek" called Gadgetopia. While this entry's aimed at computer types, if you substitute the word "programming" with "writing," "marketing," "presenting," or any other kind of creative project, I think you'll find it extremely useful. I certainly did. It appeared on 05/14/06. [Editor]
Here's something I've learned: when faced with a programming project, the worst thing you can do is start coding right away.
Programming is not like building a house. When you build a house, a wall goes together a standard way. Match up Tab A with Slot B and you're good to go. (A gross over-simplification -- please don't flame me over this?)
But programming an app -- there's a million different ways you can do it. And it keeps changing. The way you programmed an app a year ago is probably not the way you'd do it now. There are new languages, new frameworks, new methods, new capabilities, new interface expectations, etc.
I have a problem with procrastination. But I've learned that sometimes, I'm not procrastinating as much as I'm really thinking. Sometimes, the worst thing you can do is start programming right away. Sometimes the best thing you can do is think about the problem -- either actively, or just by letting it simmer on the back burner of your mind for a while. The way you'd start coding the thing two days from now, very well may be 100x different.
This weekend, I needed to program a simple job application. I've done this before (in the end, it's just a form submission, really), but I still didn't think I should jump into it right away. I started thinking about it while I went about my average Saturday, and didn't start coding it until five or six hours later. Sure enough, during that period, I came up with some really good ideas on how to do a couple of things which resulted in a much better app overall.
It's almost like every app has a gestation period. I know from having three kids that my wife got pretty sick of the whole pregnancy thing about four months into each of them. But, obviously, that baby needs to stay in there until it's done. Likewise, even if you're flat sure you know how to program that app, maybe sleep on it. Let it gestate a little more before throwing down any code.
When I was in the Navy, I was a medic supporting a platoon of Marines. I remember clearly sitting on a ridge overlooking the urban combat training facility in Camp Pendleton. In the "city" were hundreds of bad guys. On the ridge were hundreds of Marines.
Everyone had a plan, and they all involved doing something right now. But the sergeant that everyone really respected and listened to said something I'll never forget. He said, "There are a thousand different ways to do this. Problem is, 999 of them are wrong." The same can be said of programming.