# Managing the Productivity Context

Productivity is doing less stuff to get more stuff done. Managing its context is the key to becoming more productive. Here is a framework to establish and manage your productivity context to maximize your productivity when using your computer, based on what I have been doing to manage my own on my Mac. Hang in there, this is a long one.

Definitions:

• pro·duc·tiv·i·ty [proh-duhk-tiv-i-tee] noun: the quality, state, or fact of being able to generate, create, enhance, or bring forth goods and services

• con·text [kon-tekst] noun: The circumstances that form the setting for an event, statement, or idea, and in terms of which it can be fully understood and assessed.

We all use our computers a lot to bring forth goods and services. In my case, I mostly program on it, write on it, process email on it, manage tasks on it and perform research on it. Which means that I generally am operating in one of five contexts: programming, writing, emailing, planning or researching. But these are not the only contexts, others include web-browsing, news-reading, tweeting, conversing, providing support, and playing games. What are yours?

Establishing and maintaining these contexts maximizes our ability to think, operate and be more productive. Anything that can reduce the friction to to bring forth goods and services is a good thing, and should be invested in.

## Establishing the Productive Context

This section outlines the steps needed to establish productive contexts. Apply these steps to each productive context you can identify.

### Step 1: Choose the right tools

The first step in establishing a productive context is to choose the right tools for that context. This means everything. From the computer, its screen, peripherals and operating system to the products you will use to create your output. You can and do have a choice in all of this, even if you use employer supplied equipment.

Your computer must be quick and responsive. If you find yourself waiting on keystrokes or mouse clicks, it’s too slow. The biggest killer of productivity is waiting for your tools to perform basic functions. If you are waiting, you’re not producing. If you do find yourself waiting, upgrade the RAM, get an SSD or replace the computer. This also applies to the keyboard, mouse, trackpad and screen. A lot of people find themselves becoming faster typists by purchasing large clicky keyboards like the DasKeyboard, some swear by ergonomic keyboards from Microsoft, whereas I prefer the light chicklet style from Apple. I love a gesture trackpad on a laptop, some prefer the TrackPoint, others prefer mice with multiple buttons that can be customized. Some like compact laptop screens, others prefer multiple large monitors where they can see more at a time. Find the computer and peripheral set that works for you and enables you to work more efficiently.

You must be able to get things done in your operating system and it, in turn, needs to stay out of your way while you are being productive. If you have to reboot, or re-open applications to make them stable, or deal with operating system interruptions or delays, change your operating system. Either upgrade or switch. One of the main reasons I moved back to the Macintosh over 10 years ago was because it just works and stays out of my way while working. I left the Windows world behind because I found myself spending way too much time “fixing” the operating system instead of working on it. I’m not the only one. The programmer next to me switched to Linux because that maximized their productivity, and the one next to him stayed on Windows XP, because that worked for him. Find the operating system that works for you, not just the one that you are given.

Then use the right tool for the right job. Programming in C#? Visual Studio is great. Programming in Objective-C? Xcode rocks. Programming in Ruby on Rails? I like TextMate and Sublime Text 2. Writing? Scrivener for long form, Byword for short-form in Markdown. If you don’t like my choices, fine, choose your own. You could program C# in MonoDevelop or use command-line tools and a text editor. If you are more productive that way, go for it. You could program Objective-C in JetBrains AppCode if that works better for you. You could use an IDE for Ruby on Rails like RubyMine. You could even be mad enough to use Microsoft Word for writing. The point is, you always have choices in tools, find the tools that work best in each context for you. Once again, do not just accept the tools given to you.

What makes a tool the right tool are three factors: the features offered, its responsiveness and how comfortable you are using it. Obviously trying to code C# in Xcode is not going to work as the tool does not support it, but if you can produce more good code using your favorite programmer’s editor and a continuous integration system, go for it. If your computer and operating system are fast, but your tool is slow and unresponsive, it’s not the right tool. For example, I find Microsoft Word too slow when writing, so I use Byword to write and Microsoft Word to format after. And finally, if you don’t like the tool, if you are not comfortable with it’s look, menus, options, shortcuts and the way it works, find a better one. If you cannot get comfortable with a tool, you’ll never be productive with it.

