Side projects – most of us have one or two pet projects that we work on between our day jobs and other non-computer stuff (family, friends, etc.) Some of my friends and colleagues take these side projects more seriously than others and actually turn them into real products that are in use by hundreds, if not thousands (dare I say hundreds of thousands?), of people every day. Some examples include: 22books.com (James), whatiwantmost.com (Dan), codekeep.net (Dave), meiraware.com (Jayme), tourneytopia.com (Joel) and sitedevelopers.com (Mike – non-blogging loser). On top of those examples, there are lots and lots of developers working on lots and lots of excellent open source projects.
I probably have a dozen projects that started out with the greatest of intentions but either lack of time or the realization that I bit off more than I could chew stopped any progression. Most of my side projects are ideas that will help ME be more productive in my work, but some area ideas that I’ve gotten from other people. Some ideas are think are real winners, but some aren’t even worth the initial time I spent on them. Live and learn, right?
A job?
I was chatting with James a few days ago when the subject of side projects came up. During our chat, he said something that made me take a step back and re-think how I approach my current side projects (highlights by me).
[11:28] James Avery: you got any side projects you are working on?
[11:30] Michael Eaton: I’ve got a couple cool ideas for side-projects, but I tend to over-think and have a tough time getting started.
[11:30] James Avery: yeah, thats always a problem
[11:30] James Avery: I tend to get a good idea, then move on in a couple weeks to something else
[11:30] James Avery: I have gotten better at focusing by treating it as a job
[11:30] James Avery: and putting tickets and milestones into unfuddle
That makes sense. I’ve almost always treated my side projects as something I worked on when there was nothing else to do. More times than not, I’d get done with my day job and start in on one of my side projects. I’d make some progress on a feature but then get seriously sidetracked.
A vicious cycle
Here’s an example:
While I’m working on project
See a pattern? Ugh. It’s at that point that my head is spinning with all sorts of cool ideas…so many ideas that things come to a stop because I’m not sure where to go from that point. Analysis paralysis. Most of the time, I end up getting frustrated at my inability to move on, so I’ll fire up WoW or my Xbox. Then, after killing lots of stuff, I’ll feel bad that I didn’t get anything productive accomplished.
Like I said, I think I have some good ideas, but I need to find a way to manage my ideas and implement a more formal, job-like process so when I get side-tracked I know where to go. The humorous part about that statement is that I’ve been at this point before and guess what? I started working on a tool to help me manage my projects. I got pretty far on it too (it was a RoR app) before getting into that same nasty cycle that I described above. Of course, the net result is that I now have unfinished primary side projects as well as my unfinished project management app. :-\ In the words of the great Homer J. Simpson — D’OH!
Where do I go from here?
So, where does this leave me? It leaves me at a point where if I’m ever going to finish one of my side projects (and potentially make $$$) I need to take them more seriously. One of my resolutions for the New Year was: “Bring at least two of my ‘back-burner’ ideas to fruition over the course of the year.” In order to this, I need to be more disciplined. This means adopting the same practices I use when dealing with clients.
- It means using unfuddle to manage my projects instead of some hacked-together, home grown system or 3-4 systems that can’t talk to each other.
- It means putting time on my schedule every day to work on my projects.
- It means setting milestones and sticking to them.
Yep…just like a job.
I’ve also decided to have a “code garage sale” as described by Scott Hanselman. I think I’ve got plenty of code that could be valuable for someone out there and this seems like the easiest / best way to share it. I’m planning to blog about this soon.
Look for more posts on this topic in the coming weeks and months.