The Robots are Coming. Is Chat-GPT Replacing You as a Software Engineer?
Tags: webdev, programming, beginners, productivity
Published: 2023-04-05 05:41:43

When I first saw Chat-GPT, I went through the five stages of grief. First I was in shock. Then disbelief. Then anger that the robots were about to put me out of a job as an engineer.

I’m now in the fifth stage of grief, acceptance. And I welcome our new robot overlords and how AI will transform software engineering.

As the [founder of a software agency that helps startups build MVP’s](allinengineeringconsulting.com), I have begun advising our engineers on using Chat-GPT to speed up development time.

And having built several MVP’s for clients now with extensive use of generative AI, I’ve concluded that Chat-GPT will not replace engineers. Instead, it will shift more engineers into the role of a “code reviewer” of the code that Chat-GPT generates. 

This is because Chat-GPT doesn’t understand the code that it writes. It merely outputs what it thinks is the most probable next line of code based on all the other code available on the internet. 

But what is most probable isn’t necessarily always right.

For example, take the following code snippet:

`for (int i = 0; i < 10; ...);`

I’m sure if you’ve taken any programming class, you recognize this as a for-loop. This is how we write code to iterate through a data structure.

What Chat-GPT is really doing is finding similar code all around the internet and aggregating a list of characters with these probabilities of what should come next:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ukoc7g3elbllv197nwz3.png)

Then it will usually pick the top answer and input it into the response. Do this over and over again and you get a full code snippet, similar to how it writes full text sentences.

It’s important to note that in this example, Chat-GPT doesn’t actually understand that you have to increment the counter “i”.

It’s just that “i++” happens to be what follows most often based on similar code written on the internet. 

It could be that we only want to iterate on the “even” indices, in which case, we would need to skip by two with “i += 2” instead of “i++”.

But since for-loops that increment by two instead of one are more rare, Chat-GPT is less likely to choose “i += 2” even if it’s the correct answer in our context. So with Chat-GPT, you still can’t fully trust its output every time.

Instead every engineer will be a senior engineer now, and Chat-GPT is the entry-level engineer that writes the code that they review before approving it and pushing it to production.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k6mo8bq5mpt1rfdaz9bj.png)
_Chat-GPT is like calling Google’s auto-complete API after every word._

Furthermore, because Chat-GPT will handle more of the implementation details, it will place a greater emphasis on understanding system design.

Stack Overflow has plenty of code snippets for Chat-GPT to train on and get boilerplate code working.

But each startup has their own system design and architecture that Chat-GPT won’t have the context to generate insights about.

That’s where engineers will shine in this post chat-GPT world.

Because system design will be more important than ever-before, I pitched [Alex Xu, the king of System Design,](https://www.linkedin.com/in/alexxubyte/) on guest-posting this article about the future of software engineering and system design in a post-Chat-GPT world.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zs4j2inx00jlx24rld5y.png)
_Alex Xu was an ex-Twitter and Apple engineer before going full-time on his System Design content._

When he said yes, I jumped at the chance. So if you’re a subscriber of Alex Xu’s ByteByteGo newsletter, your time spent studying system designs is time well spent.

It’s your understanding of system architecture that will protect your job security as an engineer more than knowing the latest programming language. 

Here’s why.

##Understanding System Design is Crucial in a Chat-GPT World
The main reason why software engineers won’t get put out of jobs is because the questions you ask Chat-GPT dictate the quality of answers you get back from it. 

But if you don’t understand software engineering, you won’t know what questions to even ASK chat-GPT. 

In my seven years working at Netflix and Amazon, I’ve realized that 90% of software engineering isn’t about knowing the answers but about asking the right questions. The right questions will guide you to the right answers. 

This is the defensible moat that engineers have because non-engineers won’t know how to query Chat-GPT to get the answers it needs.

###Case Study: How to Build Levels.FYI

Consider a recent case study from Alex Xu where he discussed the architecture of Levels.FYI.

Levels.FYI is a website and app that documents the salaries of software engineers and the differences in levels between companies.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/phvo1yzynqe4fazs9314.png)
_Screenshot of Levels.FYI_

If a non-technical person were tasked with building this, I’m certain that even with Chat-GPT assistance, they would not be able to build this website because their questions would be too broad.

Someone non-technical might ask, “How do you build an app to show salary data?”

