How I envision the future of Software Engineer — AI
Within 10 to 30 years in the future, I think my job would be replaced by AI. It is not entirely impossible. At least, that’s the future what I want to live in. In the next few paragraphs, I will try to elaborate my opinion. (Disclaimer: This post contains mostly my personal opinions, facts or references will be provided when necessary. so be nice with your comments. 😊 )
Think of this scenario, you would like to have an enquiry ticketing system that’s designed and implemented specifically for your business operations to improve customer enquiries handling. In the present, you probably buy an off-the-shelf software and customise it to your needs, or get a team of software engineers to build it for you.
Now, imagine that you can tell an AI about this — “Hey AI, can you help me build a ticketing system for my business where our customer can use it to submit an issue ticket, and notify our customer experience team about it so that they can respond and resolve the issue quickly.” — and within minutes or hours, without you doing anything, the AI tells you “The enquiry ticketing system is up at enquiries.company.com and the source code is available at github.com/repo.git for you to further modify it or add additional logic” and that’s what I mean by AI would replaces software engineers.
If you were to build/write the system manually, you would probably create a few SQL tables or NoSQL documents to store the data (e.g. IssueTicket), and a few validation and logics for the controller to handle CRUD operations, and expose some endpoints or UI to manipulate those data. All of this, technically, can be done automatically just providing a few information such as what kind of information you want to store (table structure, required and optional fields) and the common logics and repetitive codes for the CRUD operations would then be created for you automatically.
An example to demonstrate this is command line tools such as angular-fullstack that can automatically generate an endpoint together with its respective model and controller by just running a single command. Though you still have to manually type and execute the
yo angular-fullstack:endpoint command, it is possible to automatically call this command such as letting the AI execute this or via some sort of background task.
Another use case is frontend development such as static website. There is an existing AI application that automatically design and build a website for you by just “feeding content” to it — https://thegrid.io — I have not personally use it, as I don’t particularly need it, but this proves that AI can be applied to do frontend developer’s job. No more argument about which frontend framework is better than the other. Everyone can just feed content to the AI and it automatically builds a beautifully designed website. This is happening right now.
Essentially, this AI can help you build and implement a system given a requirement specifications as an input. This input can be a structured data (e.g. entity name and attributes, needed functions/controller/endpoint such as authentication) or natural language form such as the one I described above. We are already seeing it on the frontend development side, and there are existing tools exist today that can be used as a building block to this AI.
Why this should be the future that we should live in?
One reason is due to talent shortage, where there are more demand than supply for software engineers. This is true especially in the country that I currently reside in Singapore. One solution to this is to produce more software engineers through education institutes or short courses to help others pick up the necessary skills quickly. This solution works, but not scalable in a long run.
In the context of Singapore, on average, undergraduates takes about 3.5 to 4 years to get their computer science degree before the could join the workforce, and those that take short courses may not acquire enough experience that a company required. In this case, when the growth in demand is faster than the growth of the supply, it won’t solve the talent shortage issue.
Furthermore, salary for software engineers is increasing. Not all company has the capital to hire software engineers (especially for smaller players), even if they can, how long can they afford it? (guess it depends on how they perform financially?)
Another reason is that technologies evolve very quickly. What you learn now maybe become obsolete in 1 to 2 years time. A good example is that, 2 or 3 years ago people are into AngularJS, and now ReactJS is the popular choice among others. Previously, we can deploy a backend system into virtual machines or dedicated servers and perform horizontal or vertical scaling when necessary and move on, now we have buzzwords like containerisation and microservices. How long can human keep up with this fast pace of technological evolution such that their skills does not become obsolete or as they are aging? (think the system should automatically evolve on its own?)
With AI, I think most of these issues can be addressed. Companies could have more access to the “talent” (no talent shortage) at a more affordable price (as it is machine that do the job) and existing software engineers can focus on inventing new technologies for the better of humanity.
I may not be able to build this AI (I wish I could ☺️ ). But I hope big companies such as Google, Microsoft, Facebook, and friends, would put their resources into this application of AI. The good news is that, a simple google search shows tonnes of people write and discussed about this topic, check them out if you have the time.
Don’t get me wrong, AI will not 100% replaces software engineers. We still need them to research on new technologies and solutions that solve real world issues, such as making the internet 100% accessible to everyone living on earth, build more electric cars or appliances to counter global warning, new biotechnology that can cure the incurable diseases, and many more.
I personally fine with my job being replaced by AI, it does not only solve the problems that I mentioned, but also allows me to focus on more meaningful work such as making education more accessible to everyone.
PS: hit ❤️ if you like this article, and share it if want to. If you disagree with some of my opinions, feel free to leave a constructive comment, greatly appreciated (please be nice though, as I am not good with arguing). If you spot any grammatical error, let me know in the comment too, will rectify it as quickly as possible, because english is not my main language. ✌️