How do I follow through and finish software projects?
December 10, 2004 6:24 PM   Subscribe

I can't ever seem to finish personal software projects. I'll usually get half of the code written, but then my attention moves to another idea and the software never gets completed. I don't have this problem when someone else is working on it with me. How can I motivate myself to follow through with these solo projects?
posted by cmonkey to Computers & Internet (17 answers total)
Work on smaller projects? Or pick a project that's likely to be interesting to people, then release an early working version and promote it. Publish everything you do, even if it's on a blog that only your two friends read.

I also suggest getting used to it. I consider myself a pretty successful software engineer, but I'd say for every 10 spare time projects I do only one gets finished to the point where it's useful and sees the light of day. There's some value in quitting a dead end early.

Publish everything you do.
posted by Nelson at 6:34 PM on December 10, 2004

If you don't start any, you won't feel pressured to finish any.
posted by kindall at 6:55 PM on December 10, 2004

If the project could be used by others consider making it an open source project on SourceForge. A lot of open source projects get their start with individuals but get completed as part of a community.
posted by tommasz at 6:58 PM on December 10, 2004

Dude, I have this exact same problem. I'm infamous about it among my friends. I'm a very decent programmer, but it's all for nil due to that. I attribute it in part to adult ADD, but that hasn't been put to the test since I haven't started or picked up on any projects since I've been put on Ritalin.
posted by abcde at 7:18 PM on December 10, 2004

Beats me - I've been doing that for a couple of decades now. Like Nelson says: maybe one out of ten projects actually get finished.

tommasz: you really have to finish it enough to make it useful before that sort of thing takes off - or you have to be the first guy to think of something obvious enough that other people can easily imagine how they might help out.
posted by Mars Saxman at 8:41 PM on December 10, 2004

I, too, have this problem.

There should be a code-swap website. People who are solid coders that get started on projects and then stop and put up their orphaned projects. Open source, but for tiny little projects that really only need one person, and not a whole management structure and CVS and the like. I could take any of my three partially-completed projects and turn 'em in, and grab a few other people's. I could finish them, or just work on them for a weekend and turn them back in.

OSS development for the attention-impaired.
posted by waldo at 9:38 PM on December 10, 2004

I use a tool that lets me create a to-do list with tasks I need to perform.... making sure to update that list as my mind wanders through the program. Every time I start a coding session, i first visit the to-do list as way to refresh my memory. It's helped me tremendously to maintain a focus on the project as a whole.
posted by pjern at 11:34 PM on December 10, 2004

i'm not sure it matters. hardly anyone uses the stuff i finish, anyway ;o)

one suggestion - make the finished project something you're looking forwards to and proud of. so, for example, make some of the web pages for the project while you're still developing it. that's a nice way to fill in time when you're tired of fixing bugs, and makes you have a something sitting their waiting for the finished code.

but on the other hand, i doubt it's half the code when you stop. unless you're doing the same kind of rigorous design/development process you do at work, you're probably uderestimating the task. at least, that's how i work at home - it's much more about exploratory coding / iterative hacking with complete rewrites as the ideas become clearer (i've just spent a couple of days rewriting the parser on my current project for the third time). so it might be that you're just finding out certain projects aren't going to work. nothing wrong with dropping those.
posted by andrew cooke at 3:33 AM on December 11, 2004

also, why are you working on the projects? if it's for fun or to explore a certain idea, do you need to finish them?
posted by andrew cooke at 3:40 AM on December 11, 2004

Yet another "me too"..

I nearly always complete the hard part - basic functionality will work, the difficult problems get solved. Then I get bored, because I there's no real challenge after that except perhaps some tedious troubleshooting and bugfixing.

I've learned that money is the only thing that will persuade me to finish a project completely!

But then again, I've occasionally had some luck with rushing to wrap everything up the moment I start to feel bored - make a quick UI, stick all the bits together, test a few times and then go to bed and never look at it again. But at least it's "done".
posted by cell at 4:22 AM on December 11, 2004

