Wired magazine has an interesting article on the future of coding and the increasing use of machine learning and neural networks. Many of the biggest technology companies are using machine learning to solve very complex problems. Facebook is predicting stories you might want to see in your feed, Microsoft is translating foreign languages with Skype, and Google is using neural networks to improve its search algorithm and to recognize faces in its Photos application. An important point is that programmers don’t actually write individual lines of code with machine learning. They “train” the neural networks and coach it with examples until it does what is desired. The article trumpets “The End of Code” (for click bait I guess and with capital letters no less). However the author never writes such a thing in the actual article. What is the more likely outcome of combining these fields?
Coding is a hot topic right now in education and as a profession. Our digital lives are controlled by a series of instructions that were written by someone with skills that are most likely foreign to the end user. This grants a certain insider status to those who speak it according to the Wired article. “If you control the code, you control the world,” wrote futurist Marc Goodman. More realistic is the quote by Paul Ford who said, “If coders don’t run the world, they run the things that run the world.” Fair enough I guess but these types of quotes can also feed a fear of behind left behind if you don’t know how to code. Now along comes machine learning and neural networks adding to some speculation about the future of coding. Artificial intelligence is improving based on the examples above and things like Google’s self-driving car, but a significant negative aspect is that neural networks are a black box where we can’t look under the hood. The creators of machine learning can’t tell you why something happened because they don’t know exactly how it works either. It’s just an “ocean of math” and complex formulas that they fed a lot of input in the form of photos or data. This can even lead to embarrassing results for the companies involved like Microsoft’s recent AI project, called “Tay”, where they had to pull the plug quickly. Tay started making racist remarks based on the input it was receiving from users on the Internet. However the AI was merely doing what it “learned” based on the data.
The author then quotes some people concerned about what effect AI will have on coding skills and the job market. Will coding jobs be automated out of existence? Tech publisher Tim O’Reilly is quoted as saying, “how different programming jobs would be by the time all these STEM-educated kids grow up”. It sounds more like his comment is being taken out of context. Of course programming jobs will be different in 10 years. Things have been this way since coding began. New languages and tools are constantly emerging and it’s the job of the coder to pick and choose what tools to focus on. Some languages come and go while others continue on. Swift will replace Objective-C with the push by Apple. Java has had a long run but something will eventually replace it. Increasingly even historical languages like C and C++ have more specific applications and are not used as general languages like Python with ever expanding libraries. Ultimately all programming languages are just tools and each has a specific set of applications. No one language is necessarily better than another. Think of it like a hammer and screwdriver. Both are extremely useful but are used for different purposes. So the software development field is constantly changing. There is no news here.
Some of the best comments about this article came two months later in the comments section of the magazine. One commenter, Dale Reynolds, points out that when he started at IBM 50 years ago he was told that “within 10 years my skill and training would not be required because computers would program themselves. Still waiting…” One post to the Hacker News puts it best – “No. The main job of a programmer is understanding human requirements. Machines cannot do this; the job of getting a machine to understand human requirements is programming.” Both coders and artificial intelligence researchers weigh in with their comments so it’s interesting to read the contrasts. Artificial intelligence is being used to solve big problems today. This is not applicable to smaller coding jobs like any small to medium business need or small app companies or game companies. Software developers will still be needed to translate the requirements of whatever problem is being solved and to break the problem down into understandable steps. This is no different than today or yesterday or tomorrow.
The article closes with a positive message that makes more sense about how this will probably all play out. We will most likely “come to appreciate both the power of handwritten code and the power of machine-learning algorithms to adjust it – the give and take of design and emergence.” The more like we can combine the strengths and abilities of each side of the equation the better we will be. Humans will learn from AI and vice versa. The follow up story in Wired about the best Go player in the world losing to the latest Go AI for the game discusses how we will learn and benefit from machine learning. The current STEM-educated generation will take the coding skills and knowledge they develop now to even greater heights later.