Introduction
“Engineering is easy. People are hard.”
—
Life is full of unexpected twists, and the two of us never imagined we’d someday write a book about software engineering.
Like most computer geeks, we discovered that our hobby and passion—playing with computers—was a great way to make a living after graduating college. And like most hackers of our generation, we spent the mid-1990s building PCs out of spare parts, installing prerelease versions of Linux from piles of diskettes, and learning to administer Unix machines. We worked as sysadmins, and then at the dawn of the dot-com bubble, became programmers in smaller companies. After the bubble burst, we started working for surviving Silicon Valley companies (such as Apple) and later were hired by a startup (CollabNet) to work full time on designing and writing an open source version control application called Subversion.
But something unexpected happened between 2000 and 2005. While we were creating Subversion, our job responsibilities slowly changed. We weren’t just writing code all day in a vacuum; we were leading an open source project. This meant hanging in a chat room all day with a dozen other volunteer programmers and paying attention to what they were doing. It meant coordinating new features almost entirely through an email list. Along the way, we discovered that the key to a project’s success wasn’t just writing great code: the way in which people collaborated toward the end goal mattered just as much.
In 2005 ...