Tuesday, October 13, 2020

Coding Skill for Everybody

There was such time, in the not too long of a distant past of the last century, that it was thought that everybody should have a computer of their own. This was a time where the smallest computer was the size of a refrigerator. It was, of course, by the process of inference, that it was thought that everybody should have a refrigerator, and that it would prove as useful.

Another analogy can be had with a car. A very expensive device that will get you from one place to another. And that is the thing that everybody would do daily. To work, to shop, to do leisure. But isn't it true that not everybody can have a car? Still, it is the idea that everybody can have a car that is important.

Now, a refrigerator or a car is a rather complex device to build, yet so easy to operate. In fact, that is the matter of great consideration when trying to increase the adoption rate for a particular device.

Nowadays, we have extremely powerful computer no bigger than our hand. A smartphone, we call it. It wakes us up, it shops, it gives direction, it answers our most trivial whimsy. It also lets up talk to other people not in our immediate vincinity. In short, it's a miracle device, equivalent to the most powerful wizard's wand.

But is it easy to use? Yes, it is. Buttons are plenty. All you have to do is point and click. Or in sufficiently advanced technology, spoken words may be used since these devices feature voice recognition technology. So, indeed, it is very easy to use. In my cynical mind, too easy, as those accidental purchases of goods may attest.

How about creating them? Just as it is extremely difficult to create refrigerator and cars, it is exceedingly difficult to create computer programs. We have to use something called "The Command Line" to do our bidding. There, there is only dark void awaits us. A little prompt in otherwise blank screen. Nothing there helps us to prepare to use its capabilities to the fullest.

Yet, it is more powerful than ever before. You can do much more, much faster than what is posible by pressing buttons. You can even chain commands using "pipes" as data flows from one process to another. This is a very powerful and convenient way to create programs.

But nothing much came out of it for one simple reason: Very few people know what to do. It's just a simple blank screen with nothing to guide you to achieve what you want. You have to familiarize yourself to the task. That endeavor requires much learning, studying thick tomes full of arcane knowledge. 

Why would you want to spend a lot of time learning these difficult things? It would be so easy to just take the ignorant way to do things and just use the pretty icons interface. And yet, there in lies the deception of the whole thing! It's not difficult to do!

If you can imagine, little bits of icons, each doing their own little things. Each can be connected to other little icons. Give them some custom parameters in order to use them. Well, it's easy to do, right? However, it will be overwhelming once you get so many of these little icons, that you are having to keep track which icon does what. So, you write little bit of text to differentiate from one icon to another. Words emblazoned on the icons.

What I've described to you, of course, is the equivalent of kanji and roman alphabet (romaji). Kanji are notorius to learn properly. Yet, people say that drag-and-drop language is the future. Yet, here we are, sitting before our QWERTY (or DVORAK) keyboards, typing one word after another.

So, what does it take to have everybody to learn to code? The same way we learn to speak languages: Vocabulary, Grammar, Sentence structure, and the Communication of Ideas. In other words: Communication skills.

For as long as people think that in order to code a program, you need to be good at math, coding will never be a common skill. It is not the math skills you need, but the communication skill.

Learn to communicate. Learn to Code.



No comments: