From the Editor
IEEE Software, Vol. 16, No. 1, January/February 1999
After the Gold Rush
In January 1848, James Marshall discovered
gold in California’s American River, near a mill he was building for John
Sutter. At first, he and Sutter dismissed the pea-sized nuggets as a
nuisance; they believed the attention that gold would bring would spoil
Sutter’s plans to build an agricultural empire. But within months, word
spread, and by 1849 thousands of men and a handful of women from the United
States and around the world ("49ers") headed to California to make their
fortunes in what became known as The California Gold Rush. The unprecedented
rush west that followed would create something new to America: an economy
driven by high-risk entrepreneurialism, fueled by dreams of striking it
rich. Precious few 49ers actually realized that dream during the gold rush
days, but the dream lives on in many modern software companies and
individual software developers—with about the same chances of striking it
rich and busting out as miners in California had in 1849.
The California gold rush was unique because the gold was
found in riverbeds instead of embedded in hard rock. That meant that, at
first, anyone with a tin pan and an entrepreneurial spirit had a chance to
make a fortune. But by mid 1849, most of the easy gold had been found, which
meant that a typical miner spent 10 hours a day in ice cold water, digging,
sifting, and washing. As time passed, this backbreaking work yielded less
and less gold. There were the occasional lucky strikes well into the 1850s,
which provided just enough good news to encourage thousands to continue
digging. Most failed every day, but they kept on—year after year.
After the early days of the gold rush, miners had to use
more advanced techniques to extract gold. By the early 1850s, a single miner
could no longer work his claim alone. He needed help, and he needed
technology. At first, miners banded together informally to build dams,
reroute rivers, and expose the gold. But soon even more capital-intensive
techniques were needed to be successful, and the informal groups of miners
were replaced by corporations. By the mid 1850s, most of the miners who
remained were corporate employees rather than individual entrepreneurs.
Software Gold Rushes
The advent of a major new technology often means the
beginning of what I think of as a "software gold rush." I’ve personally seen
gold rushes with the advent of the IBM PC and Microsoft DOS operating
system, the migration from DOS to Windows, and the growth of Internet
computing.
Gold rush software development is characterized by
high-risk, high-reward development practices. Because few companies have
established competitive presences in the marketplace, much of the
technological gold seems to be just lying on the ground, waiting for anyone
with the right mix of innovation and initiative to pick it up. Software
49ers rush into the new technology, hoping to strike it rich. The
stereotypical technology goldrushers are two guys working in a garage who
ultimately make a fortune—dynamic duos such as Bill Gates and Paul Allen
(Microsoft), Steve Jobs and Steve Wozniak (Apple Computer), Bob Frankston
and Dan Bricklin (VisiCalc), and so on.
Gold rush software development is a high risk activity.
The practices employed during a software gold rush are usually associated
with hacking rather than engineering: small team sizes, informal processes,
long hours, little documentation, bare-bones quality assurance
practices—practices I refer to collectively as "commitment-based
development" (Rapid Development, Microsoft Press 1996). Use of
these practices puts all but the smallest software projects at high risk of
failure.
The odds of striking it rich during a software gold rush
are about as good as they were during the California gold rush—for every
success story, there are hundreds or even thousands of projects that bust
out. But the failures aren’t nearly as interesting as the successes, and so
we don’t hear very much about them. As with the California gold rush,
projects run with commitment-based development are successful just often
enough, and are so enormously lucrative when they do succeed, that they
convince software developers that such high-risk practices can work, thus
keeping the entrepreneurial dream alive.
After the Gold Rush
Post–gold rush software development is characterized by
more methodical, lower-risk, capital-intensive development practices.
Projects use relatively large teams, rely on more formal processes, adhere
to more standards (compatibility with legacy code, industry-wide protocols,
and so on), and work with much larger code bases. The emphasis is less on
rushing software to market quickly and more on reliability,
interoperability, usability, and other "esoteric" product characteristics
that hardly matter during a gold rush but that matter a lot when a
technology matures.
Companies most successful during one gold rush are
likely to fail during the next gold rush. The archetypal post–gold
rushers are the companies that became established during an earlier gold
rush. These companies repeat Marshall and Sutter’s mistake of seeing
new-technology gold as a nuisance that will interfere with their well-laid
plans for extracting maximum value from the claims they staked during the
last gold rush. Examples of companies that were slow to pick up
new-technology gold nuggets include IBM during the early days of PC-DOS;
Lotus during the early days of Windows; and Microsoft during the early days
of the Internet. We’ll undoubtedly see this pattern repeated during the late
days of the Internet by some of the companies that had the greatest
successes in the early days—Netscape, Yahoo, Amazon.com—only time will tell
which will successfully make the next great transition.
Gold rush style development practices have even lower
odds of working in a post–gold rush phase. In the early days of a new
technology, there are few established players or products. The technological
barriers to entry are low, and early products can be small and still
succeed. The first version of Microsoft Word for Windows consisted of just
249,000 lines of code. As with the California gold rush, fewer people and
less capital are needed to stake a claim during the early days of a new
technology. Two guys in a garage have a chance to compete against the major
corporations when a successful product can be built with 249,000 lines of
code. As the technology matures, however, the easy gold runs out, and
successful companies have to compete on the basis of more capital intensive
projects. The current version of Word for Windows, for example, consists of
more than 5 million lines of code. One of the most damaging mistakes that
successful gold rush companies make is to persist in using gold rush
development approaches as the technology matures and their projects scale
up. To compete successfully in the post–gold rush phase, the successful
project needs to do a lot more than simply multiply the number of guys and
get a bigger garage.
Gold rush economics are sometimes more sensible than
they appear.
It may be as hard for an established company to compete in a gold rush phase
as it is for two guys in a garage to compete post–gold rush. During a gold
rush, having thousands of individual software developers take on
entrepreneurial risk voluntarily—with one in a thousand striking it rich and
the rest chalking their losses up to experience—is tremendously beneficial
from a macroeconomic point of view. No one but the individual entrepreneurs
pays for the failures, and everyone has a chance to benefit by buying and
using the products that succeed. But how can an individual company harness
this dynamic? What company could possibly afford to fund thousands of
individual entrepreneurs during a gold rush phase just to find the one or
two that successfully develop new gold rush technology? The answer is, no
company can afford to do that, which is one reason that software company
acquisitions during a gold rush phase are more sensible than they might at
first appear. Some industry observers thought Microsoft was crazy to pay
$130 million to acquire Vermeer Technology, original creators of FrontPage,
when it had only about $10 million in annual revenue. But from the
entrepreneurial gold rush point of view, paying $130 million for the one
success in a thousand is a cheap alternative to funding thousands of
entrepreneurial experiments internally, nearly all of which would ultimately
be dead ends.
California or Bust, Software Engineering Style
Gold rush software projects might be inherently risky, but the use of
haphazard software development practices has made them riskier than they
need to be. Developers working on gold rush projects have been saddled for
decades with the methodological equivalents of tin pans and shovels.
Historically, software engineering has focused its attention almost
exclusively on post–gold rush projects. This needs to change. Gold rush
software projects are essential to the forward march of technology and vital
to the economy. More important, these are the projects that have the power
to capture the imaginations of leading software practitioners. Modern
software engineering needs to rise to the challenge of discovering and
refining practices that can make more of these projects successful.
Editor: Steve McConnell, Construx Software, 11820 Northup
Way #E200, Bellevue, WA 98005.
E-mail: steve.mcconnell@construx.com
- WWW:
http://www.construx.com/stevemcc/