And note how general the response is.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/834cfokgytrsrsyenykg.png)

###How an Engineer Can Use Chat-GPT to Build Levels.FYI

However, an engineer can get more out of Chat-GPT because they understand the system design of the software and just need help filling in the implementation details.

For example, let’s say we wanted to build a simple version of Levels.FYI that takes in salary data from human inputs, aggregates it, and calculates averages per company.

As an engineer, I can already guess the architecture of this product. It’s likely that there are 3 parts:

* A UI to display the salary data
* An intake form for engineers to input their salaries and their companies
* And a database to store the data from that intake from

A simple system design would look like this:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x49ullg1x0er4g2stx99.png)

So because I know there are 3 parts to building Levels.FYI, I can ask specific questions to Chat-GPT to get the answers I need to build it.

For example, I would start with the intake form, and ask Chat-GPT for specific technologies I should use.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zr24itg1vb3u2eiu1irk.png)

Notice its first suggestion is Google Forms, so let’s roll with that as our intake form. Now that we have a way for users to input their data, we have to look for a backend database to store that data, and a way for the UI to query for it.

So then I’ll ask Chat-GPT about what technologies I can use that have the API’s I need to do that.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ca00gxef225uyrdya53p.png)

Notice how I specifically asked for a “no-code” solution. This is critical because more code equals more problems. It’s more work to write and more to maintain, so I know my first goal is to achieve the business goal with as little code as possible.

This is where a non-engineer will go wrong, because they often equate engineering to writing code. However engineering is not about coding. Engineering is about solving business problems in the simplest way possible. And code is just a tool to solve that problem. 

While a non-engineer may get stuck asking Chat-GPT about coding details, it’s my understanding of engineering as a means to an end that helps me specify the “no-code” prompt and get the answer about using Google Sheets as a backend.

Finally I just need to get a UI to connect to a Google Sheets API, so I query:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xgj4sflpusekd6ugc2ad.png)

And now I have all the information I need to implement Levels.FYI.

I use:

* Bubble as a UI
* Google forms as an intake and
* Google sheets as a backend

And now I can query Chat-GPT for the specifics of how to code it up, copy-paste it into an IDE and make sure it works before pushing it to prod. Thanks Chat-GPT!

The beautiful thing about my 3 queries is that using Google Sheets with Google Forms connected to a front end is exactly how Levels.FYI was created.

[As Alex Xu documents](https://blog.bytebytego.com/p/ep49-api-architectural-styles), Levels.FYI scaled to millions of users using only Google Forms and Sheets as the backend!

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/19akhhtni0llddvjl46x.png)
From the [Levels.FYI blog](https://www.levels.fyi/blog/scaling-to-millions-with-google-sheets.html)

So by using Chat-GPT intelligently, I reached the same system design that the Levels.FYI founders did by asking the right questions. These are questions that a non-engineer would not know to even ask.

Although Chat-GPT won’t give me the entire design of Levels.FYI, by breaking the problem down into smaller steps for Chat-GPT and solving each one individually, I can piece together the solution to build Levels.FYI.

This is what software engineering is about anyways - algorithmic thinking. This is what Alex Xu teaches, so I believe his knowledge will only be more relevant over time.

Don’t worry Alex - your job is safe! 😅

##Final Thoughts
I could just be in self-denial and a month after publishing this article, I’ll end up homeless because the robots indeed took my job. 

But for now, I truly don’t believe Chat-GPT will lead to mass layoffs.

Engineers are mostly professional Googlers anyways. So what’s the difference between querying Google versus querying Chat-GPT instead?

> Chat-GPT is not a replacement for understanding software engineering.

Rather than fearing Chat-GPT, it’s time for engineers to start investigating how to use it more to help them work more efficiently.

Used the right way, Generative AI will help engineers focus on system design while taking care of the tedious parts of software engineering.

In turn, it will boost the productivity of engineers and create more jobs rather than destroy them.

I think. 🤔

---
##💡 If You Liked This Article...
I publish [a new article every Tuesday](https://michaellin.substack.com) with actionable ideas on entrepreneurship, engineering, and life.

***BONUS*** Get a free e-book w/ my writing coach's contacts when you subscribe below. (Check the welcome email).

[Join 3,312 subscribers on my newsletter here.](https://michaellin.substack.com)