A popular anecdote states that Henry Ford paid his assembly line workers a good wage so they could afford to buy their own company’s cars. Although the reasoning for this decision has been questioned, there is no doubt that this move helped establish and sustain the American middle class through its 20th century heyday.
A century later, the employment landscape has changed. The Industrial Age has given way to the Digital Age. While increased globalization and automation have reduced the quantity and perceived value of manufacturing jobs, the information technology industry has experienced spectacular growth.
As demand for software has grown exponentially, the pool of software engineers has not kept pace. Code.org states that by 2020, there will be one million more software engineering jobs than developers.
Even today, the Silicon Valley job market thrives and the startup-cum-conglomerates driving the digital economy are starved for software engineering talent. Top programmers have personal agents and command tremendous salaries. There is no question that times are great for software developers.
Leaders of the software industry must invest in opening the field of software engineering to a wider population of workers.
In a recent open letter on the digital revolution, a number of economic and technological leaders — including Erik Brynjolfsson and Andy McAfee of MIT — highlighted the necessity for educational reform and research, but also called out the need for “broad-based opportunity” and “inclusive prosperity”.
Given the privileged economic position of those who control the software industry, it is unlikely that this change will happen organically. A conscious effort is needed to improve “Software Engineering Accessibility,” to bring about a “SEA change” in the industry.
The Great Decoupling
In the rest of the economy, it is a very different picture. This is reflected in the relationship between job growth and labor productivity. From the mid-20th century to the year 2000, jobs and productivity grew together.
After 2000, productivity continued to grow according to historical trends, but employment numbers flattened out according to a study by Brynjolfsson and McAfee. They call this phenomenon the “great decoupling.” This has been attributed to increasingly sophisticated human tasks being replaced by software.
Furthermore, there are claims that 47 percent of existing jobs could be eliminated through computerization. This productivity growth temporarily benefits consumers, but — going back to the false Ford anecdote — where will those consumers come from when household incomes are being negatively impacted by stagnating employment opportunities?
This dichotomy in growth between the software industry and the rest of the economy is not an anomaly. It will not correct itself and it stands to reason that the productivity/employment growth gap will widen more quickly as the Digital Age enters the Internet of Things era.
If Ford’s “$5 day” was actually put in place to stabilize his company’s workforce, what steps can be taken to do the same in today’s economy? The solution could be delivered by addressing the converse issue: the shortage of software developers.
Digital Literacy And Inclusive Prosperity
The first thing that springs to mind when looking to address this developer shortfall is the need for better and more inclusive technological education. Increased digital literacy is a societal need, as well as an economic one, so reform is needed in educational policy and practice to plant software development seeds as early as possible.
There are a number of great efforts happening in this area, but they will not be sufficient to open the software engineering field to a wider group of workers. If educational reform is the “faster horse” that Ford’s contemporaries envisioned (taken from another myth), what are the inventive approaches that can address this need?
Modularity: The Digital Division Of Labor
Before the introduction of the $5 Day, Henry Ford had already made a massive contribution to the Industrial Age by institutionalizing the assembly line in his factories. Before introducing this division of labor, automobile manufacturing was an inefficient process requiring a high level of expertise.
Almost 50 years after Margaret Hamilton introduced the term “software engineering”, the software industry is still striving for greater efficiency and starving for skills. Is a “software assembly line” the answer to making software development more accessible? Although previous attempts to take the assembly line approach to software engineering have largely been unsuccessful, the “division of labor” analogy is useful.
In his superb 2009 book The Nature of Technology, W. Brian Arthur states that “Modularity … is to a technological economy what the division of labor is to a manufacturing one.” Modularity has appeared and evolved in all areas and eras of software development, from procedures to objects to programmatic APIs available in modern software development kits.
I have spent the last several years immersed in web APIs — which make modularity possible over a distributed network — and have followed the recent rise of the microservices movement that takes this a step further, creating software systems made up entirely of isolated modules that only communicate over a distributed network. All of these approaches have helped drive more efficiency in software engineering.
How can these efficiency gains driven by modularity help to grow the overall population of software developers? The “Developer Experience” (DX) movement, which started in the last decade, has been popularized by the web API development paradigm. This movement employs User Experience (UX) principles when building products aimed at developers. The DX mindset can be extrapolated to the field of software engineering as a whole.
Increased digital literacy is a societal need, as well as an economic one.
How can the software industry deliver a stronger DX? In the world of web APIs, this is accomplished through well-designed APIs, strong documentation and development utilities that help speed up coding and testing. These can be generalized for software development into three categories: building blocks, instructions and tools.
Given these starting points, it is hoped that many more individuals could become productive software engineers, much the same way LEGO has turned millions of children into toy makers and IKEA has made millions of homeowners into furniture makers.
Digital Opportunities Abound
The world is full of entrepreneurs looking to found the next software unicorn, but the Silicon Valley startup cabal is extractive. Henry Ford once said, “A business that makes nothing but money is a poor business.” Similarly, an economy with few people to build it will become a poor economy.
I believe that increased modularity — through building blocks, instructions and tools — will help make the software development field more accessible. However, it is only a starting point.
To enact the change needed to restore inclusive prosperity to 20th century levels, the leaders of the software industry must invest in opening the field of software engineering to a wider population of workers. In so doing, we can combine with reforms in economic policy and education to renew job growth and create a virtuous circle for the Digital Age.