

Ask HN: How to stay focused? - mantas

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).<p>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.<p>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?
======
joshu
You have to organize the world so that you get a series of small successes.
And be prepared to take any success as a success.

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.

~~~
prakash
You have got this down to a science, haven't you.

~~~
joshu
I don't feel very productive. Most of what I wrote is about doing things.
Right now I'm at a company. Different skillset.

------
makecheck
Use a revision control system, force yourself to commit only changes to one
feature at a time. This restriction helps you to avoid wandering into other
things, as it would take extra work to manage the unrelated changes.

"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.

~~~
apsurd
very true. As a noob github user I find my commits to be very "ugly". Git
encourages you to write a short descriptive sentence of what you did. For
example "added validation checks to users class".

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!

~~~
chrismear
Actually, one of the benefits of Git over, say, Subversion, is that it's much
easier to hack away on multiple things, and then arrange a series of sensible,
self-contained commits from your messy working directory.

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>

------
edb
I had this very problem and what I did was use the Emergent Task Timer. Now, I
know this sounds like lifehacker fluff, but it really worked for me. I used
this:

<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. :)

------
raffi
Try tracking how you use your time. Go make a grid with hours between 7am and
1am for Sunday - Saturday. Print this. Then write down what you do. I do this
to hold myself accountable (I do not use it for planning). I find doing this
keeps me on track and lets the little successes build on each other.

~~~
discojesus
_Go make a grid with hours between 7am and 1am for Sunday - Saturday_

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...](http://davidseah.com/blog/the-printable-ceo-iii-emergent-task-timing/)
[links to PDFs are at the bottom]

~~~
fnthawar
Use RescueTime instead of tracking by hand: <http://bit.ly/itYfb>

~~~
davidw
Or stuff to do:

<http://stufftodo.dedasys.com>

Very different approach, my code is free/open source.

------
pwim
Find a partner. For me at least, having someone else to work with is quite
motivating.

------
sandGorgon
pomodoro technique ?

<http://www.pomodorotechnique.com/>

~~~
Feeble
+1 for this. The Pomodoro technique usually helps me when morale is low. You
can always commit to a 25 minute push.

If you want to try it you should also check out my open source client,
<http://code.google.com/p/pomodairo/> =)

~~~
gcv
I looked at the Pomdoro site, and I'm intrigued. I don't understand something,
though. How does it work with programming?

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.

~~~
Feeble
You can look at it as an agile process. You don't model your whole project at
once, but when you start a Pomodoro you commit to working focused for 25
minutes. When the time is up you can prioritize differently or make a push on
an unplanned item.

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! =)

------
apsurd
2 things: My natural style of coding is to work on multiple aspects of my
project rather than concentrate on one aspect. Maybe this does make me less
productive, but what usually happens is I get burnt out constantly thinking
about the same problem so much so that I start to avoid working to solve it!
Secondly when you say "slow", relative to what? When you are developing a
system from the ground up, working it out conceptually takes tons of time,
probably much more than actually coding at first.

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.

------
carpo
I felt the same when working on my startup, and something that helped me was
to re-think what was required for my first release. Often it seems that
everything you've spec'd out is required, but if you really think about it,
you should be able to leave some things for subsequent releases.

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.

------
paulsingh
I can sort of relate since I'm in the same boat with my startup. The key for
me was to set some goals for each week, tell my friends about them (to help
keep me honest) and then to simply get cracking. Beyond that, I'd suggest that
keeping focused can be as simple as calling yourself out for BS'ing. :)

As for part-time UI work, drop me a line -- I may have some stuff for you:
paul.singh [at] philtro.com

------
csbartus
Rethink your idea. Maybe you are not 100% sure what you want, and jumping
left-and-right instead of facing it.

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?

------
vivekamn
Go full time on your idea. Or at least make some commitment so that there is a
monthly burn(say a hosted server or a github account at the minimum). Nothing
like pressure to keep one focused. This is from my own experience.

------
fnthawar
Make it a game: <http://bit.ly/iGxMB>

------
eintnohick
One word: ADDERRALL