Once you have the right computer, right operating system and right tools, you’re on your way to establishing the productive context. But don’t stop there. Keep seeking and trying out better tools to improve your productivity, and push your tool-makers to improve their products. If you write, for example, try out new distraction free writing tools like iA Writer, WriteRoom or Byword , try out Scrivener or Ulysses for complex documents, try out BBEdit and Markdown for plain text writing. You may find that by changing to a different tool, you become even more productive.

If you do find a better tool, but a key feature is missing or does not work the way you prefer, don’t be afraid to contact the developer via email and let them know. Even the big companies monitor their suggestion lines to find ideas on how to improve their products. You’ll get a faster response from a small indie developer, but even the big guys get around to it. And look for plugins and enhancements that can improve how you can use a tool, the missing feature may just be there after all.

Of course, the issue of cost does come up. We’re not all made of money and maybe we think we cannot afford the best tools, so a cheaper, slower, less productive alternative is acceptable. I disagree. Strongly! One needs to be productive to make money. If you, like me, charge by time, then time is money. And we compete on time. The person with the best tools can get the job done better, quicker and for less money than one that uses lesser tools, assuming similar skill set and experience. Which means that they will get more work, a better reputation and grow their business. If you need a tool to make money, there is no reason not to spend money on getting the best. The return you get in productivity will easily and absolutely pay the extra investment off and make you look more professional. Imagine a graphic designer that does not have Adobe Photoshop, would you use them? For tools that you do not need for productivity and to make money, it is acceptable to go cheap. For example, I buy the best laptop every few years because the best laptop helps me be more productive and make money, but I buy cheap kettles and pans because I am not a gourmet chef.

### Step 2: Master your Tools

The second step is to learn each and every tool you use, all of its features, options and shortcuts. And become its master. Most vendors spend massive amounts of time adding productivity enhancements to their products, most of which come from feedback. But most users never seem to find out about them or use them, making them significantly less productive.

The biggest productivity boost when using a tool is to learn, know and master that tool’s keyboard shortcuts. Every time you move your hand away from the keyboard to move the mouse, prod the trackpad or touch the screen, you stop producing. Start simply and learn the common operating system standard shortcuts, like ⌘S for Save, ⌘O for Open and ⌘Q/⌘X for Quit (⌘ - Command key on OS X, Control key on Windows). Instead of leaving the keyboard, grabbing the mouse, moving to the File menu, clicking, moving down, clicking on Save, and then returning to the keyboard, just hit ⌘S and keep going. Practice them and they’ll become second nature in no time.

Once you have those mastered, add more. Use ⇥ (Tab) to move forwards and and ⇧⇥ (Shift-Tab) to move back between fields on a form, instead of using the mouse to go to the next field you want to type in. Most users have no idea that’s what the tab key does in electronic forms. Master that, then add more. Learn text selection next. Instead of using the mouse to click and drag to select text, use the ↑↓←→ (arrow keys) to move to the start (or end of the text) and ⇧↑,⇧↓,⇧←,⇧→ (shifted arrow keys) to make the selection. Then practice using ⌘C for copy, ⌘V for paste and ⌘X for cut to move selections around documents. Initially, it will be hard, but soon you’ll find yourself doing these things naturally. Then learn more.

Mastering the keyboard is just the start. That gives you shortcuts. The next step is to master the product’s feature set. The best way to discover features is to go through the application’s menus. There are so many features in applications that are either application unique or have no shortcuts that remain hidden in menu trees. Developer tools have refactoring tools, features to jump around the code base and ways to jump to the documentation for functions. Programmer’s editors have code completion, fast file opening functions and multiple cursor editing. Writing tools have features to manage capitalization, lists and formatting that are just keystrokes. If you find yourself doing the same small tasks in your tool to get something done, chances are others have too, and the developer has added a feature to do this for you in far fewer steps. Find these features and use them.

