Artisans vs. Armies

There are moments in the history of software, when a product created by a tiny team has invented or transformed entire markets.  I was struck by evidence for a similar model in evolutionary biology: the theory of punctuated equilibrium, where there are long periods of relatively little change followed by short and dramatic periods of upheaval.

This kind of rapid change, brought on by an insightful act of creation, has happened repeatedly.  Afterwards, the market leaders usually settle into a period of stability and incremental refinement, backed by large teams.  For example:

UNIX: Ken Thompson and Dennis Ritchie were working at Bell Labs, and became disenchanted with a large-scale project to design a novel operating system, called Multics.  In reaction to its complexity, they created a much simpler alternative and impishly called it “Unics” (later renamed to Unix).  Thompson described Multics as “overdesigned and overbuilt and over everything” (a common complain about systems built by armies!).  Unix went on to become one of the two dominant server operating systems; it is now enhanced and maintained by an army of its own – thousands of developers around the world.

Visicalc: while a student at Harvard Business School, Dan Bricklin got tired of doing spreadsheets on paper.  He thought that he could use a personal computer to help, so he wrote Visicalc for the Apple II and transformed the role of the personal computer in business.  The spreadsheet has long since moved to the other model – Microsoft Excel has dominated the market for many years.

Electronic Arts: The company was originally created by Trip Hawkins in 1982 with a vision: find the brilliant programmers who could create amazing games for small computers, and celebrate those artists and their creations just as we do with great musicians.  One of my friends from junior high school wrote an early EA game (called Axis Assassin).  It was a very impressive homage to his favorite arcade game, Tempest, and he was the sole programmer who built it.  I still have the packaging with his picture and bio in it (at the ripe age of 18).  But that notion of the individual artist was abandoned by EA many years ago.  Now they make games like Madden NFL, which is built by 30 developers and has more than 10 million lines of source code.  The big PC and console games involve massive multi-year investments.  The artisans have moved to mobile, a disruptive domain where very popular games with millions of users are still being created by tiny teams of people.

American culture, I think, has always been caught between a celebration of the small (the lone inventor in a workshop building a better mousetrap, the small farmer setting forth in a Conestoga wagon on the Oregon trail, the “small is beautiful” philosophy of the 70s) and a celebration of the large (the great skyscrapers – “cathedrals of the machine age”, the massive industrial output that powered our economy and made us victorious in the world wars, the space program that landed astronauts on the moon).  Like the technology industry, our culture is tugged back and forth between these two extremes.

The Model

Across all of these examples, I find that there is a somewhat consistent pattern.  Typically, a new opportunity opens up due to some key technology transformation (like the advent of the PC or the Internet), which is not yet dominated by large established organizations.  Some ground-breaking programmers dream up a new kind of product and create it, often as an act of passion rather than of calculation. The new idea gathers popularity, and over time it either grows a large company around it or (occasionally) is taken over by some existing player that wakes up quickly enough and buys or builds their way into a dominant position.

Once a kind of software has become well-established, it usually stops being the realm of the artisan and becomes dominated by large, well-financed teams.  Division of labor was one of the foundational ideas of the machine age, allowing our society to generate massively more output than it ever could have from the labors of loosely organized artisans in their guilds.  The artisans in most industries were washed to the sea by mega-giants.

But division of labor has a great flaw in times of turbulence – it is extremely hard to rapidly re-architect large products or large teams.  At scale, nobody knows the full story of how either one functions.  In software, the products may be millions of lines of code.  The working relationships among hundreds of specialized experts on an engineering team is a tremendously complex system of its own – redesigning it can be even harder than redesigning the software.  Clayton Christenson and others have eloquently written about how hard it is for established players to reinvent themselves.

It’s Not Just Software

This alternation between artisan and army is not restricted to software.  I was fascinated to learn what happened in the 1800’s in manufacturing, elegantly described in the book The Tycoons (which I highly recommend).

During the Industrial Revolution, British industry was transformed by machine-based manufacturing.  Individual artisans were unable to compete and were largely supplanted.  That part I knew.  What I didn’t know, is that there were some key inventions in manufacturing that had the side-effect of making the roles within a factory require far less individual skill and judgment.  The British were slow to adopt them, and most British plant workers were artisans – in the 1890s, three-quarters of them were highly trained crafts-people with a lifetime of expertise.  By contrast, American plants had virtually none – somebody could be trained for almost any role in the plant relatively quickly.

For this and other reasons, American industry production sky-rocketed past the British.  In 1860, US output was one-third of Britain’s.  Fifty years later, it was 2.3 times larger (!).  Manufacturing has remained dominated by mass scale ever since, though there are interesting early signs of another major shift.  The rise of 3D printing technology makes it cost effective to do very small runs – we may see a new renaissance for the artisan manufacturer.

