Should Everyone Learn to Code?

Naven Prasad
6 min readMay 7, 2019

A Critical Look into the Most Important But Deficient Skill in the 21st Century

TL;DR

If you have been reading my work, it’s probably because you care about the topics I write about. You read because you believe I may have some important insights from my domain of expertise (Technology), that you could benefit from. I do not possess a degree in English or Mass Communication, nor do I consider communication to be my primary know-how. But I am able to provide value through my writings because communication is a critical and complementary skill to my domain expertise. Most domain experts have this as a secondary skill, learnt through formal education, and hence, the world derives a lot of value from it. Imagine a world where scientists, mathematicians, doctors and social workers can’t explain their findings in writing. That would be a big loss to the world, wouldn’t it?
That’s how I feel about this question of whether everyone should learn how to code. Just how everyone should be able to communicate ideas through studying English, I believe, everyone should be able to automate and amplify ideas through learning how to code. The effectivity of most, if not all, domains of expertise can be greatly increased if everyone had the ability to code.

Programming vs Software Engineering

I am often confronted with this idea, that, if everyone needs to learn to code, then the world will be filled with app developers and not enough doctors and lawyers. The problem with this argument is that it lacks an important distinction between programming and software engineering.

Programming, in layman’s terms, is the ability to define a thought process to a computer is a logical manner. A computer is fundamentally a more powerful, information processing unit than the human brain. If instructions are defined well enough, a computer can repeat executions many more times than the human brain could, hold more information that the human brain could, and perform the execution of the thought process, like calculations, faster and more accurately than the human brain could. It’s like having a second brain, which is faster, able to hold more information and perform complex thought processes. Programming is the process of formalizing ideas, much like how mathematical formulas are currently used in many domains.

Software engineering, however, is the ability to take a program, package it and scale it for the adoption of the masses. This is the app and infrastructure-making process. All software engineers need to be programmers, but not all programmers need to be software engineers. The same way how all journalists need to be able to write, but not all people who need to write need to also understand journalism.

Do we need more software engineers? Absolutely, in the current economy. Should everyone be a software engineer? No. Should everyone know how to use this second brain through programming? Of course. It will be ill-advised to assume otherwise.

The True Value of Programming

As our species progress, the problems that we need to collectively solve gets more and more complex. In the dawn of the Human race, we were a species incapable of surviving the wild and forming civilizations, but we did it anyway because we were able to take our physical limitation and make it irrelevant through the invention of machines. We invented shotguns to make up for our lack of claws to defend against large animals, we invented cranes to help lift weighty boulders to make up for our feeble biceps, and we invented Teslas to help us travel further and faster than our legs can handle. The problems of the past were solved by overcoming our physical boundaries with machines, with our biological brains playing a critical role in our ingenuity. The brain is able to spot patterns, like how levers can lift heavy items as the fulcrum is adjusted, and make deductions to solve problems, like using that pattern in lifting things. Pattern recognition is the reason we survived.

Fast forward to 2019, the problems we face require a level of information processing that our monkey-brain could not handle. Most advances in medicine, economics, policy making, public safety and astronomy, which are fields where computers were not used until recently, came from crunching data through repeated thought processes. We are reaching a point in civilization where the most critical problems are no longer obvious to our limited brains.

And then there’s this question.

“Let say I’m a doctor, and I have a hunch about curing cancer by identifying patterns in cancer cell growth. I can just hire a programmer to help me write the program to do that, right?”

Well, yeah. Technically you can. The same way how you can hire an English graduate to help you write your research paper. But you don’t, because it is expensive, slow and the English major might get things wrong in the process of you explaining it to him. Progress in medicine will be really slow if all the research papers published need to be written by an English graduate right?

That’s how much efficiency in progress we’re leaving on the table with the current state of programming know-how.

The Laggard Education System

Well, this might as well be the gist of my argument, on whether programming should be a critical element of our education system, in primary and secondary schools. I mean, that is how people learn the things they should right? In school.

Now before I share my thoughts on this, let’s for a moment, understand what the formal education system does. Primary and secondary education, especially in Malaysia, is not a process to make you useful in adulthood. It if was, things like financial education, health and civics will be the major subjects. Its goals in the 21st Century is to produce an artificial funnel in which it measures obedience, and that metric is used to send you to good universities where you are then awarded for more obedience, upon completion of which, you join most companies which look for… Obedience. Think about it, the person who scores the highest in class is often the one who had the “discipline” to memorize useless facts and score a perfect set of 10 As in a variety of fields from Biology to History all while not knowing what Crispr and the ICJ are.

The thing about introducing programming is, if it is taught and measured in the same way all these other subjects are, it will be utterly useless, as you will have a bunch of kids who have had memorised programming syntaxes but not know how to use them. This is why you even have postgraduate and PhD candidates in Computer Science who can’t code in the present day. The best way I believe to teach this, sticking to its essence, is to teach with online lectures and measure the performance of the students based on the quality of the problem they solve with their skills. It will be an outlet for creativity and logical thinking. We will have a blank slate to design a modern subject with this.

Now is this going to happen anytime soon in Malaysia? Definitely not with the way things are going. Certainly not with the current Education Minister who lacks focus. They will probably create a memorization heavy math textbook, slap the words “Computational Thinking” on it and call it a day. Oh they have already done that? Damn.

In Closing

I know I left out a lot of segments in this analysis, I am trying to keep my 5-minute average read time in this article. I will present my arguments on how even the most fringe occupations like musicians and artists will need programming based on economic trends.
I plan to make a series out of this, exploring in depth the philosophy, economics and the how-to of achieving the goal of programming education.

So if you found this useful, please give me a clap. If you disagree on some of my points, leave a comment.

--

--