

Ask HN: How do you maintain a high velocity in productivity? - marcoccchan

In particular I find things like compiling code or starting up an application takes takes seconds or minutes, enough time for you feel the urge to multi-task and as a result lose the flow you&#x27;re currently in and lose the velocity.<p>Obviously the answer is to speed up compilation or  startup, but if this isn&#x27;t an option how do you maintain focus and velocity?
======
gexla
There are lots of different tactics.

Get up and walk around so that you can get the blood flowing. Probably good
for thinking anyways.

I have a pretty solid workflow for reading articles, etc. That is, the sorts
of things that I get distracted on. The stronger my flow, the less I feel the
tug to aimlessly wander because it seems pointless when I already have a good
system. This system is setup on my Android phone, which is a great shield for
me because I have to actually pick up the thing to start the process of
distraction.

I usually keep a "stream" list. When I do something significant, I'll note it
in the list. If I get stuck, then I write what I feel should be my next step
in the list. If that doesn't work, then I go back and write another item in
the list. If I'm working on something complex, then I might write out several
steps that I have to follow in advance. The list kind of keeps me grounded by
just writing.

------
kyllo
In your case you may want to start focusing on unit test-driven development
and refactoring so that you don't have to rebuild your whole project just to
implement and test a new feature. Mocking/stubbing out the dependencies of the
code unit under test will help with this too.

Also, at a certain code base size you need to build abstractions and
aggressively contain complexity in order to stay productive. This is the
reason for Greenspun's Tenth Rule:
[http://en.m.wikipedia.org/wiki/Greenspun's_tenth_rule](http://en.m.wikipedia.org/wiki/Greenspun's_tenth_rule)

While humorous, it contains a kernel of truth. When complexity gets high you
need to keep the project organized at a higher level, which eventually means
using more sophisticated build tools, metaprogramming and/or macros to
implement a DSL, or even bringing in a full-blown scripting language to write
glue code that calls your core modules.

------
exelib
Why is speed up no option? \- Yeah, SSDs are great. It's save x00.000€ (where
x >= 1) in company I work for. \- But also bottleneck and waste profiling
while starting help us a lot. \- Decide also raid0, raid5 or another raid
levels to gain speed up. \- Depends on technology here things like hotswap,
jrebel, osgi or others. \- Another thing is used DB. Maybe a memory DB is an
option.

Without speedup there not so many options. \- As already mentioned, test
driven developing or like to reduce needness to start up \- As you said,
multitasking. It's doesn't work for me, if I try to do more work. But it's
work if I do some not directly related tasks like writing mails, contribute to
wiki pages, grooming, reading articles or HN.

------
drothlis
What you do when waiting for some computer operation to execute can determine
if you are a zen coder, or distraction junkie coder. The main idea here is to:
Not lose focus, and Take a micro break.

[...]

\-- [http://www.componentowl.com/blog/zen-coder-vs-distraction-
ju...](http://www.componentowl.com/blog/zen-coder-vs-distraction-junkie/)

------
lfx
I read physical (sometimes kindle) book, which lies next to my keyboard. Found
that not tech books suits best for this because "works" different part of the
brain. And it is easy to switch back to work project afterwards.

------
stakent
SSD + lots of RAM.

------
davelnewton
Just wait.

------
gjvc
SSD