Another example is movie-making.  United Artists was founded in 1919 by four directors and actors, including Charlie Chaplin and Mary Pickford (two of the most popular actors of the day).  The vision, embodied in its name, was to create a place where the artists dominated, not what today we might call the “suits”.  The company struggled because the industry was moving to longer movies with high production values that required large teams and big investments (sound familiar?).

The company, and the broader industry, seesawed back and forth.  In the 1960s, United Artists created the Bond blockbuster franchise.  In the 1970s, they were involved in the shift towards small “auteur” movies that represented the singular vision of a one person (like Midnight Cowboy).  Then back to blockbusters in the 1980s.  Lately, “indie” pictures are all the rage.  The dynamics of the movie industry have interesting similarities to software, shifting back and forth across the spectrum between creation by artisan or by army.

We’re In a Time of Radical Change

As I’ve written elsewhere, because of the cloud and devices, technology is in a time of radical transformation – a lot of equilibriums are being punctured right now.  It’s a hard time to be an established leader – a threat can develop out of nowhere from a couple of passionate developers with a new idea, and it can grow to massive size in the relative blink of an eye.

But it’s a magical time for the artisans – they can challenge the dominions of the giants, tweaking the noses of the biggest companies in the industry.  And if they are right and they have a winning idea, they can have a tremendous impact.  You don’t need an army to change the shape of an industry – you can build a program and, with no capital investment at all, make it available to a billion people in an hour.  If you crack the code and build something that has real demand, there are ready accelerants poised to support you.  Investment capital is abundantly available to companies that have gotten traction, and people with every kind of specialized skill are ready to jump on the train once it has begun gathering speed.  I call it “scale fast or fail fast”.

I believe that during the next several years, many domains of human endeavor will be radically reshaped by small teams of scrappy challengers.  They will seize this period of transformation to forge and pursue new visions that will change the dynamics of whole industries.  It will be fascinating to see what they come up with.

The Physics of Software

Physics – the natural laws defining the behavior of matter and energy – determines  what is possible in the universe.  I have found that engineering projects have a kind of physics as well.  But as technology undergoes fundamental transformations, that physics changes.

Enterprise Servers

Let’s look at large-scale commercial enterprise servers composed of millions of lines of code, which in my experience follow a pretty well defined model.  It’s dictated by the needs of the customer and by the constraints of the problem.

In a typical release that makes real but evolutionary steps forward, you take two years to do a version.  During those two years, you get three coding milestones, each of which is eight coding weeks.  Each developer on the project might do four coding days per work week, three if they are a lead.  Roughly 40% of the team is developers (the rest are testers, project managers, designers, etc).  That means that for every person-year spent by the engineering team, you are getting an average of 18 days of actual production coding on the product.

Ouch – no wonder those products take large teams to build and evolve so slowly.  What’s the deal?  The absolute killer .. the single thing that takes away the most productivity from the team, is the need to test and stabilize the product for the vast array of configurations that customers will use it in.  We called it The Matrix – the multi-dimensional matrix of every possible operating system (at different patch levels), every possible storage system, every possible database that customers might be using.  The combinatorics are brutal.

You have to test and retest and retest your product .. not just that it works, but that it is stable under load, that it performs as well as it needs to, that it fails in the same predictable ways, that it recovers from failure, that it can be managed, and backed up, and diagnosed when it goes wrong, and is secure, that you can smoothly migrate to it from older versions, that it integrates with all kinds of other systems that customers want to use it with, and on and on.

We called these “the basics”, and they soaked up far more time than actually writing the code that makes the product function.  Even if you are a very wealthy company, your test lab can’t possibly have every configuration that customers actually use (which is in fact unknowable, since everybody does weird things to customize their datacenter), so you put out a beta and work with early adopters to deploy and test the code in even more configurations.

The sad thing is that even if you could go faster, customers often don’t want you to – from their point of view, you are going too fast.  Once you finish your shiny new version, you have to get them to deploy the darned thing.  They frequently don’t want to, since the old one is working and they are risk-averse and have other and better things to do.  So you work on them, and gradually persuade some of them (often it takes years, and plenty of them will just skip a version).  Then they do a test deployment.  Then they come up with a migration plan.  Then they gradually spin up the new system and move over to it.  Multiple years after a new release, it is quite likely that the great majority of your customer base is running the older ones.  So you have to support every version until the support window runs out – for Microsoft that is ten years, or longer in some cases where the customers were very insistent.  If you are shipping every two years, that might mean supporting five different versions.

