The programmer who went up a hill & got stuck on a mountain
By Steve Claridge on 2014-03-15.
I've got no end of projects sitting unfinished on my hard drive, most of them are 80-90% finished and one or two evening's work would see them out the door. So why don't I just complete them? I think there's a number of reasons why I give up just before the finish line.
I'm writing this in part as a response to Jonathan Mead's piece on getting started and in part to give myself a kick up the backside. Jonathan is right that starting something is hard, there's plenty of reasons not to start: you'll do it tomorrow, someone else is doing it better already, no-one will like it, people will ridicule your work, you are not sure how it's gonna pan out, etc, etc and so on.
But, hell, getting past that lot is the easy part. There's plenty of reasons why finishing is just as tough.
The classic destroyer of projects. As you are building the project you keep getting new ideas for features and start adding them in, you keep adding and building forever, many of the new features introduce new problems and roadblocks - it never gets finished. This one doesn't trip me up often as I always make sure I have a Minimum Viable Product defined and stick to that - any new features or ideas go into a to-do list for later.
Getting excited about a new idea is great, it's gonna change the world, people are going to love it and you are going to retire to your own paradise island on the back of its awesomeness. A month into the project and things often look a little less rosy. You've mentioned your idea to some friends and they thought it sucked or they pointed you at others that are doing almost the same thing, only theirs is better and/or shinier and it's already out there, you're bummed. You've hit some problems with making your idea, the service you were going to use doesn't quite work as expected, or you can't get the right materials, or it's going to cost more to launch than you realized.
Excitement for a project usually tails off a bit, just because it doesn't seem so cool now or because the problems are mounting. The Dip is a bad place to be, it's not fluffy bunnies and rainbows anymore, it's stopped being a fun side project and started to become a bit of a chore.
You've been working evenings and weekends to get this project out and the effort is starting to take its toll, you need a break. For me, it's all too easy for one day off to become two, which becomes I'll do it at the weekend , which becomes I'll finish it next week . It's better to stick to a sensible work schedule from the start rather than sweat it and then take breaks. I also find that the longer I leave a project unfinished the harder the remaining work seems in my mind, until I get to the point where I've forgotten exactly where the project was at and then it feels like a huge task to pick it up again. Breaks are dangerous!
The boring bits
Being a bit of a geek a like to find out how stuff works, I love solving technical problems and writing code that makes me think. If I start a project then there's usually a problem that I need to solve or I need to write some code to do something I haven't tried before. That's the easiest bit to do, I'm interested, I want to know how it's going to work - but once the hard or interesting bits are done I'm left with the bread and butter, the register and login pages, the marketing blurb, finding a design and logo. I'm left with the not-so-exciting stuff and that's where I normally take a break.
Overcoming the fear of getting started, the fear of making something and showing it to the world is a big hurdle - but there's still plenty more hurdles before you finish and ship.