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.
Awesome post. I think you are spot on and that was a good suggestion by James.
Looking back, the projects that I have actually “finished” (or at least are living live somewhere) are the ones that either had a very short development cycle, basically pretty simple stuff, like RandomTweets.com and its brethren or something that I really took seriously, like WhatIWantMost.com.
Treating the WIWM site like a real project helped a ton, otherwise I’m sure it would still be only half completed sitting on my hard drive. I gave myself extra incentive to complete the WIWM by blogging about it while I was building it. I didn’t really set any timelines, but I did set a feature list and prioritized them.
The other big project that I had developed (and actually sold online at one point) was an ASP based time and billing system along with some other things that made it a nice little intranet application for service-type companies. When building that I assigned myself tasks and created timecards to bill against those tasks, etc.
So based on my experience, I think you’re right. My side projects that have been successful are the ones that I’ve treated like “real” projects.
Thanks Dan. I’ve already started down this path and have actually made quite a bit of progress on a project I’ve been putting off for months.
I’ll be blogging about it in the next couple of days.
thanks for share michael, always fun reading your stuff
wow, that’s really great!
seems like an interesting tips, thanks for sharing.
i am doing my ug degree iwant idea and description for system side project