- StayFocusd Chrome extension to prevent me from going into social networking sites while I'm working
- "...knowing that all the \"other stuff\" I have to do is done. Inbox clear, no meetings about to happen, etc."
- Knowing when I'm too tired to keep working efficiently
- Being away on IM/IRC except for work
- Keeping work conversations to IM/IRC as much as possible
- "...shutting out every around me. Headphones on, music loud." I prefer music without vocals, e.g., electro
- Using http://www.gunnars.com/ to minimize eye fatigue
- Knowing Emacs well to improve code editing speed
- Having unittests to validate my changes quickly
- Using screen or tmux to quickly switch between shells while maintaining a full screen for each...code, shell, unittests, Python shell, database shell
- Using Xmonad to quickly switch between Desktop workspaces while maintaining a full screen for each
- Avoiding the mouse as much as possible, even on the browser (Vimium extension)
- Using the ThinkPad nipple when I do have to use the mouse
- I don't use an external monitor at all. I find the constant neck motion to switch between them tiring and distracting. The combination of screen, Xmonad and Gnome notifications allows me the same application throughput with less distraction and without sacrificing screen space.
That's just off the top of my head. There's probably a lot more. Maybe I should write a blog post about it.
Additionally, I don't like doing tedious things, so I always try to make whatever I'm doing as less tedious as possible. For instance, I'm supposed to get some feature working. The underlying code is very complex. Getting the feature working wil be very painful and tedious. If I can refactor the underlying codebase first, implementing the feature will be less tedious and more enjoyable. The problem is that sometimes my team mates don't want me refactoring code, so I'm forced to trudge through the complex code and it takes me a lot longer to do it that way.
2) Think a little bit before writing on what you will write. Thus I have better program with less need to rewrite.
3) Using a 13inch laptop. The small screen estate forces me to concentrate on what I am doing right now. No place for other editor windows or browsers or anything else, just my code and my work.
What does NOT make you faster:
1) Having a special mechanical/ergonomic/whatever keyboard.
2) Having multiple large screens with tons of windows open. This is most of the time distraction and not helpful. Avoid it.
- knowing _exactly_ what I want to achieve, no exceptions (this doesn't include the how part but only the what part) - repeatedly playing the same music for hours, closing out every noise that makes me think about anything else but the task - not engaging in any other activities on the computer I'm working on before I start working because I find myself going back to those activities from time to time which is a huge distraction - last but not least a bottle of water or a cup of tea
For example: git commit -a -m "Finished writing tests for Car model. Now implementing car.drive, car.park, and car.accelerate."
Like:
[] [] []
[] [] []
If I have Spotify playing I end up always searching for the next song.
And well I mostly code in nights, so there arent much disturbances.