Almost all products also have preferences or options that can be changed by the user. It is in your interest to get to know these and to set them to both maximize your comfort but also maximize your productivity. Use these to choose a better font or color scheme that suits your eyes. Choose defaults for saving files that work for you. Customize the keyboard shortcuts to suit. Disable features that annoy, like popup windows in your browser, or enable features that improve your global productivity, like using a global shortcut to launch the OmniFocus quick entry box. Tune the preferences of each application so that you rarely have to change anything, just launch and go. For example, I set the default document type on BBEdit to Markdown, because most of the time when I create a new blank BBEdit document, I want to write in Markdown. Before I did this, I would always have to change the document type from the menu before writing. In most cases, the default preferences are either set arbitrarily or to suit the developer, make them suit you.

But there is more. If the product has a rules engine, set it up and use it. Most email clients do, so use it to automate mail management. If the product supports snippets, create your most common ones and use snippet completion instead of retyping each piece. If the product can auto-save or auto-format, make it so.

Spending the time to find the best and master your tools pays off in spades when you enter the productivity context. And spending the time to find and master better tools pays off even more.

### Step 3: Remove distractions

Right, we have a fast computer, the right operating system, the right tools loaded and mastered, and we’re ready to go. But your email is pinging, the phone is ringing and people are wondering up to you to chat. You need to work, to produce, to enter the productivity zone (see my The four hour rule), but all these interruptions keep you from it.

In order to establish a productive context, you need to eliminate any and all distractions.

Lets start on the computer. Close down all applications that are not needed in the current productive context, including email clients, Twitter, instant messaging, and RSS feed readers. If you just have to have them running, shift them off onto another virtual desktop or hide them from view. I have reached the point where email, RSS and Twitter are always on separate virtual desktops, and my current context is on the first virtual desktop. For Macintosh users, this means setting up Mission Control and defaulting applications to launch on other desktops. Some Linux desktops also have this feature.

For applications that still need to be running, but are not part of the current productivity context, put these on separate desktops too. In my case, I am always running OmniFocus to manage my tasks, and it’s always running on another desktop. Out of sight, out of mind, yet one keystroke away to add a new task or look-see what I need to do next in the current productivity context.

Next, remove the environmental distractions around you. Mute all your devices, including your phone. Even better, put them away. Turn the TV off; even when muted, the changing screen can be a distraction. Almost every programmer I know puts on headphones when they enter a productivity context and listens to either music, ambient soundtracks or, in some cases, nothing. Headphones remove the buzz and thump of the area around you, reducing distractions further.

If you have one, close the door. This usually prevents people from barging in and distracting you. Unfortunately, most of us do not have doors in our workspaces, but there are other tricks you can use to signal that you should not be disturbed. Place a model TARDIS or fluffy toy in view when you don’t want to be disturbed, or get an “on-air” light or bat-signal and turn that on. And when people do disturb you when the bat signal is up, explain to them what the signal is, its purpose, and what they should do instead. It sometimes takes several tries before others get the do-not-disturb signal, but eventually they learn to respect it.

### Step 4: Lay it out Spatially

The final step to establish your productivity context is to lay everything out spatially, both in your workspace and on your screen. If everything is in its place, you should be able to reach it without taking your eyes off the work you are doing, and build muscle memory to hit the targets you need.

Once again, you lose focus and productivity every time you have to look away from your work, or if your mouse snags, or if you have to search your workspace for a needed item. It goes without saying that you should also remove any and all obstacles on your desk, and of course, have nothing on your workspace within reach that you do not need for the current productivity context.

On your computer, if you are using a single application for this productivity context, go full-screen. That’s right, me, Mr. Never-Use-Fullscreen is recommending it. Not only does this hide all other distracting applications and a messy desktop, but also places the menu and toolbars at the same spot on screen every time. If things are in the same spot on the screen, they are easy to find when glancing around and when moving the mouse to hit them. Do it enough times, and you will build muscle memory that plonks the mouse in the right place every time.

If you use an application that has lots of palettes, such as Adobe Photoshop, expand the palettes you need the most often, hide ones you never use and place them on either side of your document. Then save the layout. Once again, these become spatial targets that you will get very used to.

If you need multiple applications open for a productivity context, which I find to be the most common case, don’t go full-screen and switch-replace (Alt-Tab) them. I see too many people lose focus when trying to drag and drop on to full-screen applications (which is why I never recommend full-screen email client usage). Instead:

