The software industry is quite young, about 30 to 40 years old. Yet massive companies emerged quickly: billion dollar businesses bringing huge social changes. What does it mean to be a developer today, and how did that job evolve these last few years? I think we need to picture this as a global shift within the evolution of productivity.
Let's start from the beginning.
Tool creation is deeply linked to human progress: to improve our quality of life, manage population growth and create new endeavors. With time, tools are less and less focused on survival.
The evolution of tools is strongly linked to “technology”: better product quality, more variety and quantity. This progress is not linear. It's accelerating. Ray Kurzweil wrote about this in The Age of Spiritual Machines, where he described the “law of accelerating returns”: each step up makes the next step closer (For instance, X-rays paved the ways for many medical breakthroughs).
Industrialization was an important step on production of tools. It brought :
- standard quality
- repeatable processes
All these to produce items in industrial quantity. So some items became something we called commodity.
Commodity is a significant concept. A product becomes a commodity when its quality becomes predictable, repeatable, and it fulfills a common need. Let's take pens, paper or clippers as example. Nobody care about their brand. We need them to be cheap and predictable. Cost efficiency is essential. Imagine the cost of a clipper handcrafted by a blacksmith. That would be a luxury product. And the ROI of this product would be irrelevant: nobody would use it. So our quality of life would be affected (what’s life without clippers? HELL).
In the 19th century, industrialization took over manufacturing. Machinery started replacing most of the human work force. This evolution was driven by the engine replacing the human and animal muscle. During the last decades, computers have been revolutionizing work by replacing humans for intellectual tasks. At first, people delegated simple and repetitive tasks: computation, accounting, price comparison, long-term memory, etc. As the technology moved forward, we started using it for more complex stuff, mapping increasingly convoluted workflows, networking communications.
Now it’s time to delegate more complicated tasks like image recognition, translation or have systems play Go. This is it: as engines industrialized muscle, computers industrialize brains. We are commoditizing of intellectual services.
So now let’s talk about developers.
A software developer’s day to day job is writing code. Modeling specific processes in software, creating tools to industrialize intellectual services, improving value creation and processes to leverage money. With a nice ROI. This is why developer-managed companies became so successful: Microsoft, Apple, Google, Uber, Facebook, etc. They industrialized intellectual services, disrupted markets where brainpower was only human powered, non-scalable and unfocused. This is why Marc Andreessen said that « software is eating the world ».
The industrial revolution of intellectual services is here, and developers like you and me are at the heart of it.
This professional evolution leads to a new way of producing software: more fluent, able to adapt the “brain power tool” faster, in a competitive market. Quickly adapting software makes for adapting businesses. It brings a huge advantage over the competition. The job of a developer must focus on short and continuous delivery, to compete in that market. This leads to a specialization of developers in various combinations of skills and tasks.
Some will go for low level systems. Others, on higher abstraction levels, will manage data or create data pipelining related to core business. That's why “developer” is more of a skill among others specialties, like banking, insurance or food, or people knowing how to model the process in a business domain, optimize and adapt it in a short time.
This is why we need to push forward efficient software factories, from dev to QA to hosting and production. Greatly reducing human and process costs to ship new software will give a decisive competitive edge.
This is why continuous delivery is now necessary.
Because it is driving competition between companies. Because it is reducing cost and time to deliver new software. Because it's providing the finest brain power at exactly the right time, and more important, ahead of others in the market.
The major change in company organization in the last few years is a pivot point. IT services evolved from being a cost center to being a company’s core, with software running the largest part of the business. It is becoming the biggest part of a company’s valuation. As developers, our role is to maintain this core and to make it evolve. We need to bring organisations to the next level, understand market and business logic, and deliver updates to all industrialized intellectual services.