Ask HN: How to stay focused?
Hello,
I'm trying to work on my own startup for a while. I sometimes do some Ruby and Javascript contracting to burn trough my savings a little slower (ping me if you're looking for a part-time UI guy).
I've started to work on my current idea more than a month ago. But I'm going forward REALLY slowly. And, mostly, because I cant focus. I waste a lot of time on 'hacking here and there' or writing some small utility for myself.
Do you have any ideas how to stay focused on my main project? How do you get rid of hacking on side-projects too much?
29 comments
[ 2.3 ms ] story [ 74.4 ms ] thread"Release" frequently; if you don't have any customers, just pretend that you need to package something up. For instance, aim for a new build every day, and maintain release notes describing your changes. If you haven't been doing anything worthy of a new build each day, you quickly realize that you're losing focus and not moving the project forward.
Well the way I code is to jump around all over the place and make little updates here and there. The commit messages end up appearing on files that have absolutely nothing to do with the commit. It's a constant reminder of how to be more structured and orderly. And also to value your time better, since you want to package up and send the damned commit already, you just have to get it done.
Works for me!
It's not necessarily a great way to work at all times, but it's a handy facility to have. Personally I use it most in the early, somewhat experimental stages of a new feature or project, when I find it useful to mentally separate experimental hacking with organised committing.
For most things, though, I try to focus on one thing at a time, and here Git's quick-'n'-easy branching and merging helps out. Whenever I start something new, even if it's just fixing a minor bug, I'll create a new branch just for that work, often naming it after the ticket number in our issue tracking system. Then your being in that branch is a constant reminder of what you're supposed to be working on.
Ryan Tomayko has written a good article on these aspects of Git here: http://tomayko.com/writings/the-thing-about-git
Make it easier for yourself to accomplish things. If you can remove parts of your task list (punt for now or remove entirely) it can help -- a long todo list is demoralizing. I find that people generally try to build very large systems; this the enemy of productivity.
Choose a design that will allow you to arrive at as minimal a system as possible as quickly as possible, such that the system still retains conceptual integrity (that is to say, it is whole.) Then, afterwards, each time you sit down and do a bit of work, you'll have added a function or whatever instead of slogging along towards your first working system, which could be quite distant.
Finally, don't thrash when the working isn't happening. Instead, go goof off or go for a jog. This really helps. You can't work all the time, and if you've been pushing too hard your productivity gets diminished rapidly.
Very true. Boils down to better time management overall. You're just as productive and a lot happier if you make work time and fun time separate, and you can be very generous with the fun. What you want to cut is "I intend to work but do something else instead" time.
I am pretty sure I code at a snail's pace, and 60% of my time is spent working the problem out conceptually. Yes I think the process is very SLOW, but I have accepted that the cost is the cost.
In other words, don't be so sure these problems are caused by your inability to focus. Maybe the problems are just problems, and slow or not, you need to get them done.
Once you've culled some features like this, it's much easier to get excited and stay focused on that first release, as it will seem so much closer than before.
http://www.pomodorotechnique.com/
If you want to try it you should also check out my open source client, http://code.google.com/p/pomodairo/ =)
First of all, programming tasks defy time planning, as the next unplanned time-sinking bug or unforeseen difficulty always waits just around the corner.
Second, when you are in the zone, a timer going off every 25 minutes will just cause aggravation.
Also, I totally agree on your in-the-zone statement. I currently only use Pomodoro when I am having a slow day and I don't want to let the procrastination get the best of me. When I am in the zone I don't need Pomodoro to help me! =)
Once you clear up and the path is found everything will go smooth.
Pragmatically, put yourself one question: What will go into the first release?
You don't even need to be that labor-intensive - the Emergent Task Timer works great.
http://davidseah.com/blog/the-printable-ceo-iii-emergent-tas... [links to PDFs are at the bottom]
http://stufftodo.dedasys.com
Very different approach, my code is free/open source.
http://davidseah.com/tools/ett/alpha/
Save it to your desktop and what you do is this, write 4-5 tasks you want to complete, and make sure you can hear the beep every 15 mins.
What I do is work on something, if I hear the beep and I'm still working, I keep going. If I hear the beep and I'm not working on said task, I go in to ETT and write what I did over the past 15-30-45-60 minutes. Make sure to put an entry for "IM", "Email", "Telephone","Bathroom" and "Food".
What happened is that when I started using it, I realized I only did about 2-3 hours of productive work a day. It took me a few months to push that up to about 7-8 in an 8-10 hour work day, but you get there by keeping track of how much actual work you do in a day.
Slimtimer.com also works well to this effect. Basically, just take the time to count where every minute goes. You'll soon identify where your focus is going instead of your project and be able to fix it.
Closing IM was key for me. :)
As for part-time UI work, drop me a line -- I may have some stuff for you: paul.singh [at] philtro.com