• lay out (resize and position) each application window such that the key information you need to see is visible, even when other applications are in the forefront,
• overlap windows where necessary, they do not have to butt up to each other,
• trim the chrome on each application to remove unnecessary toolbars, sidebars and status bars to maximize the content view,
• and save all the windows’ positions and sizes so that you can re-enter this context with everything as you left it

On Windows, try the corner snapping feature, on a Mac look to saving layouts with Moom.

For example, I need Byword, a terminal window and a web browser open when writing a blog post. I use Moom to ensure that the terminal window is sized and positioned at the bottom right, the browser is top-right, and Byword takes up the whole left hand side of the screen. Moom does this with a single keystroke, very productive. I can then look at my research while writing and preview the site while editing, and everything is is the same place every time. In fact, when programming Ruby, I use the exact same terminal spatial position and size, so the same eye and muscle memory applies there too.

But you can take this to the next level, and I did in Application Context Packs. In short, I used Keyboard Maestro to create single-keystroke activated macros to launch all the applications I need for each context and place them in the correct spatial locations. Another Keyboard Maestro macro keystroke and all the applications I don’t need in context are gone. For me, establishing a productivity context involves two keystrokes, one to kill unnecessary applications and one to launch all the applications spatially for the selected context. Now that is productive.

## Maintaining the Productive Context

This section describes what you can do to maintain and improve the productive context once you are in it and working. Some of this really applies to stepping back while you are working to find better ways to work.

### Step the Process

When bringing forth goods and services, or creating your product, you may find yourself doing several tasks at once (or in parallel). For example, when creating a spreadsheet, you may find yourself adding data, creating formulae and formatting the document all at the same time. Or when writing, you may find yourself structuring the document, writing and formatting at the same time. When programming, you may find yourself coding, compiling and manually testing simultaneously. This is not productive.

Instead, step the process (or serialize it). Input all the data, then do all the formulae and finally format the spreadsheet. Structure the document, then write the content, then format at the end. Code the test, write the code, auto execute the test in a window on the side using something like Guard.

It is far easier to focus on a single task or step at a time than to try to juggle multiple tasks in your mind and keep track of everything. You get more done when focussed than when multitasking. It’s also easier to get back into the productive zone after interruption or break if you are uni-tasking. And it’s less likely you will miss a step in a process if there is only one step going on at a time.

### Focus on the Content

When bringing forth goods and services, remember that that content is the most important component at each step in the process. If you can focus on the content, and ignore all other aspects of the process or product, you’ll make a better product in the end.

For example, when writing, I recommend using Markdown in a distraction-free writing tool. Why? Because you are forced to focus on the content, which, in this case are the sentences you are creating. If all you can see on the screen are the words you are currently writing and nothing else, you’re more likely to pay better attention to that. And when the writing is done, then load it into Pages or Microsoft Word and format it nicely. Now the “content” is the formatting of the document. For me, these tools are great for layout once the content is complete, and my focus is on making a pretty document.

Same thing when coding, show only the code windows that you are currently working on, and close the rest. Xcode’s assistant editor in this case is great. Or use the “show counterparts” function available in all programming environments. I also like the split panes in Sublime Text 2 for bringing up a Model class while coding up the Controller class in Ruby on Rails. All programming tools have fast file opening shortcuts, so don’t be afraid to close unnecessary tabs and windows when you no longer need them, they are easy to get back to.

### Update or Replace the Tools

In most cases, the latest and greatest version of a tool is usually the best. Point releases (bug fixes and minor updates) should always be installed, as they usually are quicker, less crashy and often contain productivity improvements. Major releases are more tricky, but generally recommended too, unless they deprecate something you need. For example, if you are maintaining an application that needs to run on iOS 3 devices, don’t install the new Xcode as it deprecates that support. More common tools such as text editors, office applications and productivity tool major releases are usually worth it, especially when they change file formats. When it comes to operating system major upgrades, though, I usually recommend waiting until you have all your projects completed and delivered before upgrading. Then do it.

