As I’ve spent more time pair programming at work, I’ve noticed that my teammates all have different workflows for keeping track of things they have to get done and for completing those items. As a team, we use a couple of tools to keep track of user stories and bugs. I thought I’d share some of the tools I use to manage and complete this work. I hope you find something new and useful here for your workflow. If there are any tools you love to use, please share them in the comments.
Spending a few minutes or a few hours improving your workflow can make a dramatic difference in your productivity and happiness as a developer. Practicing TDD and refactoring are simpler with good tools and a good process. Keeping track of administrative things that need to get done—accounts that need provisioning, bugs that need squashing, etc.—are easier with a system to keep track of them.
Alfred is a macOS application that is essentially
a much better version of Spotlight. It allows me to quickly search my computer
and the web. It also supports launching a variety of workflows for tasks that I
do a lot. For example, one workflow I launch by typing
gmn (i.e., ‘Gmail
new’) will open a new compose window in Gmail. Other workflows I have
include typing in a ticket number to see more information about a bug and using
a shortcut to see any open code reviews I can take on. Each of these workflows
saves me perhaps a few seconds each time, but those seconds add up to minutes
Since I started using Vim last year, I’ve become a lot more efficient working with text and navigating around a project. I find myself amazed at how much power there is in Vim and how much more there is to learn. One of the best ways to become a more efficient and effective developer is to learn your text editor really well. It doesn’t have to be Vim, of course, but you should be able to easily navigate files, change existing code, and perform repetitive actions speedily. If you are relying on your mouse, typing out every word (rather than using tab completion), and can’t quickly run your tests in a few keystrokes, you might want to try to gradually incorporate these practices.
In addition to the time I’ve saved by becoming more proficient in Vim, I’ve noticed that some development work becomes much less daunting with the knowledge that I can make many changes quickly. Because I can work more efficiently, the break-even point for refactoring and improving our code is much lower.
When reviewing or writing code, I refer back to documentation all the time.
Dash is a macOS app that makes looking up
documentation extremely simple. I’ve downloaded documentation for the languages
and frameworks I use most commonly. When I need to look something up, I can use
a Vim keybinding or an Alfred workflow to open the page for that topic. For
example, if I’m having trouble remembering how Ruby’s
Net::HTTP client works,
I can type
ruby http and see the official documentation.
Postman is a useful app that makes trying out APIs and sharing requests and responses easy. Sometimes I’ll use cURL, but Postman is usually a bit simpler for me to configure and read JSON responses. I love the ability to save requests in collections so that I don’t have to re-enter all of the headers for a request I need to make again.
For people like me who like the Getting Things Done system, a tool like OmniFocus can make the process much simpler. I use OmniFocus to track a number of projects for the different roles and responsibilities I have, both personal and professional. I’ll have to do a more in-depth post soon about how I use it.
At work, I find it especially useful as someone who works on or manages a handful of different projects. I have at least one OmniFocus project for each of the products I work on. I’ll use more than one OmniFocus project for larger projects that might benefit from finer-grained breakdowns.
When I pick up a new user story or bug, I will add it to a corresponding project in OmniFocus. I will then add sub-tasks for each of the parts of the story. I’ve found a “Waiting For” context to be especially helpful so that I have a single list to look at for items I’m waiting on from other people (email responses, revised UX designs, etc.). Having a project for administrative tasks is also useful. Typically, I will work through these when I have small blocks of time between meetings or when my energy is flagging.
I usually check my email in batches—once in the morning, once in the mid-afternoon, and once before wrapping up for the day—so as not to be distracted from deeper, more productive work. Of course, it’s not always easy to work without interruption. We use Slack extensively at work, and I am always happy to help my coworkers when they have questions. As I become more senior and have had more leadership responsibilities, I have worked on balancing time for deep work and time for making my team more effective. This is a fun challenge to have.
In addition to the tools I use as a developer, the following tools have been great for me in other parts of my life.
I’ve been using Evernote as a place to keep reference material for years. It’s a good place for storing lists of things I need to pack for trips, whom I’ve voted for in the past (especially good for remembering local offices), and movies to watch.
Overcast is the best podcast client I’ve used on iOS. The Smart Speed feature is great, and I like how easy it is to customize playlists and designate some podcasts as priority episodes.
In addition to Overcast, Audible is a great app for listening to things while I do chores or drive. The catalog of books they offer is pretty extensive, and the prices per book aren’t bad if you get a subscription.
Inoreader and Instapaper
Although I don’t read RSS feeds as consistently as I used to, I like Inoreader a lot. The web and iOS interfaces are easy to use and an IFTTT recipe makes it easy to star items and send them to Instapaper.
Instapaper is a tool that collects articles and videos I save to be read or watched later. The reading interface on the web and on iOS is very nice, and I’ve found myself reading more since I started using the service.
YNAB, or YNAB for short, has completely changed the way I budget and think about money. There are a few simple rules to follow that make budgeting simpler and far less stressful. While tools like Mint are retrospective, YNAB is focused on planning for the future and smoothing saving and consumption so that big expenses don’t rock the boat too much.
I hope you found something useful here, and if you have any questions or suggestions, I’d love to hear them!