How many programmers does the planet need?

What do you really know about C#, Java, Ruby, PHP, Python, Perl, Node.js, Haskell, Go, D or R? Do you understand the difference between Java and Javascript? Have you ever scripted a computer? Can you write code? Are you a nerd?

It has become fashionable in some quarters to poke fun at non-technical people, especially non-technical business leaders. Nerds and digital natives may or may not be in the ascendancy, but it’s childish to keep reminding everyone of this.

When prehistoric man first picked up a bone and used it to crack open the skull of an antelope, no doubt there were some who were so entranced by their new tool that they poked fun at those dimwits who had not yet seen the light. Tools are our trade. The software programming languages listed above are some of the tools by which the computerized world around us has been constructed.

How many programmers does the planet need? And what does it mean to have digital skills?

An IDC study has estimated that there were 29 million ICT-skilled workers in the world at the beginning of 2014, including 11 million professional developers. There are perhaps another 7.5 million hobbyist coders. There are more than 7 billion people on the planet. Do we need more programmers? I contend that this is the wrong way to think about this.

Technical skills have a long tail. And what is technical to one person may be routine or mundane to another.

Journalists able to use a blogging platform and to XML-tag a database of research may think of themselves as technical when they first discover these tools. They would not, however, be regarded as technical by a professional programmer developing a complex SQL script. Nor would the SQL programmer be regarded as especially technical by a specialist optimizing the kernel of a compiler, the software program that converts high-level languages (such as those listed above) into the very different low-level instructions to run on an actual computer. There are wheels within wheels. Before those instructions can run, another technical person must write something called a virtual machine or byte code interpreter that sits just above the level of the physical computer devices.

Technical skills lie on a spectrum. There are no nerds and non-nerds.

dawnofman

What is a tool?

In systems theory, a tool is the device that acts on a subject in the presence of an actor to achieve an outcome. By division of labor, different skills are assembled using different tools to get larger jobs done. There are only 11 million professional programmers able to use the programming languages listed above to develop complex applications. Yet a copy of Excel sits on every corporate PC. The skills that developed VisiCalc, the world’s first spreadsheet program, are far rarer than those that enable us to use spreadsheets to perform complex calculations.

VisiCalc inspired Lotus 123, a similar program on the first IBM PC. These tools put control over modelling and predictions into the hands of decision makers, not programmers. Today, Excel is one of the most popular tools on the planet. Programmers can be naive about how business works. They can live in tech-bubbles. Tools like Excel may be looked down upon, but they allow people to circumvent official software and just write something that works.

A couple of years ago, I attended the conference of a company called Tableau Software. It’s an interesting company I’ve tracked for years. They make tools to enable business people to analyse data and make predictions without being dependent on the technical skills of database programmers. I asked a person sitting next to me in the audience why he was attending the event. He explained that he was a doctor, a GP, and that he was using Tableau Software in surgery to analyse healthcare information. What he told me sounded like a complex task. Tableau Software, he explained, allowed him to connect to many different data sources, and its approach isolated him from the diverse data connections, data schemas and vocabularies. The doctor claimed that the tool gave him a capability not present in the official systems deployed by his health trust. To do his work, he had never needed to speak to a single person in “IT.”

We always need to be careful with the word “technical.” The doctor considered that he was doing highly technical work. Likewise, a friend of mine who is a senior forensic accountant is able to write sophisticated Excel macros. He also considers that the work he does is highly technical within the scope of his domain.

The computer has proved perhaps the most useful tool that man has invented. My first programming job, in 1978, was to develop the micro code for the floating point divide instruction. It took over 200 steps of microcode. This was indeed specialised work, but it does not justify poking fun at non-technical people. Within a few years I was using high-level programming languages such as Pascal to write compiler programs for the execution of new telecommunications protocols. This was also specialised work. My protocol compiler permitted other telecommunications specialists to do their jobs more efficiently by isolating them from the details of protocol encoding. Still further in my career, I was asked to design the operating system and services of a specialised bare-board computer system, to sit at the heart of a suite of new instrumentation tools in healthcare. This platform enabled product teams to develop many new healthcare applications that would otherwise have not been economically practical.

Tools enable the creation of new tools. We are each technical and sit in a spectrum. It is nonsense to consider one skill more important than another.

As my career developed, I chose not to remain focused and dedicated as a professional programmer. Life moves on. I sometimes regret this choice as I retain a strong interest in programming, and the thinking behind it is still in my blood. I have learnt, however, that the world is more complex than code.

appsworldIt is hard to escape Marc Andreessen’s observation that software is eating the world. We do need to teach STEM skills more widely, but not everyone has the prerequisite mathematical brain for the complex abstractions and details required of significant software development. Nor do we need them to. IDC’s figures above confirm this.

The longest and more complex software project in my career was a 5-year effort to develop ground systems for the control of communications satellites in geostationary orbit. More than 350,000 lines of new software were required. I led one-third of this effort. Was that a good thing? I content that it was not.

The state of the spacecraft control industry at the time was such that there were no common modules, no APIs, no libraries of reusable code, no layered architecture, few standards. We built everything from scratch. That is no way to run a business.

Whatever skills we have, we should all consider what we can do to provide useful tools to others. Providing a new tool is perhaps the most helpful way to boost the productivity of those around us. And that takes humble thinking about what our colleagues and clients really require. It has nothing to do with poking fun at non-technical people or creating a cultist mystique around myriad arcane programming acronyms that fill the pages of a tech-obsessed media. There is a larger world. Let’s look out.

The story of Excel teaches us that if we can provide useful tools that appeal to the many, riches will come our way. Opportunities exist in every industry segment. A solutions provider that understands the long tail of tools and the nested value of all skills, will place a large emphasis on reuse and the empowerment of others. That’s our mission here at CSC and for our clients. Productivity demands this.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: