Preface

Shipping Is Greatness

Designing, building, and launching the right software is referred to as shipping in the software industry. Shipping software is not packing boxes and it’s not only hosting launch parties. Shipping is finding the right product, working through a complex and ever-changing process, and doing it quickly. Shipping is one of the few truly new crafts of our century. It’s newer than management because managers have been managing people for a long time. Business execs have been waving their hands at strategy for just as long, if you count stockpiling mammoth bones as inventory control. And marketers have been trying to sell another sprocket or cog since before sprockets and cogs existed. But shipping? Shipping software didn’t exist when you and I were born. Heck, it barely existed when your kids were born, and there are no classes you can take in school that will teach you how to do it.

Shipping software is new, but it’s also incredibly meaningful because it solves many problems. Shipping solves money problems, because your investors are always looking for results before they give you more money. It solves customer problems because the features and fixes your customers need are tied up in your ability to ship. It solves team problems because nothing is better for morale than making progress. If fame, fortune, and the pursuit of happiness are the question, shipping great software is the answer.

If you can ship, you can make nearly any software business successful, and you can compete with businesses that have deeper pockets because you can get to market faster. But if you screw it up—by missing your date, by launching a product nobody cares about, or by building a beautiful product that nobody hears about—your team will be grumpy, customers will write to the Big Boss, and best case, you don’t get promoted. Worst case, the next project on which you and your team work will involve résumé polishing. Or maybe polishing cars.

So, if you can ship, you’ll be personally and professionally successful. But it’s damn hard for teams to ship, which is where you come in.

This book is your shortcut to a degree in shipping. Think about it like this: McKinsey and Company, the world-famous, hyperexpensive, fancy-pants management consulting company, hires a new crop of science PhDs each year and puts them in a two-week “mini MBA” program. They then expect these PhDs to do pretty much what the MBAs do, even though the PhDs have two weeks of training to the MBAs’ two years. The goal of this book is to provide you with the same simplified, no-BS approach to doing your job—or understanding your team lead’s job.

This book exists because I needed it when I started trying to ship software, and I see product managers, test leads, engineering managers, and team leads of all types who are struggling, just as I did. I see them going through the same special torture that I underwent when I entered this industry—but I had the good fortune to have great teachers attendant at my hazing: Dartmouth, Amazon, Google, and my own mistaken ventures.

My first teacher was my own company—I was arrogant enough to think that since I could write software I could do everything else required to ship it. You know, define the minimum viable product, manage the project, iterate, release, market, and so on. I learned many valuable lessons, hubris among them. I then joined another startup as the chief technology officer, and spent years trying to make it big. I learned (mostly) different lessons there, but repeated the class in hubris. Abashed, I went to Dartmouth, and studied at the Thayer School of Engineering and the Tuck School of Business, earning a master’s of engineering management degree.

I left Dartmouth and joined Amazon, where I was a technical product program manager and an engineering manager (a.k.a. two-pizza team leader). On projects like customer reviews, identity, and fraud-fighting infrastructure, I saw how Jeff Bezos and his lieutenants worked and learned to mimic how some of the best in the business did the job.

I eventually went to Google, and as a senior product manager I spent over five years focusing on scalability, business strategy, and the interpersonal dynamics inherent in software teams. I grew Google Pack, shipped the Google Update service used in dozens of products, and helped build the Google Apps program through mobile sync services, connectors for Microsoft Outlook, and data import tools. I launched Google’s innovative multiway video products, now featured as Google Hangouts. I even worked on Maps for a while. I saw the company grow and change, but more important, I saw successes and failures and learned more lessons about the best ways to ship software.

The best leaders at Amazon and Google have a lot to teach. Remember, this business is new, so the techniques, processes, and tricks you need to ship software weren’t developed until after Windows became dominant. Microsoft’s old approach to shipping software came out of large-scale hard-goods engineering processes. The Internet made three-year development cycles, shrink-wrapped floppy disk distribution, and Microsoft’s old way obsolete. The rapid iteration, deployment, and adoption afforded by the Internet enabled engineers to develop rapid application development frameworks, usability studies, and new process frameworks like scrum. As a result, most of us are making this stuff up as we go along, and the guidance you can glean from the relatively few executives who are part of the success of Amazon and Google is critical.

The lessons I’ve learned and distilled in this book cover the entire software life cycle because as you try to ship software you will face challenges in product, program, project, and engineering management. Shipping is not just project management and convincing engineers to work faster. If your job is shipping software, you must have an extremely broad skill set that ranges from deeply technical to highly creative, and along the way you must provide cogent business insight. You’ll probably do everything from managing people to writing test cases to making mocks in Photoshop. If you’re up for a challenge that’s second to none, this is your gig.

To put this in perspective, shipping is a painful, confusing, and difficult job that’s generally only rewarding if you’re really good at it. The job is like playing golf on gravel fairways—if you suck at it, you’ll spend all day grinding your clubs to bits and wandering around in the pounding sun trying to find your ball, which will be hopelessly unidentifiable amidst the rocks. But if you’re a great golfer, you’ll hit those sweet shots that put you onto the soft green and when you look around, surrounded by sweating, confused duffers, you’ll know what it’s about. It’s glorious.

This book covers two major things that will help you be great at shipping. Part One describes a process for shipping that many of the best teams from Amazon and Google use. I work from the beginning—a customer problem—through the details of user experience design, project management, and testing to the end result of launching. Part Two contains techniques, best practices, and skills that a team lead who’s been asked to ship software needs. While Part One is arranged in the order in which you’ll follow the process, you can read Part Two in whatever order you like, and refer to it when you have a particular challenge.

The tools and tips herein are blunt and directional; it’s up to you to sharpen them and make them your own, just as Wyatt Earp would remove the safety and polish the hammer cam of his Colt so he could shoot faster. If you’re looking for an in-depth analysis of software strategy, this book is not for you. But if you’re looking for a tried-and-true template that will carry you through a three-day strategy offsite and align your team for success, read on.

Acknowledgments

I owe a special thanks to Brian Marsh, one of the best engineering managers in the world, for sharing an office with me for much of the past eight years and helping me figure this stuff out. He’s responsible for much of the good advice you read (and none of the bad jokes). Aaron Abrams was my best reader and the first to say, “Make it more snarky,” for which I am very thankful. Thanks to Ali Pasha, Steve Saito, Matt Shobe, and Mike Smith for reading and providing great feedback on the manuscript. Most of all, thank you, Tim, for your patience, help with the tone, and endless support.

Get Shipping Greatness now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.