I’m one of those people that has started many, many projects and not finished a damn one of them. I was recently reflecting on the trail of half-baked ideas I’ve left behind and wondered: Why is it that I can’t seem to see a project through to the end?
Well, I’m happy to report I’m actually getting to a demo-able state with one of my projects! For those of you that are starter-and-stoppers like I am, here’s what I’m doing different.
1. Just Do It!
Way back when, once upon a time, I was a little tyke with a trumpet — I was a band nerd. My band teacher used to tell me “you need to practice more!” (I wasn’t very good at the trumpet back then).
“But practicing is so boring,” I would reply.
“Well, you need to just do it!”
The same thing is true here. Part of the problem is that we read these stories about successful developers loving what they do and the passion that they have for their craft. We assume that we should feel the same way about our projects! After all, if you don’t, you’re not a very good developer, right?
If you want to get your project done, you have to actually sit down and do it.
2. Think Small at First
Most people are encouraged by progress. In software development, progress is measured (in this phase of development, anyway) by features that you can show off. So lets be agile for a second here — we need to think in minimally marketable features.
Before you actually open up your IDE write down your “goal features” — 10 or 20 distinct, implementable (read: reasonable) features. Go ahead, write ’em, with check boxes next to them and everything. Now open up your IDE and start hackin’ away.
Just walk down that list and implement each one of those features the fastest you can. Don’t worry so much about architecture, or patterns, or whatever, just pound ’em out. Now, go back and refactor! You’ll be surprised how quickly your project comes together.
3. Force the Obsession
I’m also the kind of person that’s always thinking. Most of the time, these thoughts are pretty damn useless. Well, it’s my responsibility to put those thoughts to use.
I just try to think about my project as much as I can. That way, when I get back to my development environment, I’m much more excited about implementing the next feature.
4. Work in Small Chunks
If you were to follow me around most nights you would see I get up and sit back down at my computer many times during the night. I spend 15-20 minutes hacking, and get up and go help with dinner, or do the dishes, or whatever.
Over the course of the night I end up putting in two or three hours. This is probably the same amount of time most other part-timers put in, only mine is spaced out over the course of the evening, not invested all at once.
Obviously there are times, though, that I sit down for large chunks of time to pound out some feature or get the app in to a deployable state. That is just requisite as part of software development — and not that this is usually forced, a “well, I gotta do this so I better get it done” kinda thing.
Protip: If you have a problem that you need to think on, that’s a perfect time to get up and walk away for a bit. You’d be amazed at what kind of solutions you can come up with.
5. Talk About it Often
This one is new to me — usually I try to keep my projects to myself until I’m ready to show them off…but, uh, I never got them to a demoable state so uh…not a really great technique, I guess.
Well, this time I’m tellin’ everyone I know. This keeps me motivated as more often then not people are interested in what I’m doing (or at least they fake it really well).
So, that’s what I’ve been doing and it’s been working out well for me. Try these out and let me know how it goes, I’d like to hear if others have the same feedback.