I am a developer of several softwares including dm-writeboost which now I am proposing to the upstream kernel. This article introduces you what tools I am using for development.
The picture shown below is a snapshot of where I am writing code. It's actually Vim I am using for editing. Vim is a nice editor which enables fastest editing like a Ninja if you are used to. As a graduated university student, I chose to get along with this editor as long as I am a programmer at the consequence of having made a close examination of both Vim and Emacs.
I am using a lot of Vim plugins. The most essential ones are neocomplcache and vimfiler both developed by Japanese Vim-enthusiast Shougo. The former supports code completion which is language independent: If you are writing Python or Scala neocomplcache does help you code fluently. The latter supports definitely what you see on the left side of the snapshot which enables one to go back and forth the source files and hierarchies.
Tmux is also a tool that I couldn't code without. Usually, I boot 4 operation systems while I am developing kernel: MacOS on client machine, Three Linux for coding, debugging and other investigation etc. I log in to a Linux machine from the Mac and launch 3 or 4 tmux windows each connects to the other machines. It is ridiculous to launch multiple Terminal such as iTerm or Putty and switch between them by alt+tab command. It does disturb your focus on the code you have to be facing.
If you want to become a nice programmer like me choose these tool as your working environment could be a good choice.
My dotfiles are available here https://github.com/akiradeveloper/dotfiles Feel free to fork it.