Get primed
Before the work starts, I marinate the brain muscles.
Meditate. Clear the mind so it's open to possibilities and rid of negative loops.
Coffee; bulletproof, no sugar. Caffeine is self-explanatory. Caffeine-use sometimes extend across the day with green-tea or spiked-coffee, depending on my sleep quality the night before.
Configure environment for immersion
These are one-time workspace setup.
Music playlists with fast-beats, no lyrics, channeled through headphone. Hip-hop instrumentals, EDM and dubstep work for me. Be open to possibilities, I won't be caught alive listening to EDM or dubstep in any other environment. And anything with lyrics is a deal-breaker.
Minimize the use of mouse. I've minimized my computer to the point where there are only two major apps, Spacemacs (emacs) and Firefox. Even web-browser is a necessary evil where thumb-ing the cursor is necessary. Everything else is done with keyboard as much as possible. The point is minimize context-switching and make that a matter of finger gung-fu when I have to switch context.
Quiet workplace, minimize interruptions. This is a huge topic by itself, but having to take care of people is a flow-killer. Paul Graham has got more to say on this.
The principle is to be subtractive, not additive. Find things to cut out to protect your immersion.
Now get immersed
Coding is my thing. Each task is like a game-level, only the boss and level are designed by myself.
Each task/'level' runs through a cycle called red/green/refactor. (TDD-folks are familiar with this).
Red: design the level
Write unit-test first. Cover as large as its appropriate. Most of all make it fail.
... continue reading here