And worst of all, once you finally have the customer running live on your system, you basically have no idea what they are doing with it.   Are they using those features that you sweated blood to build?  Is the product working well and delivering the results they need?  You have virtually no data and hence there is a lot of guesswork in figuring out what to do next.  You prioritize things that users complain about or that the engineering team is excited about, never really sure if your priorities match the real needs of the customer.

Cloud Services Change the Physics

Contrast that with running a service.  When you host the service yourself, you have one configuration to support.  You have one team operating it that all works for one company and that works closely together.  You have perfect knowledge of, and control over, the environment where the system is going to be run.  When you deploy a new version, everyone is instantly running on it.

The result is a dramatic change in the size of the team that you need and the efficiency with which you can deliver to customers.  And keeping team sizes down pays off in many ways that are hard to quantify but nevertheless crucial – less communication overhead, a stronger sense of unity, and the ability to make changes in plan more quickly.

Even more important, when customers use your service, you know everything.  You know what features they use, what kind of performance you are delivering, whether searches are yielding results that users are interested in, whether one version or the other of your software gets better results.  You can spot and fix problems in real time without desperately trying to diagnose a critical live system in a customer’s facility based on the few clues that they are able and willing to share with you.

What Does It Mean?

In the history of computer technology, there have been several times when the physics changed profoundly.  Moving from batch to interactive systems was one.  The advent of the PC, where computing became ubiquitous and under your own control.  The standardization of key building blocks like operating systems and databases, so applications could focus on the unique logic of the problems they were targeting.

Every time the physics changed in the past, it enabled a massive acceleration of innovation and disruption.  New markets opened up, software was able to do things it had never been able to do before, and established companies faced tremendous pressure.  The traditional way of doing things doesn’t always go away – mainframes running COBOL process enormous numbers of transactions every day.  People still buy PC software, and servers will be deployed into data centers for decades.  But companies and communities that miss out on one of these fundamental transformations usually have a difficult time.  They often end up living in a perpetual twilight world of stasis and conservatism.  The frontiers of technical development, the best developers, and the biggest new opportunities leave them behind.

I believe that this transition, from servers to services, is one of those abiding changes in the physics of software.  The benefits of services are so compelling in terms of efficiency, of deeply understanding your customers and what they need, and of adjusting and adapting software in real time, that I think they will be the place where the white-heat of innovation happens.  If you are on the wrong side of that divide and your competitor is not, it will be very difficult to compete toe to toe.

Rise of Data Science

Radically accelerated by the advent of cloud computing and devices, a role has begun to develop that will flourish in the coming years, and I am convinced that it will have a major impact on our lives.

New technologies often usher in new disciplines; they typically begin as a chaotic area of focus, with all sorts of people falling into them from different backgrounds.  Over time, they take on structure, books are written, educational and training programs develop, and they turn into a mature discipline.  That’s what happened when the Web was created – building a web site requires a mix of skills that draw from what had been quite separate worlds of activity: art and visual design, image processing, and programming (among others).

The same arc happened a few decades earlier when programming was invented – it drew from fields like mathematics, engineering, and linguistics.  It attracted people from those fields and many others (including more than a few high school students who were supposed to be doing something else!).

This new field hasn’t been officially named yet, but one of the terms that people are using for it is “data science”.  I’ve been diving into it pretty deeply for our startup, and some remarkably interesting work has been happening over the past several years.

What Does a Data Scientist Do, Anyway?

As you would expect from an emerging discipline, people don’t agree yet on exactly what it is all about.  But the fundamental idea is that enormous bodies of data are being gathered through software, and somebody has to make sense of them.  The analysis can influence decisions that people make (“hey, this version of our web service gets 15% more people to sign up for an account than the other one”) and decisions that software makes (while browsing items on Amazon, the web site will tell you that people who bought this product also were interested in …).

A data scientist is somebody who figures out what data to gather, how to analyze it, and what to do with the results of that analysis.  The discipline combines ideas from areas like statistics, machine learning, mathematics, databases, and psychology.

What’s it good for?  Well, here are just a few ways it is being used today:

  • The magical ability of Google search to find what you need from a couple of words and no other hints.  Compare that experience to what you typically get from software – you usually have to tell applications in painfully explicit detail exactly what you want, in very tightly scripted sequences of commands, and it can be extremely frustrating if the programmers haven’t anticipated what you want.  With Google, you type just about anything into the search box, and with incredibly high probability, it will give you a useful set of answers.
  • The ability to recommend things that are likely to interest you.  Amazon is very, very good at helping you find a book you want on any subject under the sun, through a combination of search and recommendations.  Netflix has gotten to the point where 75% of the shows that people watch on their streaming service come from a recommendation
  • Web sites present users with multiple versions of their product simultaneously, watch how users react, and pick the best one.  Large web companies are running dozens or hundreds of these A/B tests simultaneously and are updating their product daily based on the result.  I used to ship large packaged software products to enterprises, and we would conduct a manual poll of our users years after we shipped to try to figure out whether they used the product and what they did with it – the results were very spotty, very late, and highly inaccurate.  It’s like trying to drive by covering the windows of your car with black paint and having somebody write you an occasional letter about where you are and the condition of the road.

Those are just a few examples – almost every Web-based company depends on data science as its lifeblood to make its product come alive for users and to run its business internally.

The Future

What’s being done today with data science, while impressive, just scratches the surface.  The current economic models have only begun to evolve.  And many parts of our lives remain deeply inefficient and filled with friction:

  • Transit is very wasteful – guessing about traffic patterns, individual drivers maneuvering 3000 pound chunks of metal with dubious competence.
  • Integration of medical carediagnosis, and monitoring our bodies, remains technologically primitive.
  • Energy use is highly inefficient, partly because we have little idea how to optimize or the implications of our decisions.
  • Education hasn’t improved much in the last few hundred years, when President Garfield said that the ideal college was a famous teacher (Mark Hopkins) at one end of a log and a student at the other.  It’s arguably the most important competency of a successful nation in the modern age, and our system (in the United States at least) is hardly flourishing.

Along with much of the economy, these areas are ripe to be transformed, and I am convinced that data scientists will be at the heart of that transformation (for good and for ill!).  If you’d like to learn more:

It’s a discipline that I think anyone involved in technology should understand at some basic level.  Pretty much whatever you do these days, there are probably large quantities of data being generated around it that can be mined for insight.  You want to leverage this power, to make your own decisions and to create a great experience for people using your software.  It’s going to continue to transform the world over the coming years .. and maybe you can become a real-life Hari Seldon.

We’re Living in Florence, in 1450 A.D.

If you work in technology, you have the amazing luck to be in the midst of one of the great transformations of human society.  There have been numerous times in history when technology has transformed the way we live, our understanding of the world, and the life we are able to experience.  I’ve had one of them on my mind a lot lately – the Renaissance.  I think there are very interesting parallels to be drawn.  It feels like we’re at the height of the first round .. which would put us in Florence, around 1450.

What Caused The Renaissance?

Many forces came together to enable that astonishing transformation of knowledge, art, architecture, and commerce, whose profound impact shaped the world and still fascinates us.

There were some key technology breakthroughs.  Gutenberg is famous for inventing the printing press in 1440, which greatly expanded our ability to distribute ideas.  But just as important, and less frequently remarked upon, was the spread of paper.  We take it for granted today, but it was a magical boost to our ability to capture and disseminate ideas.  Paper is far less costly to produce and can be manufactured in much greater quantity than alternatives like vellum, made from animal skins.  Invented in China in 100 AD, paper remained a closely held secret for several hundred years, but had become widely used by the time of the Renaissance.

The ability to travel and to trade was revolutionized by ocean-going ships (like the Portuguese caravel), which were capable of navigating the globe.  At the same time, the mariner’s astrolabe made it possible to measure latitude anywhere in the world.  With weapons like the arquebus, small groups were able to wreak havoc among less technologically advanced populations.

New technology called for new technique, as well.  The development of merchant capitalism, along with sophisticated means of tracking commercial activities like double-entry bookkeeping, allowed a modern system of banking to emerge.  It was banking that made Florence so wealthy, and that wealth enabled major investments in science and the arts.

In addition to a major infusion of money, the arts were transformed by new techniques as well.  Paintings became far more realistic using linear perspective.  Architecture took advantage of construction techniques both novel and rediscovered.  Grand new structures were created that finally matched and exceeded marvels (like the dome of the Pantheon in Rome) that had been built 1400 years earlier.

This confluence of breakthroughs in technology and technique allowed Europe to leap forward and become the dominant world power in a remarkably short period of time.  Businesses grew to previously unheard of scale and their activities reached across the globe.  Ideas moved much more quickly, too, because they were carried along by the people who were associated with this explosion of trading activity.  Control of knowledge moved from guilds to a mobile class of experts.  Liquidity, supported by precious metals imported from the New World, began to move the basis of wealth from land to capital.  Our world view also began to shift radically – from deism, centered on God, to humanism.  Our conception of the universe was rocked by the discovery that we were one of many planets orbiting around the sun.

The Modern Renaissance

