There is a lot of conversation about ChatGPT recently and several people have asked my opinion on whether it will replace software developers. So, in a bit of a departure from my previous blog posts, I thought I would engage in some speculation.

The short answer is no.

But that doesn’t make for a very interesting blog post. So let me expand on why I think that. It boils down to one simple fact: Writing code is easy, even ChatGPT can do it. The hard part is deciding what you want the code to do.

It’s a lot like driving a car. When you first start, all your effort is directed at how to make the car do what you want it to do: Steering, clutch, indicators, etc. This stage is the equivalent of writing code, it’s making the computer do what you want it to do. This is what most people who are not software developers are thinking about when they ask this question.

But the hard part of driving is not controlling the car, it’s understanding what other people on the road are doing, specifically what they are likely to do next: Where is he going? Is she letting me out? What’s that lunatic up to? etc.

Digital Man with Laptop

An (almost) true story of a typical software development project:

Client: I’ve got a great idea for an App.

Developer: That sounds exciting, tell me more.

Client: It goes like this:

  • User logs in to App
  • User does [Something]
  • App does [Good Stuff]

Developer: OK, I can build that, I just have one question:

  • What if User doesn’t do [Something], what if User does [Something Else]?

Client: Great question, in that case:

  • App does [Original Good Stuff]
  • Or App does [Other Good Stuff]
  • Depending on [Context]

Developer: I see, tell me more about [Context].

Client: Well typically [Context] is obvious … but since you ask … umm … err … let me get back to you on that.

Some days later …

Client: I discussed this with the team, we all agreed that [Context] is obvious, but no one could really put it into words. So, this is what we want:

  • User does [Something]
  • App does [Original Good Stuff]
  • User does [Something Else]
  • App says “Please do [Something], if you want to do [Something Else] please [Contact Us]”

Developer: Ok, leave it with me

Some weeks later …

Client: The new App is great, users love it. The only problem is that some users are doing [Unexpected Things] and then App does [Unwanted Behaviour].

Developer: I see, and are the users all doing the same [Unexpected Things]?

Client: No, no, no … some are doing [Unexpected Things we Probably Should Have Thought Of] but some are doing [All Manner of Ridiculous Things].

You get the idea. Writing code is easy. Anticipating what the users want is hard. Anticipating what they might try, in order to get what they want, is almost impossible.

Girl with Robot

Software Developer Skills Chart:

Skill Level Expected Outcome Where is ChatGPT
Beginner Writes code that doesn’t do what you asked for and is less useful than what you requested. Can do it now.
Competent Writes code that does do what you asked for but turns out to be less useful than you expected. Can nearly do it now and will probably do it soon.
Expert Writes code that doesn’t do what you asked for but is surprisingly more useful than you expected. Nowhere near and probably won’t be any time soon.
Master Explores ways to help you evolve your business processes, to make them more amenable to automation. Then implements a code solution that wildly exceeds your expectations. Maybe one day, but my guess is not for many decades, for reasons expanded on in this blog post.
Guru Explains why a code solution will never make you happy and suggests you take your life in a different direction. Can do it now, but only if you already know that’s what you need and ask it the correct questions to get the answer you know you want.

Summary

So, my conclusion is that ChatGPT is already an excellent tool to help new programmers improve from beginner to competent. It might also be useful for competent programmers to expand their competency into new areas.

But it’s unlikely to replace those who really engage with real-world business requirements and work at the interface between technology and smart but non-technical humans.

Finally, don’t just take my word for it. Here’s what ChatGPT thinks (or at least says):

As an AI language model, I don’t have personal opinions or beliefs …

Blah, blah, blah … blah, blah, blah …

In summary, while AI models like ChatGPT can enhance software development processes, it is unlikely that they will replace software developers entirely. Instead, they will likely continue to be used as tools to support and enhance the work of human developers.

So, if ChatGPT says so, it must be true.

Join to newsletter.

Curabitur ac leo nunc vestibulum.