On the other hand, if a tool you use does not get updated, replace it. The software market is full of abandonware, dead products and aqui-hire deals where bigger companies buy the staff of other companies and stop supporting the old products. If any of these things happen to products you need to be productive, replace them now, before they fail you. The worst circumstance you can be in is when you upgrade your operating system and your best tools stop working.

### Automate the Process

Once in the productive context, you may find yourself repeating the same tasks over and over again. When this happens, it’s best to take the time to create scripts (or macros) to do these tasks for you.

All computer operating systems support some form of scripting, whether it be DOS batch files, shell scripts or scripting languages like Python. And all of these contain libraries or tools to help you automate your work. If you can program, you can really start to fly by scripting inside your tools as well as your environment. One thing that makes modern text editors so powerful is that you can map keystrokes to your own scripts that have full access to the context inside the editor. In fact, products like BBEdit, TextMate and Sublime Text 2 are all designed to enable their users extend them via scripts. Outside tools, create shell scripts to handle common sequences of tasks, launch them from the command line or even using keyboard shortcuts via Keyboard Maestro or FastScripts.

If you cannot program, you can still automate processes. Tools like Automator and Keyboard Maestro or even Excel Macros can help. For example, I often need to copy a link and title from my web browser and paste it into a Markdown document as a link. I used to ⌘⇥ (Command-Tab) to the browser, ⌘L to get to the address bar, ⌘A to select the link, ⌘C to copy it, ⌘⇥ back to my writing tool, ⌘V to paste it, then type in the title manually. That’s 6 keystrokes plus the length of the title title plus brackets, too many keystrokes. Now, I have a Keyboard Maestro macro to do most of the work, it takes the currently active tab on Safari, and grabs the URL and the page title and creates a Markdown formatted link on the clipboard. So now the process is ⌘⇥ to Safari, ⌘⇧9 to execute the macro, ⌘⇥ back, ⌘V to paste (4 keystrokes) and I can continue writing. I could turn this into a single keystroke, but I prefer checking that I am grabbing the right tab in Safari first. The point is, though, that I did not need or use any programming skills to make that macro.

And look to your tools as well. They often have their own automation features. For example, I often need to open the same set of tabs in Safari. So I created a bookmarks folder with all the tabs I needed in it and to launch them all at once, I just have the use the “Open in Tabs” link at the bottom of that folder. One mouse click to get all the tabs I want open, one click! And the best part, Safari has a feature to save the currently open tabs as a bookmarks folder for you, so it’s even easier to set up.

### Use Text Expansion

In another common productive context situation, you may find yourself repeatedly typing the same things over and over again. When this happens, it’s best to use a snippet or text expansion tool to handle the repeated typing. Fewer keystrokes, more productive.

I recommend you invest in a keyword expansion product like TextExpander, it pays off. The way these work is that you type in a mnemonic, a short and unique code, the product automatically recognizes it and replaces it with a larger string. For example, if I type ~h (2 keystrokes), TextExpander automatically replaces it with ~Hilton (7 keystrokes, correctly capitalized), type hhome and I get my full address, ddate gives the current date, and ;kisuend returns the entire thank you and signature block I use for responding to all Kifu support emails, its 344 characters long!

Both the macro tools and the expansion tools can be configured to work across the system, or in only certain applications. My Markdown link triggers only work in Safari, my context launch triggers work everywhere, both are Keyboard Maestro macro sets. I have text expansions that only work in email, others that only work in terminal and some that work everywhere.

Whenever you find yourself doing or typing the same thing over and over again, automate it using a macro tool or text expander.

## Outside the Productive Context

You’re not always working, or buried in a productivity context. It still does not mean that you cannot apply productivity context tips to these activities as well.

For example, when I am outside a productive context, I like to read through my Twitter streams. Using TweetMarker or iCloud, I can launch my favorite clients (these days all Tweetbots) on any device and know that it will start me at the last tweet read, so I know I won’t miss any. That’s more productive than using the web app and scrolling down and down until you recognize something. It also means that my Twitter replies may be “late pickups” but I do get there without losing productivity. I use Google Reader to get the same state in RSS across devices too. Just having a known starting point improves productivity.

