I started programming when I was old enough to reach the keyboard. Typing BASIC listings out of the backs of computer magazines into the family Apple IIe so I could play games before the Internet or even hard drives were a thing. And then realising I could modify the game to my advantage by changing the code. And shortly thereafter realising I liked the manipulation more than I liked the games.
That started me on a 30 year fascination with computing. Computers are stunningly obedient machines with very precise rules. The perfect environment in which to apply logic ruthlessly. Every problem I came across I could solve by programming. Cataloging the home CD collection. Solving the solitaire marble game. Wowing my teachers and playing tricks on my friends. I programmed all through high school, picking up new languages and technologies like they were pasta varieties. At university I ran a software side business, selling solutions around the world. Winning a national Apple award took me to the World Wide Developer Conference on scholarship for several years in a row and on an international speaking tour. I routinely rank in the top 5% of global programming competitions, for whatever that’s worth. I’ve never met a new programming paradigm that I couldn’t develop formidable ability in, given a few month’s study. It’s an immensely addictive mental pursuit.
All this chest beating serves to explain my biases, and provide context for what happened next.
I picked up a real job after my first year of uni and was immediately useful, working in a Research & Development team that I was too naive to realise was actually a programming team with a business friendly name. Eventually the R&D team were tasked more and more with writing software for business and less and less with writing software for users. The problem solving was more about how to prevent house of card business systems from destroying themselves, than it was about creating algorithms to reveal new scientific data insights or about delicately orchestrating precious computing resources into performing amazing feats of timing and control. It was time for a change.
I was studying an electrical engineering degree and it soon became my greater passion. So much so that I began to hide my abilities as a programmer, in order to be considered for engineering roles. Programming seemed so artificial, so impotent, so ideal compared to engineering. In engineering I had to contend with the world - not everything was a one or a zero, sometimes material properties changed, people were fallible and things break. This was a challenge worthy of pursuit. To pursue an engineering degree, provided one doesn’t let their schooling interfere with their education and manages to absorb a little economics and a little anthropology, is to come to realise an awful lot about how the world works.
Programming a computer, as Steve Jobs put it, is like giving the mind a bicycle. It’s an incredible tool for leveraging the power of thought, figuratively speaking. In engineering we get to invent bicycles. Tools that literally leverage the world around us. On a computer you can move numbers with staggering dexterity. With engineering, you can move the earth. As Archimedes put it, all you need is a lever and a fulcrum big enough.
The programming industry has created a self-fulfilling prophecy that implies every world problem has a software solution.
The more I fell in love with engineering, the move I fell out of love with programming. And career programmers. There are many programmers who appreciate humanity, pragmatism, and have some perspective on the impact of their craft, but the industry and the influential narrative is dominated by those that don’t. The programming industry has created a self-fulfilling prophecy that implies every world problem has a software solution. If only we could add more software (and less humans) the job would be done. The industry has even managed to co-opt the term “engineering”, with most new businesses referring to their programmers as the engineering team. As many senior programmers admit, most programming has very little to do with engineering. Programming doesn’t have physics. Without physics, there is no engineering. Language evolves, so lamenting metonymy is largely worthless in the long run. But at present, there’s an important distinction between engineering, and teams of programmers in darkened rooms making web pages for stunningly obedient machines with very precise rules. Both are complex, worthy undertakings, but one has the soft edges of humanity and the frailty of the physical world as a central consideration, while the other is carefully constructed to be largely abstracted from such unpredictabilities.
More insidiously, the programming industry has even managed to convince a great deal of people that coding is the new literacy. This is an evil proposition, leveraging ignorance and motivating by fear. No one comes to understand the world around them by studying code listings. No one avoids persecution, or learns to identify scams and charlatans, or comes to grips with cause and effect by learning programming. To pretend that language literacy, financial literacy, logical literacy, numeracy and scientific literacy are on par with the craft of programming is hyperbole turned hubris. It is flawed on two counts:
- the impact of basic programming competence on an effectively educated population in society is insignificant compared to language, science and mathematics; and
- unlike learning to write a letter or read one's tax assessment, being an effective programmer is a deep, complex craft that takes a particular aptitude and many years of investment.
As is often the cause, the source of this ridiculous yet effective campaign to equate programming with literacy can be tracked by following the money - programmers are highly paid and highly in demand. This faux-noble campaign is simply about increasing supply and lowering the bar for entry. The more programming becomes democratised, the lower the expectations of the trade and the less the premium that effective programmers can command. It’s a classic race to the bottom.
This article so far could be dismissed as a rant from a curmudgeon, if there were not grave implications for the world in which we inhabit. You can start to see the implications in the meeting rooms of humble teams, looking to implement technology and improve their processes. "We have a problem with theft" or "attendance" or "transport" or "engagement", or any manner of real world issues. The slick order of the software world is alluring to many, so much so that these conversations too often end with one well-meaning utterance: "there's an app for that!". Having solved the problem with software, it’s on to the next item of business. And so the software is implemented to solve what is a process or people problem. One of three things then happen:
- no one uses the software, since the user sees no benefit and the status quo is both easier and more familiar;
- people adopt the software under duress, productivity goes down because those great drivers of efficiency - habit and competence, are thwarted by software that requires unnatural action;
- someone does the hard yards on understanding the root causes and messy human systems, creates interfaces that suit the operators and the environment, designs processes that appeal, and monitors the uptake. The situation gets better, a case study is written and software goes on to save the world again.
There’s nothing particularly grave about that situation though. What is grave, is when the idolisation of software threatens matters of life and death. Nowhere is the inhumane worship of software more apparent than in the race to build the autonomous car. PR is important for any business, but the outlandish claims of the impending superiority of autonomous car software has surpassed the goals of advertising and entered the realm of reality distortion.
The relentless promotion of artificial intelligence as a panacea for human shortcomings has not only captured the hearts and minds of laypeople, it has created megalomaniacs out of programmers and their leaders. IBM’s Watson, which rose to fame winning the TV game show Jeopardy, become the most hyped medical AI in the world. Watson has since had their damaging claims of transformative medical diagnosis tragically discredited. But outside the niche world of medicine, companies like Uber continue to operate autonomous vehicles on public roads with social license. Programmers, who have cut their teeth on websites and smartphone apps, are pulling all-nighters to deploy software that puts humans in situations they have never comprehended. The subservience we’ve rendered to software has granted acceptance of a safety-disabled vehicle that tests algorithms by killing pedestrians.
When Uber were accused of negligence, the regulators found the pedestrian and safety driver at fault. The psychologists who have shown that the driver was humanly-incapable of completing the task at hand were dismissed. What reigned supreme was the irreproachable precision of software. This unfortunate incident was just an edge case, for which the machine just needs more training. As if safely driving was not just an unending series of edge cases. As if artificial intelligence ever has a mathematical hope of dealing with edge cases.
Putting programming on a pedestal has allowed us to take a breath. To adore a higher power and release us from inadequacy. As any theologian will tell you, these are powerful motivators. As a lifelong admirer of logic and computation I deeply recognise the appeal. My hope is that our days of worship of computation as a substitute rather than an aid to humanity are short lived. Enduring human progress has always come with an appreciation of the human condition. We are a physical species and we require physical interaction to thrive. I look forward to the day when we idolise human flourishing rather than artificial replicas. A day when the craft of programming is considered fantastic but not fantasised. When we acknowledge that the problems of the world are world problems, with blurry edges and bendy levers, with blood and bones to contend with. That humans are the cause, and the solution, to humanity’s challenges.