The future is bright for those that adapt
I’m always dubious of claims made in the media, both social and mainstream, around AI and ML developments. With so much hype over the past decade, many people are.
Whilst I don’t have a deep background in applying AI and ML models, I understand the fundamentals of the technology better than most. The appreciation of the technical and mathematical achievements in the area is why I feel a lot of the claims made are a little (if not completely) over-exaggerated.
So when I started seeing comments about ChatGPT over the past day, I felt that these were another exaggeration. As I have an OpenAI account that I opened for Dall-E 2, I thought I may as well give ChatGPT a go and experience the “amazingness” for myself.
I hate to admit that my cynical “amazement” quickly dissipated to real amazement. ChatGPT really is something incredible and provides a glimpse of how software engineering could be in the future, but not in the way I think some people are thinking.
In fact for some people, this increase in productivity is going to be so great, they’re actually going to be out of a job.
A YouTube video I watched on Dall-E 2 showed, from the perspective of a designer and artist, how it could change the way they worked. The summary was that it wouldn’t replace designers or artists.
Instead, it would become an assistance tool that would increase productivity and could help act as a virtual muse for users.
After watching this, I needed to experience Dall-E 2 for myself and I wanted to see if the video was overhyping the technology. Once I got access, I’ll admit, it was impressive.
At the same time, I could see that the images being produced from the input I was giving weren’t close to what I was imagining and I could appreciate the points made in the video about how it wouldn’t replace designers and artists but could assist them.
Even with this experience, I couldn’t fully appreciate the gravity of how this technology might change an artist’s or designer’s way of working. I’ve never worked in any art or design field so I don’t know the first thing about how they work. The way I interacted with Dall-E 2 was an extremely contrived use case as I was just using it to generate narrative-based scenes.
At the time of using Dall-E 2, I immediately wondered if the OpenAI team was working on something similar for software development. I wanted to experience an AI-based tool like Dall-E 2 but in a use case, I’m familiar with it.
With this latest ChatGPT release they were clearly doing that and I’ll say straight away, this really will change the way we work as software developers, and, for some, this could be the beginning of the end of their software development careers.
On first use, I just did what I saw people doing online — which was to ask ChatGPT contrived questions about software development like building a well known algorithm or asking it questions about code.
The output from this was sort of impressive but, as an experienced software engineer, I could probably write the solutions just as quickly and would have more confidence about their correctness. The primary algorithms powering all AI tools are pattern based, not rationally or logically based, so there are bound to be errors in the implementations.
For my next attempt, I chose to approach it from a different angle. I’m currently working on a simple note-taking application in Flutter and I wanted to see how I might do it with ChatGPT. I asked the question “How do I build a simple note-taking application in Flutter?”. I’m assuming that because the OpenAI APIs are rate limited, it only did half the application, but what it did was a good start for a basic note-taking app. Most importantly it completed a number of basic tasks for me –
- Suggestions on a basic starting architecture for my application.
- Suggesting boilerplate code for my application.
- Suggesting names for my classes.
The value here isn’t huge, and I wouldn’t expect it to be. All of this is something I could’ve done myself, but it does save me a lot of time. On top of this, I could continue “chatting” with ChatGPT and was able to have it build out more features and further refine the generated code. It was like having a slightly stupid human assistant doing the boring coding for me.
In addition to these basic tasks, like with Dall-E 2 for designers, interacting with it gave me inspiration for other parts of the note-taking app that I hadn’t yet considered. The power of acting as a virtual muse shouldn’t be understated. The concept is so powerful, an old work colleague that used to work at IBM told me how on his first day he was given a teddy bear and was told “This is Ted and he’s a great problem solver.
If you get stuck on a problem tell Ted and if you haven’t solved it after that, seek help from others.”. This wasn’t a backhanded attempt to tell a newbie not to bother other people. It was teaching the important lesson that sometimes when we narrate and verbalize our problems, the solution can sometimes become apparent. ChatGPT is Ted on steroids!
Just this initial interaction shows so much promise for what is to come. I’m starting to see how an AI model is actually providing a more significant positive value to being part of my daily workflow beyond writing simple comparison if statements (one of the “amazing” things I’ve had people show me with Github Co-pilot).
This now beckons the question, do I think software developers are still going to be needed in the future? The short answer of “definitely” should come as no surprise. The disheartening extension to that answer is that the price of these tools will be the jobs of entry-level and lower-level software developers.
Amongst software development communities, there is the continuous joke about how Google, StackOverflow, and “copy and paste” write most people’s code. As the old idiom goes, there’s a grain of truth to every joke. I know for a subset of people out there, copy and pasting code from the internet is how they operate daily.
Infamous events like “left-pad” with NPM show that many people often choose to outsource basic thinking. The danger with this is not the act of doing it, it’s the reason why. There will be many that do it because it saves time. There will also be many that do it because they don’t know how to do it. It’s this latter group that needs to be worried about these recent advances in AI.
As these advances in AI progress, the most basic programming tasks, like creating boilerplate classes, implementing algorithms, building simple web forms, doing simple data processing, etc. are increasingly going to be computer-aided. At the moment some of these tasks are time-consuming and companies will hire entry-level or lower level software developers to do this work. This will inevitably change.
With the rapid progress made by tools like ChatGPT, people with no technical experience, like business analysts or designers, will do this work themselves. The supporting tools like IDEs, SDKs, and compilers will evolve to the point that they’ll be hidden from view and will more closely resemble Excel where anyone can get set up immediately and with little training, only their existing knowledge of the business domain.
Assuming this future is inevitably approaching where does that leave technical people? As the basic repetitive actions are performed increasingly by AI, the work that will be left will be highly technical and environment specific. These problems will be beyond the reach of a pattern-based AI due to the unique nature of that work requiring greater reliance on logical and rational thinking.
As an example, the majority of work I do in my day job isn’t boilerplate work. It’s understanding the business needs and then figuring out a way to use multiple, unrelated systems to achieve that business requirement in a reliable and scalable manner.
My daily work requires me to have an understanding of networking, distributed systems, and data layer technologies and leverage these technologies to build solutions for business problems that I often have to research and define myself. I rarely use Google or StackOverflow for my daily work because most of the problems I deal with are too bespoke to have a ready-made solution.
The most interesting thing about this question is that I don’t think it changes much from what I would’ve told someone 10 years ago before things like Dall-E and ChatGPT were even on my radar. The crux of that advice would be two major principles –
- Take time to understand people and the problems they are facing.
- If you’re going to spend time doing something technical, understand the fundamentals and understand them well.
To that second principle, if you’re new to software development, make sure you understand your primary tool — computers. When I say “computers” I mean everything about them — mobile phones, PCs, servers, operating systems, browsers, networking, software architectures, distributed algorithms, etc. You don’t need an encyclopedic knowledge of everything, but you need to be at least aware of the different facets. A good test is this — if someone asked you the question “What happens when you type google.com into your browser?” is your answer more like this or is it more like this?
If you’re the latter, you don’t have anything to be worried about. If your answer looks more like the former, work to get yourself to the latter because ChatGPT and its pals are coming for your job.
If you’ve been working for a few years in software development, the same applies to someone new. It’s never too late to learn more about the tools you work with day-to-day. But if this isn’t where your strength lies, if your strength lies in your communication skills and working with people, focus on this side of things.
There will always be a need for people at the intersection between where people problems meet technical problems. The explosive growth in the no-code community is proof of this. There will always be a need for great business analysts and great project managers. I highlight “great” because there’s already plenty of mediocre business analysts and mediocre project managers out there and they’ve been struggling for decades.
ChatGPT and whatever other tools may arrive in the near future are extremely positive for software development. There will be people at the lower end of the software development skill spectrum that will need to find a different role.
If those developers are willing to up-skill, there are going to be even greater and higher rewarding opportunities on the horizon. These technologies are going to be a massive productivity boost for knowledgeable software developers.
The AI software developers are coming and they will take your job, thankfully that job is pretty boring and you’ll find something more interesting.