The title says it all, HN. I can't ship.
This isn't about shipping the first version of my nascent startup's web app, though. This is about completing anything in life, putting a big bow on it, and calling it done. I'm terrible about finishing things in all areas of my life, whether it's chores around the house, libraries I need to finish at work, or OSS bugs I've promised -- but failed -- to patch.
I hate it, too, because it is a particularly flaky behavior characteristic of people who are "big talkers" or commit to doing too much. I don't want to be unreliable, but I really just struggle to finish things up.
Has anyone solved this problem for themselves? Have you gone from someone who underproduces to one who knocks things out of the park? I'd love to hear your advice.
Projects: Accept that "shipped" is less of a binary "Is it perfect and ready to ship, if not it is still in development" decision and more of a totally arbitrary point of technical/marketing readiness at which you call something shipped. You'll continue improving it later, but that is no excuse for not getting it in front of customers (be they paying customers, your boss, or the other OSSers) today.
1) Don't "multi-task" ever. Make a plan and then do everything on the plan in serial and make sure you focus 100% effort at the task/project at hand. My immediate to-do list is only ever 2 items long. 2 items only because I am working on #1 and when I finish #1 I need to know that #2 is the next thing that needs to be done. When #2 becomes your focus you move it to #1 and add a new item.
I do this at the macro level i.e my startup has 2 big projects to be shipped, I'm not going to put any effort/thought into anything that comes after, only what I need to finish right now. I also do it on the micro level, each feature has X user stories, I only have have 2 of these on my daily to-do list at any time.
2) Use timers like Pomodoro technique - I don't subscribe to the whole philosophy, I just enjoy the fact that a physical 25min timer gets me over the 'procrastination hump' for getting started. Keep working in 25 min chunks till said task at hand from (1) is done.
3) For pesky ongoing stuff add some rules to your life e.g I must publish a blog post every Wednesday (and I'm not going home till I do)
4) Whenever you finish a large project that might've taken you a few weeks to complete, give yourself some time to decompress and admire the work you've done.
Basically it's this persons jobs to drive projects by saying to everyone else - 'Where the F is this? you said you'd have it done last week, don't do anything else until you've got this done. Oh you need help? let's jump in together and do it together now!'.
Only works in small teams and everybody considers their peers to be equal. I have an awesome cofounder who's a woman who nags me to do stuff sometimes. The more she nags the more gets done so I don't mind :)
So before you begin something, decide what "done" looks like and learn to stop when you are in the "done" state. Sometimes, "done" changes. Not a problem, just understand what it means to be done and do that, no more.
Basically you come up with a standard of behavior and check off every day if you act in accordance to that. Helped him discipline himself to create a comedy empire.
My slant to it is that I
1) constantly email rule adjustments if I want to have new rules (say I'm not allowed to drink until a Wednesday demo).
2) have a sponsor, well my wife, who I run ambiguities by, in case I want to have an exception to a rule. Example, if I commit to cleaning every day and I get sick, that day is okay to mark off. But forcing me to verbalize my exceptions means I'll only use them as needed.
3) I treat this calendar as holy, simply so I take deviations seriously. Reason for this is that it is a bitch starting it again if I fall off.
4) I have prescheduled cheat days and stuff like that.
In short, this system works great for me. I might be bad at explaining the complexities here, but feel free to contact me for more info. My best weapon.
I had a similar issue where I would start projects, implement a bunch of it, and seemingly never finish any of it. I got in touch with some friends who enjoy design and from there I started doing back-end things and leaving the design implementing to a friend. Not only did he push me to hit milestones but I did the same for him.
Also make sure you are picking projects that the end result is something that you yourself want to use. That way, you will have a little extra motivation when it comes to finishing.
Good luck!
1. Eliminate from my life things which need my attention. I've found that I can only focus on two things at a time: one work thing and one personal thing. That's it.
2. Relentlessly remove distractions and focus on the one or two tasks right in front of me that need to get done. Only when those are done do I come up for air and think about what I should be working on.
Basically I think of myself as a processor with a tiny pool of RAM. I can only work on one thing at a time (my one work or one personal thing). I can keep one other thing in RAM (the remainder of my one work and one personal things). Trying to add another thing means that I need to start hitting disk and performance gets exponentially worse.