Quick launchers are also your friend, especially for less common application launches. All modern desktop operating systems allow you to “pin” your favorite applications so they they remain visible and 1-click away (Dock on OS X, toolbars on Linux and Windows). But what about applications that you don’t need to use that often? Well, either use the search feature in your operating system, or use a quick launcher like Alfred or LaunchBar. To use these, you launch them with a keystroke, ⌥SPACE (Option-Space) in my case, then start typing the application name. As you type, the quick launch application guesses what you may mean and provides options. For example, for me to launch ChronoSync, I ⌘SPACE into Alfred and type chr. By the time I get to the r, Alfred has already guessed that I want to launch ChronoSync, so I just press RETURN and it launches. Better than having to leave the keyboard, grab the mouse, launch Finder, click on Applications, scroll down and click on the ChronoSync icon to launch it.

Managing one’s inbox is another matter. Some actually view this as a productivity context on its own, a context to switch to, process and switch out of. I do this now, previously I used to treat email as a distraction. I happen to use Os X Mail.app, but managing my inbox is a bear in this product. So I installed Mail Act-On, a plugin that enables me to organize my emails with single keystrokes. Now it takes only one keystroke to tag an email and move it to the right project folder. Processing my email and keeping it under control is so much quicker now.

Keeping one’s todo lists under control is just as much of a problem, but one where tools can help maximize your productivity in managing these lists. Back in the old days, I used to write a weekly todo list on my paper notebook. Then, every morning, I’d write out those tasks I needed to get to that day. Great discipline, but time consuming, not productive. After many iterations of tools and techniques, I now rely on OmniFocus. I get a new task, it goes in the OmniFocus inbox using a keyboard shortcut and the quick entry box. Quick and easy, no interruption to the current productivity context. Then, once or twice a day, I set up a todo productive context and clean up my OmniFocus inbox, assign tasks to projects, contexts and timeframes. I also leave OmniFocus running on another virtual desktop while working in other productive contexts to I can quickly switch over to see what next task to perform in a context. I am not promoting a full “Get Things Done” (GTD) process, I tried and found it too onerous, just take the good parts that work for you.

Finally, managing one’s calendar is also a possible context, but not for me. I happen to use my calendar for a lot more than just meetings and birthdays, such as keeping track of my exercise routines. But it is a hassle to launch the calendar, find the right day, drag the right time, type in the event name, location, change the time and set the reminder. Instead, I use productivity enhancement tool like Fantastical which is a keystroke away. I type in a string of text, say “Meet Jeff at Witchcraft on tues at 10am”, it figures out what I mean and creates the entry for me in the calendar with a default reminder in a flash. Very productive.

## Default Productive Context

You can also be productive when you are not using your computer, or productive in other contexts when working in one. Use the time when you are processing emails to update your tools, modern systems can handle an install and email at the same time. Use automated backup tools like Backblaze or Time Machine to keep your computer backed up without manual intervention or having to spend time in a backing up context. If you use multiple computers, using Dropbox is obvious, it automatically syncs your files between all devices, so you do not have to. Automated backups and file syncs are amazing.

Use automation to manage, maintain and clean up files on your system as well. You can add actions to folders which are just scripts that run whenever the content of a folder changes, or cron tasks to regularly schedule clean ups. I use Hazel for a ton of these activities, from keeping my desktop clean, deleting excess backup files, truncating logs, tidying up my downloads folder and archiving files as they are tagged. For example, I recently switched to electronic bills and statements. So, when a new bill arrives, I save it to my Downloads folder (which is my default save location in Mail, 1-click). Hazel monitors that folder, recognizes the bill based on content in the saved PDF and files the bill in the right folder with the right filename. Not only that, it also creates a task in OmniFocus to remind me to pay that bill in a week. So, by saving a file and with no other effort or intervention from me, I gain a paperless office. I can now find the bill using Spotlight or go directly to that bill’s folder when I need it.

## So there you are

Establishing a productive context starts with identifying the context, then

• Choose the right tools
• Remove distractions
• Lay it out spatially

Maintain each productive context by

• Stepping the process
• Focussing on the content
• Updating or replacing your tools
• Automate the process
• Use text expansion