February 17th, 2014

Continuously Becoming More Productive

As a developer I’m always trying to improve myself, my code, and my process. I’m always trying new things and keeping an open mind to see if it has a place in my process or can help make my life easier.

Over the past year my development environment has changed drastically. I’ve moved from MacVim to using Vim in the terminal, I’ve introduced tmux into my workflow, I’ve been back and forth with color schemes, and I’ve added and removed numerous Vim plugins.

The Biggest Change, tmux

Using tmux with Vim is probably the biggest, and the best change I’ve made so far. Instead of switching between MacVim and Terminal I now have everything in a single place. I have one large Vim instance at the top of my first window. Below that I have two split panes, the left being a zsh session and the right pane being rails console. I then have a second pane where I have any tasks that require to remain running like delayed job workers, rails server, and anything else. Overall it’s made a tremendous difference in my workflow and reduced the impact context switching had on me.

Color Schemes

Color schemes are a very personal thing. When I moved from MacVim to the terminal I had a lot of issues with Tomorrow-Night and decided to switch to what was seemingly the best option, Solarized. It’s a great color scheme but it’s not really for me. The blue would irritate my eyes after longer sessions and didn’t make my environment feel like home. I then did a lot of research trying to get Vim, iTerm2, and Tomorrow-Night to play well together and almost gave up when I found base16. Base16 has a Tomorrow-Night color scheme that works perfectly in Vim, iTerm2, and many other editors and terminals.

Vim Changes

Everything I create starts with Vim so it has to be perfect. The best change I’ve made so far is to follow the split explorer model. I don’t use netrw like most people suggest, but keep NERDTree installed and use it like you would use netrw as a file explorer when needed. I also use ctrlp far more than I did when using NERDTree as a project drawer. I find that following this model keeps my mind on the project structure a lot more and keeps me focused. I also end up having a lot more room for split panes too.

Another big change is relative line numbers. Instead of numbering by line number it shows the number relative to where the cursor is. It’s really odd at first but it ends up helping a lot with numbering vim motions. Instead of going into visual line mode to select all 4 lines I want to delete I can just hit 3dj and it shows the number I need on the line I want it to end at. This is a lot faster and has ended up saving me a lot of time.


I’ve made a single change to how I use OS X. I hide the dock. I find myself checking email less, switching between apps less, and spending more times focused on things I need to do. This is probably the most simple change but has had a huge impact.


The main point of this article is that as developers we should always be trying to sharpen our skills and make our tools work for us. We’re never as good as we can be and we must always be pushing ourselves ourselves and each other out of our comfort zones so we can become better developers.