Fast forward to today, and consider what is happening.  In technology, we are seeing two massive changes: devices and the cloud.  The cloud has transformed the cost and reach of computing.  By most estimates, Google runs well over a million servers in their data centers and handles something like three billion searches per day.  This is technology operating at a global scale that was absolutely inconceivable a few years ago.  At the same time, the programmable cloud has made it extremely cheap to build and deploy software.  For a few hundred dollars a month, a programmer with a laptop can take a program they have written and within minutes make it available to more than two billion people.

Smartphones and similar devices are also astonishing in their capability and their reach.  There are now around 1 billion smartphone users in the world with the Internet in their pocket and accessible at all times.  That number is growing rapidly – estimates are that there will be a billion net new smartphone users in the next few years.  The Apple App Store just crossed 25 billion downloads.  The pace of growth and the scale of what has already happened are just staggering.

As always, new technology encourages innovation in techniqueOpen source software has been around for decades, of course, but it has gotten a major boost from its intimate relationship to cloud computing.  A wide body of high quality components are available for free to anyone who wishes to build cloud applications, representing a dramatic reduction in the time and effort required to go from idea to product.  We’re benefiting from that tremendously in our startup.

Another key change is the move from on-premise software to software as a service.  It means that the latest version of every application is available to every customer, without their needing to deploy or manage it.  Services pair nicely with, and encourage, the shift from physical to virtual – instead of manipulating objects, increasingly we’re manipulating data.  We are doing research and developing new products using simulated environments.  We’re transporting knowledge and entertainment as packets over networks, not by sending boxes of plastic and paper around the world.  Increasingly, the basis of value is rooted in virtual goods and services.  I believe that is as profound an economic change as the shift from land-based wealth to capitalism.

Signposts of the Revolution

We have seen some dramatic evidence of the impact that these changes will have, but I think we’re just at the beginning.

  • Facebook has over 900 million active users, and is on track to hit a billion later this year.  It has grown to that size in .. eight years.  To put that in perspective, China’s population today is 1.3 billion; it took around 250 years to grow the last billion (and it took human beings about 12,000 years to hit their first billion).
  • Speaking of Facebook, they recently purchased Instagram.  This company, which serves 30 million users has .. 13 employees.  Two developers run the back-end service for their users.  A few years ago, it would have taken a big company with major resources to support that many users, and now it can be done with a handful of people and no capital expense at all.
  • Consider that icon of the industrial revolution – the car.  A modern premium automobile has something like 100 million lines of code to run the nearly 100 processors distributed throughout it.  It was simulated extensively on supercomputers, is supported by myriad online services, and the supply chain that delivered it to you only works because of massive amounts of software tracking every minute aspect of its progress in real time.

I could go on, but the point is that virtually every industry is in the process of being transformed by the combination of the cloud and the device.  The way we make discoveries and create new inventions.  The way we communicate.  How and what we buy.  How companies interact with each other and with their customers.  And this is all happening incredibly quickly – the cost and effort for new ideas to be tried, refined, and deployed globally has dropped to the floor.  We’ve seen some dramatic changes already, but that was just a warm-up – we’re in for quite a ride.

The Path Ahead is Uncertain

In 1450, Florence was unquestionably at the forefront of the Renaissance, and the city was dominated by the Medici family.  By 1500, the focus of the action had moved elsewhere in Italy and across Europe, and Florence never regained its dominance.  What happened?  Well, for one thing, Charles VIII of France invaded Italy in 1494 and kicked off the Italian Wars, a series of conflicts that involved various city states and several empires.  That first invasion forced the Medici to flee the city, though they returned and ruled it again later.  In the meantime, other parts of Italy and Europe took over and led the Renaissance forward.  I suspect that the fortunes of the early players in our current Renaissance will also dramatically rise and fall.

And worse than losing leadership, there is a darker side to change.  We like to celebrate the Renaissance and the great leap forward in human capability that it represented.  But it wasn’t positive for everyone; it was particularly brutal for indigenous cultures around the world who were now within reach of the Europeans.  Many of them were despoiled and enslaved.  The current changes will not be as violent, hopefully, but we have seen these forces help governments fall and companies be humbled, and there are industries filled with people whose economic future will be dramatically affected.

We can never know ahead of time how things are going to shake out for particular groups during times of great change.  But when transformative forces come along that are this strong, they cannot be denied – they will transform our lives, culturally and economically.

Leonardo Da Vinci.  Michelangelo.  Brunelleschi.  We are still inspired by what they accomplished.  They were amazing people … but they also had amazing luck.  They lived in a magical time and place in the history of mankind.  So do you.  How are you going to be part of this modern Renaissance?