Shipping and the art of Getting *Thing* Done

  Wynn Netherland • 2013-04-15

tldr; Bigger blocks of focused time results in more ships.

My career began in a cube farm over fifteen years ago. It seemed everyone at that time had a Franklin Planner and could enumerate their big rocks for the week on commmand. These were those high priority tasks that just had to get done. The analogy held that if you were filling a jar, you'd put the big rocks in before the smaller pebbles and sand.

Some years later, as Getting Things Done reached near cult status, we sought not only to prioritize tasks, but squeeze out every bit of productivity from the rest of our schedules by assigning a @context to all the pebbles and sand. The thinking was, if you've got just five minutes before the next status meeting, you check your pre-categorized task list to see what phone call, email, or airline reservation you could get done.

When applied within the constraints of typical corporate culture, both of these philosophies aim to bring efficiency to a system under internal pressure from excess meetings and a fixed workday.

Flex and defrag your schedule

It's well known that at GitHub we have few meetings. Tom and others have written about how meetings kill productivity. I saw one of the best analogies for this just last week on Twitter:

While much has been written about the death of productivity in a meeting, we often overlook what pressures fixed blocks of time put on the rest of our schedules. It's not really even about meetings as much as it is about all fixed blocks of time. Meetings and appointments definitely qualify, but so do fixed workday boundaries. I'm a morning person and will often start my workday way earlier than my teammates. Some Hubbers are night owls and their workday doesn't really get going until I'm headed to bed. A flexible work schedule means each person can maximize their schedule for long uninterrupted blocks of time.

As my schedule fills up, what happens before each block of scheduled time? No matter how good I get at multi-tasking, that important thing gets pushed out because I don't have time to fully context shift and work on it effectively in the time available. The more fixed items I have on my sechedule, the harder it is to jump into a large task.

Meetings especially have some rather insidious effects. For programmers, not all time is created equal. There's something about communicating with others, especially verbally, that drains your mental energy. Have you ever paired with another developer for an extended period of time? Compare your mental state after a four hour solo hacking session to just two hours of pairing. If you're like me, pairing is rewarding yet very draining.

Meetings work the same way. That block of time after the meeting isn't prime time for getting much done. There's no way to avoid meetings and appointments, but the fewer you have, the larger focused blocks of time you have.

Real focus - what are you shipping next?

Time pressures aren't the only thing that can fragment your schedule and impact your productivity. Too many priorities lead to a divided mind and fewer ships. Every month, someone from each GitHub team will create an issue along the lines of "What do you want to ship in April?" along with a short list of their goals for that month. Everyone from the team piles on with their lists so everyone gets a sense of what everyone else is doing.

What makes GitHub culture unique from everywhere else I've worked, though, is the emphasis on what are you shipping next? Everyone has the freedom to choose what they're working on inside the framework of the company's goals. Everyone also has the freedom to work on that next thing until it's done.

Wynn Netherland
Wynn Netherland

VP of Engineering at Abstract, team builder, DFW GraphQL meetup organizer, platform nerd, author, and Jesus follower.