Just a few years ago, Microsoft CEO Satya Nadella pronounced that “every company is now a software company.” Software — and software development — are now ubiquitous for the vast majority of the world’s businesses.
As more businesses work to develop their own tools and applications, the conditions in which we develop software are changing rapidly. Generative AI tools like GitHub Copilot are changing how developers work, and these changes are going to lead to significant adjustments to the ways organizations recruit, hire, and manage their engineering teams.
It can be easy to lose your bearings in this fast-changing environment. How can you build a firm foundation for your software company if that foundation is constantly shifting?
As we look at what’s next for software engineering and consider how to prepare for an uncertain future, it can be helpful to look for analogs in other industries. The first few decades of software development echoed some of the main developments in the evolution of manufacturing itself. And if we look at the history of manufacturing — an industry with a head start of more than 150 years — we can see clearly how software engineering will evolve going forward.
Tracing the evolution in manufacturing
The course of the world changed forever in 1760 with the beginning of the Industrial Revolution. In this moment, we saw a broad shift from hand production to large-scale machine manufacture of everything from textiles to metal parts to chemicals. The Industrial Revolution dramatically accelerated our progression as a society.
While many look to the mid-20th century for the earliest days of software development, we can actually trace the evolution back even further — to the invention and use of punch cards in the late 1800s. Like the Industrial Revolution, punch cards allowed us to begin using machines for data processing and the control of various machines.
We see the second parallel between manufacturing and software development with the introduction of the assembly line in the 1800s. Assembly lines — famously associated with the Ford Motor Company but deployed even earlier in the meatpacking industry — broke down manufacturing into steps that are completed in a pre-defined sequence. This repeatability made it possible to build products more quickly using less labor.
Software development experienced its own assembly line moment with the introduction of development methodologies like waterfall and agile. These approaches clearly defined the steps in which engineering teams should build, test and deploy their software, resulting in faster development times and improved reliability.
The third evolutions in manufacturing and software development saw the processes improved through highly targeted optimization. Lean manufacturing (also known as just-in-time manufacturing) was developed in Japan as a means of identifying and eliminating waste in production, which in turn improved workflows and led to faster production. In software development, we saw engineering teams achieve the same goals with DevOps — a set of tools and strategies directly inspired by Japanese companies like Toyota.
The next phase for software engineering
As software engineering is disrupted by artificial intelligence, it may seem like this is where the parallels will end. We’re entering a new era without a playbook, and organizations will need to establish their own best practices as they adapt to the new technologies.
However, even the current fourth evolution of software development can be tied to historic trends in manufacturing.
What does it mean when every company becomes a software company? It means that every employee needs to be involved in some way with the development process. From financial planning to sales and marketing to business strategy, today’s companies need to be tightly integrated around the software development process.
The fourth evolution of software development will see organizations break down silos between business units, allowing C-level executives to more easily collaborate and track progress. Integrated engineering work — informed by data — will ensure that every arm of the company is rowing in the same direction.
In manufacturing, we saw similar shifts take place in the early 1980s — as manufacturing companies rallied around specific business strategies and worked to align their operations with highly specific goals.
These manufacturers were asking themselves a simple question — how do we organize our work to achieve our business objectives? Today, engineering organizations need to be asking themselves the exact same question.
The pace of evolution for software companies will only continue to increase. Is your work helping your company reach its goals?