In my first post, I covered the essentials of my development environment. It was mostly a laundry list of my essential tools and a bit of what my personal setup looks like. Of course, it takes more than a pile of tools to master your workflow. Mastery of your tools means understanding how to use it for different scenarios and finding efficient ways to accomplish your work. This ultimately leads to an increase in productivity, happiness and reduced frustrations for the developer. It goes without saying that I think this is important. In fact, I would go so far as saying that mastering your tools is as important as your mastering your other skills.
When it comes down to it, it essentially means knowing a few key tools really well. I think many of the tools can vastly improve your workflow even if you only know the basics. For a full stack developer, I would say you want mastery over one tool at each level of your workflow. This would likely include your terminal, IDE/editor, and browser. For me, that includes the terminal & TMUX, VIM and my browser. For the terminal, you should know your basic Linux and be competent in a popular version control tool like Git. For your editor, you should know your most commonly needed shortcuts and be on the lookout for new ones as you need it.
As mentioned in part one, I think it’s important to continually improve your workflow as you grow as a developer. You spend thousands of hours working in your dev environment. Spending extra time outside of your day-to-day work to improve it will pay back in dividends down the road. When you see yourself repeating tasks that seem more difficult than they should be, that’s the time to look up a new shortcut within your tool set or find a tool that compliments your work. I would recommend reflecting on your pain paints once every month and make incremental changes over time.
Besides knowing your tools, you should have scripts at your disposal for your most common tasks. I work with a VIM and TMUX workflow so I have three scripts for firing up my work when I need to boot up a fresh session. This might happen after a restart or when I’m changing from one project to another. For example, I have two terminals and one starts up my servers and services and one fires up my development environment. In my development environment, I have 4 windows for my rails work: rails console, tests (runs guard by default), work (opens in VIM), and a spare bash (because sometimes I don’t want to be in the background of my work window).
While I don’t have a complicated setup, I prefer this configuration over tabs because I’m quite the butter fingers and sometimes I will close out a whole terminal window. The nice benefit of persistent sessions has always proved useful in this case. I also use some plugins to allow me to send (one or more) tests to specific windows (in my case, the test window).
Another must have for developers should be version controlling all your configurations (dotfiles). Like many people, I have a repo for my dotfiles on Github so I can pull them onto another computer if ever needed. If there is anything that is useful for your setup that you can version control, you should do it. It’s a great way to back up config files.
This is a nice segue into Git. I mentioned in 5 things coding taught me that I freaken love Git. It’s true. It’s my favourite tool. It’s indispensable for tracking your projects and highly useful for any text files you want to track and access to on other computers. Mastering the basics of collaborative workflow in Git is a must and truly mastering Git will improve your workflow immensely.
There lots more that can be said about workflow and development environments, but everyone has their own way of doings things. If you’re still new to customizing your tool set, I suggest giving some of my suggestions a try.
Hope you enjoyed my little feature on dev environments. Feel free to leave a comment on any ideas or suggestions you have. Happy coding!
Don’t miss a post by following on the right hand side of the blog or via Twitter @chestertus