For years we’ve thought that despite a growing number of jobs being displaced by advancements in emerging technologies like general AI and machine learning, one crucial profession will remain untouched: software engineering. In theory, this line of thinking seems to be on par, after all, these individuals are the ones creating these sets of innovation, why would they create something so transformative that their jobs themselves hang in the balance?
To better understand this risk facing software engineers, we must first understand the fundamentals of computer science.
Fundamental Origin of Programming
Looking back at arguably the first truly transformative computer, the IBM Model 5150, we can see clear traces of its true purpose: to automate the very simple, yet tedious human task of mathematical calculation. And in that era, the computer completed its calculations, not necessarily at the speed of fiber optic connection, but fast enough to function as a noticeably useful office tool. As both time and the attention surrounding the development of computer interfaces has progressed, the technology powering these machines, has turned ever-so powerful. Instead of making simple calculations using machines half the size of a Subaru, computers are now able to relay information from across the globe in a matter of seconds, all while functioning in a machine designed to fit inside of a pocket.
Despite the many positives in this, what this has taken away from, is the fundamental understanding of the communication between man and machine.
What I am trying to get at, is the center idea of programing: turning something humanly-generated into something digital, by giving a machine a set of instructions, formatted in a language it can understand.
Lets look an example in foreign travel. Imagine getting off of a plane in a country completely foreign to you: you are not familiar with any form of the local language or commonly used signals. Merely the thought of this is intimidating enough, however, what’s truly anxiety provoking is the thought of being told instructions by a foreign speaker in this environment. It seems clear to anyone with common sense that this is impossible with just the parameters described above.
Looking away from the distraction of this example, we can see the basis for why this interaction was unsuccessful: the information one of the two participants was trying to relay was not done so in the correct fashion(translated to the correct language). As stated above, this is much the same principal that has formed the cornerstone of computer science.
Toddlers and Computers
Applying this to an arguably more topic relatable idea, is the example of language knowledge in toddlers. As many can understand, most, if not all toddlers, are able to speak proficiently in their native language. They are able to throughly communicate basic ideas in order for something to be done. What’s not as noticed in this stage of youth development however, is the language arts deficiency in this age demographic. As many can quickly uncover, children in this age group can quickly pick up on verbal signals or commands given by adults, but lack the skill to read or write what has just been asked of them. Analyzing this thought through the correct lens, one is able to see fascinating connections to the functionality of computers.
Just like the toddler example, computers are proficient in following given instructions, however not in creating these instructions themselves.
Now some may argue that this merely incorrect, and solved by the function of machine learning, however these programs don’t generate general and specific code on demand, these programs only revamp existing code in extremely topic specific regions. Imagine an environment in which a computer can be told what to create, not in any computer specific language, and generating the code necessary to complete the assigned task.
In order to further conceptualize this idea, imagine looking at a series of images depicting different stereotypical home styles. Now, after you have digested all the content on the cards, you are asked to design your own home using a hybrid of two styles displayed in the photos. Many developed humans are able to complete this qualitative task with ease. When applied to computers, however, this degree of difficulty increases by several orders of magnitude. And only until recently has this task been partially overcome in a digital setting, through the use of select generative software. Although this software is truly ground-breaking, many limitations exist regarding the certain inputs these algorithms can take.
Machine Learning 101
For those of you who don’t know, machine learning is the branch of AI which utilizes mathematic and statistical modeling algorithms to take a given input, and curate a certain output. The correctness of this output is evaluated and the program reconfigured.
Despite recent the publicity swarm surrounding AI, the technology, did not truly catch fire until nearly fifty years after its inception.
Imagine a world wherein computers could be told purely what apps on an online marketplace are considered to be ‘trending’, and curate somewhat of a vectorized list of the certain, similar attributes present in all of these apps. The computers could then, after being given a number of parameters, create an analytically valid app with completely autonomous development.
I am excited to see where the various applications of this technology will lead us and how fast we will move. A stream of computers being able to program themselves, what could go wrong?