Coding is the new driving

It used to be that you needed four years of a specialized education culminating in an engineering degree to work with computers. There were self-taught programmers, but few.

These days, so many organizations are starting up to teach you how to code without needing to learn computer science fundamentals. Do you really need to know computer architecture or how operating systems work or how to write a sorting algorithm efficiently to write code. Over the years, enough building blocks have been put in place that abstract away the messy parts — memory management, compiler efficiency, cloud infrastructure, etc. — and gives you a clean driver’s seat with a steering wheel, rearview mirrors, a gear shift, some pedals, etc.

Automobiles went through a similar phase, being far more complex to operate than today. You had to hand-crank to turn one on, and fiddle around with spark levers to time the firing of spark plugs so the engine would run smoothly depending on the speed of the car or whether it was on a hill or not, etc. Even 30-40 years ago cars had carburetors and you had to know how to operate the choke. If the car stalled suddenly, you had to understand the internals to “debug” it. A view into the frontier days of driving:

Over the years, automobile technology improved and operating one got easier. With that (and with lower costs), it got ubiquitous. A very large number of people today can operate a modern car much more effectively, know far less about the internals, than their peers a century or so ago.

Programming a computer is going to go the same way. The amount of technical understanding you need to code is reducing every month. You don’t even need to write code to program in many cases — Lego Mindstorm is a toy robot you can instruct by dragging and dropping some boxes and lines in a GUI. The most impactful technologies start out looking like toys.

As software eats the world, more and more people will find their work centered around getting a computer to do a large part of it. Some obvious examples include designers, accountants, video production, etc.

Tools like ifttt.com expand the programmability of existing apps to a large extent, but it suffers from being slapped onto an app after the it is built rather than that programmability being considered at the design phase. The main reason why spreadsheet software has become so ubiquitous is that it allows operations on tabular data to be created without needing to write code.

We should be re-thinking all interfaces to be more like building blocks.