What ChatGPT means for the future of software engineering
Will software engineers be replaced by AI
There's a lot of questions and discussions around whether software engineers will be replaced by ChatGPT (opens new window). The short answer is no, software engineers will not be replaced by ChatGPT and other AI programs. The slightly longer and more nuanced answer is that ChatGPT and AI will be able to perform some of tasks performed by software engineers. And tools powered by AI will even make some engineers even faster and more productive than they are today. So ultimately, some roles may be replaced by AI or AI-assisted software engineers but there will need to be software engineers who can do the things that AI can't and those software engineers who learn how to evolve and incorporate AI into their work/workflow/process/dev environment will be the ones who companies pay top salaries to.
# Don't fear AI
I hear a lot of people worry about AI and while it could one day result in the singularity (opens new window) that creates Skynet (opens new window) and tries to wipe out mankind, I don't think software engineers should be worried that they'll be replaced by AI cyborgs. The technology is still in its infancy and shows a lot of promise but still requires a fair amount of input/configuration to get the desired output. And while AI evolves, we'll still need apps, websites and distributed systems built. And even more exciting is that we'll see new technologies built with AI that make software engineers faster and more efficient. And tasks/projects that used to take months will be done in a matter of weeks. This is similar to how setting up a website used to require setting up a physical server somewhere until the cloud came along. Some things I've heard about/seen that make me excited are:
# Tools that can build you a basic website/app
Imagine telling an AI to build you an app like Uber that gives you a basic authentication service, Android and iOS apps with geo-location for drivers/passengers and a backend marketplace for connecting drivers/passengers. Then you can go in an start customizing the app to be an Uber for whatever you want.
# Documentation/code review tools
Things that are fairly straightforward and usually don't require too much context could easily be automated by AI to approve changes or add additional documentation. And we don't have to remove the human completely from the process but we'll only require manual review for truly complex or high risk changes. Wouldn't it be great to have simple changes reviewed and approved in the matter of seconds and not have to wait until the next day for someone to login to review your changes?
# Testing and code analysis
Similar to the previous idea, but having AI write test cases and unit tests would make both people who want more tests and people who hate writing tests happy. And it could analyze code and provide feedback on unused/unreachable code. And it could then be possible to remove the extraneous code and have a human (we need some checks and balance) review the changes.
# Auto-complete/recommend code
If you've ever written pseudo code, wouldn't it have been nice to then click a button and have all the code written for you? AI could translate comments into functional code. You would then have to review the code to ensure it's correct but it could be a big time-saver and even leverage best practices of optimizing memory and performance for you.
These are just a few ideas of what an AI-assisted software engineer could look like. I'm excited to see what people build and how it changes the world as well as the profession of software engineering.