I read this article today, about how there are two kinds of programmers (there's always two kinds..). The first is the type that likes to explore an idea, thinks about how to work on it, then works real hard on it and loses steam as he/she goes along. The other type picks up where the first type loses steam, and takes care of the details, maintenance and robustness.
I am definitely the first type. Case in point: the current project I'm working on. The project can be subdivided into smaller tasks, one of them is user management, and another is adding a cool tech feature. The user management is way more critical so I forced my self to work on that first. It's nearly done now, but spending time on getting the flow right, getting the CSS right, doing proper testing etc. etc. just makes me lose steam. I'm thinking: if it's already 90% done then why don't I switch to getting something else 90% done? Then I'll worry about the 10% later. In other words, if I can already see the solution and how I would create it, then I don't feel motivated to actually do it any more. It's like a magic trick. Once you see through it it becomes a whole lot less interesting.
So yesterday afternoon was spent doing tedious login/logout/password reset testing, css tuning, more testing etc. I was quite bored and tired after a couple of hours of doing that. That night though, I worked on the tech feature, lost complete track of time, and had it 100% done at 4AM. Well, 95% perhaps, but the point should be clear: if the task is creative and exciting then I can make progress quicker. This is a clear example of the 'Steve' type of programmer from the article mentioned before.
However, my project is (so far) a one-man project, and I can't afford to not spend time on the details. If this project is going to be released, I need to suck up the boredom and spend time doing all the tasks that take the steam out of me. It's a healthy experience in a way, because it takes me out of my comfort zone and makes me learn new stuff. But I can't keep it up for long, or I'll end up bored and depressed. That's why I also work on more or less trivial tasks as the same time, so I can keep the right balance.
On that note, the deadline I've set for myself is April 1st. I hope we can launch by then.