Codiga has joined Datadog!

Read the Blog·

Interested in our Static Analysis?

Sign up
← All posts
Julien Delange Wednesday, September 15, 2021

Software. Farming. Productivity

Share

AUTHOR

Julien Delange, Founder and CEO

Julien is the CEO of Codiga. Before starting Codiga, Julien was a software engineer at Twitter and Amazon Web Services.

Julien has a PhD in computer science from Universite Pierre et Marie Curie in Paris, France.

See all articles

Does software engineering need the same productivity gains as farming centuries ago?

Food production did not grow exponentially by hiring more farmers but by increasing productivity. The same will happen to software engineering.

Farmer working with a tractor

I grew up in the rural part of France, where cows outpace humans in residency share. My neighbors came from a long-lasting family of farmers but were not farmers themselves. Over a few decades, as productivity increased, farms no longer needed dozens of workers and people turned to white-collar jobs.

Over the last centuries, we have seen multiple industrial revolutions increasing productivity in almost every activity. You probably already heard the story: a new industry needs a lot of workers to initially develop. As it evolves, productivity gains remove the need for more workers. We have seen this pattern with transportation (we are going faster than ever and technically need only one pilot to fly 800+ people), farming (farming population decrease almost 40 times in hundred years — a farm only needs few workers to operate), or manufacturing (machines automate a significant part of the work humans used to do).

The example of farming

The industrial revolution of the 17th and 18th centuries increased productivity with new tools but it’s only in the late 19th century that manual labor was removed, thanks to the discovery of the combustion engine. This invention replaced manual labor very quickly: in less than a year, the share of the farm population decreased from 40% to less than 5%. These productivity gains also impacted cost and food was becoming more affordable.

Farming productivity

These revolutions were needed to produce more food for an ever-increasing population (in the 20th century, the U.S. population increased by more than four times, growing from 76M in 1900 to 281M in 2000).

And without these technological improvements (and without considering any other technological improvements), we would have about 40M of farmworkers today, 20 times the current number.

The reality: it is only through automation and not by hiring more farmers that we managed to satisfy an ever-increasing demand.

Software will follow the same trend

The Andreessen prophecy “Software is eating the world” has been fulfilled: software is everywhere. In just a few decades, your car went from being controlled fully mechanically to being operated by dozens of computers (this is common to have more than 50 Electronic Control Unit (ECU) in a luxury car today). Your smart TV connects to the Internet for streaming programs and your lightbulbs operate by voice.

There is an ever-growing demand for software developers: the U.S. Department of Labor estimates that we are going to need 22% more software developers in the next ten years (source) and some estimates that the number of software engineers in the world will almost double in ten years (source). This growth is not going to be only about developers but every single job involved with producing, selling, or supporting any product that involves software.

Like farmers before the second industrial revolution, we satisfy the growth of an ever-growing demand by hiring more workers. But the real breakthrough will come from automation.

What will happen to software engineering?

Compared to farming, our 60 years old software industry is still in its infancy phase. But it’s growing quickly and we cannot train and hire fast enough (which is why software engineers are paid more than twice the average salary — source).

As with farming, we will not produce software faster by hiring more developers but with tools and automation.

We need to standardize the software stack to simplify how we develop software. Good examples are Docker/Kubernetes (standardization of how applications are deployed), Javascript (programming languages that can be used to implement frontend, backend, ML applications), or even cloud platforms (AWS, GCP, Azure). The recent push for web-based IDE (with platforms such as Gitpod or Codespaces) is also standardizing the developer environment by bringing it into the cloud. More standardization means less friction to develop and deploy software.

We also need to have more tools that increase developers' productivity, and eventually automate software production. The former is a reality today (with tools such as Tabnine or Codiga) while the latter will take more than 10 years to produce meaningful results (with Codex or GitHub CoPilot). Other approaches such as low-code and no-code products also reduce friction to produce software and will certainly participate in increasing productivity from software development.

Nobody knows the future. As of today, it seems unrealistic to imagine that the demand for software will be satisfied solely by hiring more engineers. The number of engineers will keep growing for the years to come but ultimately, we need solutions to increase productivity in the software industry. And who knows, maybe the job of Software Engineer will no longer exist in few centuries.

Sources

Are you interested in Datadog Static Analysis?

Sign up