I am an above average programmer (I take interest in the development of languages, frameworks and technology in general and have a good grasp of systems), but I constantly find my self not being able to deliver things (on time). This does not affect my day to day work as it has good control process (bite sized tasks with shame driven development) But it definitely hurts me in my personal projects.

Some of the reasons that I think are at play. -I make things more complicated than they need to be. Often a lot more than I admit to my self. -I am not very good at making the tasks smaller at times. -I wander off into obscure corners when I encounter them instead of keeping a laser focus.

The result is often that I don't deliver. Now I may know at the back of my head that what I need to do, but I would appreciate your strategy on how to be the guy who "delivers".

  • Oh well, in personal projects it's kinda normal. (unless you're betting too much on them) If those where client projects, that would be sign of deep trouble instead.
    – ZJR
    Commented Mar 17, 2012 at 0:44
  • Do you have any commitments in your personal projects or are they just hobby projects for fun?
    – user1249
    Commented Mar 17, 2012 at 3:35
  • Write the core of the project and then find others to finish it.
    – Job
    Commented Mar 17, 2012 at 17:15
  • commented#2 Well I would really like to finish them, but my job is not on the line. I guess the minimal self discipline I have is because I get paid for what I do (which is sad cause I thought that I had passion)
    – geoaxis
    Commented Mar 19, 2012 at 12:17

8 Answers 8


A couple of observations:

  1. Apply the processes that are working to your personal projects.
  2. Are you self-motivated, or externally-motivated? Become self-motivated. Self-motivation is required to advance to leadership positions.

According to Seth Godin, the way you ship on time and on budget is this: when you run out of time or you run out of money, you ship. That's it.

He also says that people tend to gold-plate things; they develop the itch to fix just one more bug, or add just one more feature. They do this, not because they really need that new feature or fix to ship, but because they are afraid of scrutiny; so long as the product doesn't ship, they can avoid criticism.

People gain a reputation as being valuable because they know how to get things done, not just because they have good ideas. They have the ability to finish. It's not about a strategy. It's about a mindset. Use that mindset to surround yourself with the tools you need (both mental and physical) to make yourself as productive as possible.

All that said, there is one technique that I do advocate, and that is short bursts of high-level productivity. Give yourself 20 or 30 minute periods where you decide you are going to be as productive as possible during that brief burst. Set a timer. When that timer ends, take a 5 minute break. Stretch, walk around. Empty your mind. Do not think about work during that time.

Lather, rinse, repeat.

  • +1 nice conference, indeed. I liked the: "you get a lot of free time out of it" part.
    – ZJR
    Commented Mar 17, 2012 at 5:00
  • 1
    I also liked the fact that Godin correctly credited that "when you run out of money or time you ship" to the 37 signals guys (Fried/Heinemeier, I suppose) and also referenced Pressfield's book "the War of Art".
    – ZJR
    Commented Mar 17, 2012 at 5:08

There is a big difference between being late of a fixed, well defined task and being late because the task changes. At work it is the client that asks for changes, and everyone understands that the schedule will change accordingly.

At home you are both the client and the programmer. When you are working on something and the idea pops into your head "Gee, if I change A or re-write B the project will be better" that is a change, not being late. In business a client would weight the alternatives and make a decision, at home you are doing the same.

Consider building a website at work and half way through the client calls up and asks "I know you are building part of it in Flash, but could we use HTML5 instead?" You would think and respond something like "Well yes but it will make the project take an extra 3 weeks and add x dollars to the cost."

At home the difference is that we generally have a duh! moment where we realize "Gee, this would be better if I were using HTML5". The part we skip is the stopping to think about the implications of the change in terms of schedule; in other words we generally don't pause to think about the change. Instead we generally just go ahead and do it because we "know" or "think" it to be the best way. We don't fire up Excel and do a financial calculation like a bean counter would do at work when deciding if a change should be made.

Personally I like this at home, not all development should be driven by bean counters ;-)

Don't beat yourself up, mearly understand what is going on.


Great advice here - In addition to that, try getting a partner who is interested in the same project as you want to do. Then you can motivate each other and getting things done. It is just like getting a gym partner - it helps a lot in the lean days.

This is exactly why open source projects work - many people who really want to do that thing, kind of push each other to keep up quality / consistent delivery.

  • 1
    other than the partner suggestion, I like the comparison to the gym
    – ZJR
    Commented Mar 17, 2012 at 3:54

Few points come to mind:

  • Set a specific achievable goal.

  • Make simplicity an objective to strive for.

  • Put a realistic project plan and try to stick to it.

  • Isolate research from delivery.

  • Analyze your performance (as you are doing here).

  • Put time upfront into design.

  • Am I reading it the wrong way around, or you're telling a perfectionist to put even more (and dedicated) time into design? Perfectionists should be kept away from design as much as obese should be kept away from food.
    – ZJR
    Commented Mar 17, 2012 at 1:01
  • Thanks for your comment. You are reading it right. The OP says "I wander off into obscure corners when I encounter them", if one designs something in one way, one would not have to wander off. Also, I did not know that geoaxis is a perfectionist :)
    – NoChance
    Commented Mar 17, 2012 at 1:08
  • dunno, really, inferred from "I make things more complicated than they need to be"
    – ZJR
    Commented Mar 17, 2012 at 1:19
  • I do think that little more pragmatic planning is required. Some times I do too much planning and some times I just dive right into it. They both have failed me in the past.
    – geoaxis
    Commented Mar 19, 2012 at 12:19
  • Pragmatic planning sounds like an interesting term. I can't see how planning can fail you. If you can't stick to the plan then either you have overlooked something or the plan is not realistic or you just don't care/want to stick to the plan.
    – NoChance
    Commented Mar 19, 2012 at 17:35

What works for me is writing about 5 to 10 bite-sized tasks on my whiteboard at the beginning of the day. Nothing too ambitious. My primary goal is crossing those tasks off before the end of the day. If nothing else, just get those tasks done.

Of course I'll get off on tangents and work on many other things, but if the day is drawing to a close, I'll drop those tangents and jump back on that list. My motivation is that I want the satisfaction of seeing that whole list crossed off and starting a whole new list the next day.

It's amazing how much more productive I am when I do this.


For personal projects this level of procrastination is fine. They are more to have fun and learn than produce end products. If you were talking about client projects this would be a very different matter.

If your worried about your productivity on personal projects I would set yourself achievable goals with rewards. You also have to accept thAt shipping is a feature.its better to have an imperfect product now than a perfect product in the fa future


I have the same problem and have found the following 2 things helped me tremendously:

  1. Do functional specs up front. Even though it's only you, you don't want to get into a cycle where you keep changing your mind about things.
  2. Use The Pomodoro Technique. This helps prevent yourself from avoiding the tough stuff with time wasters.

Don't let yourself start another project until you finish the one you are working on. I end up piling too many things I want to do, that I don't finish any of them. If you get bored, juggle 2 projects.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.