One of the hottest topics towards the end of 2016 has been AI and automation taking over jobs that humans are now doing. Discussion has been centered around blue collar jobs, jobs that require lower level of skill. General consensus is, that while not impervious to it, white collar jobs won’t be changing any time soon and certainly impacts will not be as great. I’m not sure that’s really the case, especially for those that write code for living. Interestingly enough, current trends in education and “modern” software development practices will be the driving force behind this happening quicker than we expect. Writing code, as a solitary skill, will have very little value in the future. Coding will be the new multiplication tables: everyone will know it, use it occasionally, but no one will be making a living doing it.
There is a separate, ongoing debate around value of formal education. Some argue that in the age when you can learn anything online, there is no need for schools and expensive degrees. In that spirit, over the past few years, code academies, coding boot camps, “<insert name of group> code” type of organizations seem to be popping up everywhere. Some of these are for profit, others are community organizations aimed at getting particular demographics interested in technology. Most of these programs are structured to be result-driven; in the first lesson or two you will be writing your first “Hello World” program. Idea being, that if students see results quickly, coding is demystified, it lowers the barrier to entry and keeps students engaged.
What is conspicuously missing from most of these programs is the theory behind the code that is being written. The teaching methodology is along the lines of: “if you want your code to do this, write this”, approach similar to many on-the-job training programs. Programming theory, structures and logic are not sexy, as a matter of fact some may even see them as waste of time, but they are incredibly important. Skipping the theory is analog to civil engineers and architects designing and starting to build a building without being sure that it will stay upright when they are done. Clearly, formal schools are not the only place where you can get this kind of education, but they seem to be the only places that are still trying to teach it and have a way to fit that knowledge in the greater picture.
What is this have to do with AI? Well, with an incomplete knowledge, the whole skill set of a coder is: “write this code, if you want to accomplish that”. Problem is, that if you think about it, that whole “skill set” can be replaced with an IF statement in a more intelligent machine. “If presented with this problem, use this library” is something that is trivial for a machine to do.
This coder syndrome is not just limited to those that learned how to code at a boot camp; even those with formal education are regressing and not using what they learned. In part that is due to and environments where software development happens. Rapid development and short time to market is valued and encouraged by startups that are hungry for results. Quick iterations of questionable code that is being constantly fixed is preferred over proper engineering. This is so popular that its catching on in larger corporations. Companies that use development methodologies like Agile contribute to the problem: focus is on delivering results and iterating quickly. Success is measured by number of stories completed and lines of code written, while giving little to no value to proper software engineering and efficient solutions.
The reality is that today very few people still actually write code. Building an application is more like building something from Legos. Most of the code is reused – in the form of libraries, copied and pasted from previous projects or from Stack Overflow – app developer’s focus is generally on writing the “glue” to hold everything together. More popular, library-rich languages like NodeJS and Python encourage this. In large, most applications in these languages pass values between various library functions until they get the desired result. Don’t get me wrong, this is not bad, not by any means. If someone took the time to solve a specific problem and that solution works well, it makes no sense to solve it again unless you have a way to improve on it. It’s the natural progression that every industry goes through.
The question is however, why do we need humans involved in stitching these existing solutions in to an application?
Very soon, I don’t think that we will. Humans will be involved in creating applications for long time to come, but most likely only in the capacity of an architect and a very different set of skills will be required. Human will still need to define the problem, specify the desired outcomes and verify the results. AI will write, optimize and test the actual code. There will still be times when a new and a creative solution will be needed for something that’s never been encountered before. In cases like those, an architect and AI will work together to create a new solution – architect will provide the creative part of the solution while AI implements it. In order to succeed in this, an architect will not only have to know programming structures, theory and logic but also understand how AI works – its capabilities and limitations. This is a very different, much deeper set of skills, and in most cases far beyond what is needed today to be considered a software developer.
Learning to code camps and organizations are great, but they should be used as a tool to encourage curiosity, focus more on the behind-the-scenes magic that makes it all work and de-emphasize actual code writing, keeping in mind that this will become something very trivial in the years to come. The technologies that will shape our future 10 years from now most likely don’t exist yet or at the very least haven’t hit the mainstream. For the next couple of generations, humanity will have a bumpy ride as we learn to live and work along the side of very capable machines. The only way to prepare is to learn as much as possible and embrace the fact what you are doing today to make a living, no matter what it is, will likely become very different or completely irrelevant in the next decade or so.