I think I do the same thing. I start lots of projects, usually around some concept I find intriguing, and never finish them. I always get to the point where I can look at and work with the interesting bits though. I just can't get all fired up to right a human interface of any sorts for the life of me. I'd like to get over this too though. I can point out a few times where somebody else fully fleshed out the same idea I had (arrived at independently, no skullduggery involved) and was rewarded for it.
posted by substrate at 6:04 AM on December 11, 2004

Thank god for this thread. I'm the same way cmonkey and it drives me crazy... I hate it. It's a real problem for me and isn't limited to just code. I'm the idea guy - GREAT ideas - but I get started and then overwhelm myself with even more ideas. I never can stick to what's reasonable and doable. I become frustrated and distracted, only to move on to something else, leaving my project in bits and pieces.
posted by Witty at 7:38 AM on December 11, 2004

also, why are you working on the projects? if it's for fun or to explore a certain idea, do you need to finish them?

This is a good point - I often find that I work on a project until I've "proved my point", then the motivation passes. Free-time projects aren't so much about writing software as they are about intellectual amusement. Of course, I always think I'm going to finish it and post it on my FTP site, but most of the time once I'm through the hard part, that turns out to be all I really wanted to do with it, and the rest is just details.
posted by Mars Saxman at 10:37 AM on December 11, 2004

The solution to this is to massively over-engineer the boring parts - make it so you have to learn a whole new technology to get each part working. That way you'll stay interested and have a batter-featured end product.
posted by cillit bang at 2:24 PM on December 11, 2004

I've had the same problem, and I've found that two things in combination make my motivation to work on a project increase quite a bit.

First, make sure it is something that you will use on a regular basis. (This is easier, if like me, most of what you are interested in working on is software to facilitate your day job, which for me, happens to be academically oriented research.) Second, design it in such a way that you can have short, achievable steps where at the end of each step, there is something that is usable in at least a rudimentary way.

This second point is very important. I know it goes against a lot of what software engineering classes teach (i.e. design everything before writing a line of code) and how a lot of real software projects work, but when the project is written by and for me, I have found that standard software engineering practices don't cut it. I get bored and spend my (somewhat limited) free time doing other things, where I can see more immediate results. What this second point means, I've found, comes down to two things: (a) Don't try to write a massive and fancy backend with no interface as the first step, and (b) design around a UI. If I'm trying to work on some large backend system, where I don't want to settle on a final UI yet, this means writing a temporary interface for the backend in tandem with the backend. For each component (and they should be small and achievable components) of the backend, write the interface in the UI right away. I find this also helps focus my thoughts on what the final interface should be like.

Another trick to help with this second point is to piggyback on some existing software, for which it is straightforward to jump in and start adding components. Much existing open source software doesn't meet this requirement, but some does (e.g. in my case, the moinmoin wiki, written in python).
posted by advil at 2:32 PM on December 11, 2004

I've had this problem in many projects I've worked on, not just programming. It seems to be a behavior that is larger than just a specific activity for most of us that have had similar experiences.

You mentioned something interesting though, which is that you don't do this when others are working with you on a project. It would seem then, that you ought to find a friend to get involved with on your personal projects, most likely reciprocating for theirs. While you will have less total time in this scenario for your personal work, your final output will be much greater in that you'll actually have finished work.

It's the same theory behind making it to the gym, cleaning the house, whatever. Most of us tend to be more likely to not only begin working, but work thoroughly and complete our tasks when we have companionship in our work.
posted by spaghetti at 6:37 PM on December 11, 2004

In my experience, there are two basic kinds of software developers: "Starters" and "Finishers". Starters have tons of great ideas that will never see the light of day because they lose interest once things are rolling. Finishers can have good ideas too, but what they really can't stand is to see a decent project languish on the shelf.

Starters (like me) need to pair with Finishers as much as possible. Unfortunately, Finishers are much more rare than Starters (at least in the circles in which I move.)

So: value the Finisher!
posted by Ironwolf at 3:37 AM on December 12, 2004

« Older New Yorker Calendar   |   Keystrokes for ffi, ffl, ff ligatures in OSX? Newer »
This thread is closed to new comments.