How I replaced Google with ChatGPT
Incorporating AI into my daily engineering workflows.
The mistake I made when I first used ChatGPT was trying to jump from simple tasks to automating an entire human.
My exposure to ChatGPT followed a typical trend: an initial surge of excitement followed by a complete failure to change my routines. I asked it some initial simple questions and was impressed by what it could do. I then asked it to write an entire blog post and see if it could replace me as a writer. I determined it couldn’t fully replace humans, and I fell back entirely to an AI-less workflow.
In retrospect, I needed more guidance on leveraging AI in my daily workflow, and that’s what this post is here to fix.
This content is targeted toward software professionals who are interested in getting concrete advice on how they can effectively leverage ChatGPT. The idea is to start with simple daily use cases and move into more complexity. I’ll end with an example project that went poorly.
- Migrating from Google to ChatGPT
- Pair programming with ChatGPT
- Using ChatGPT for brainstorming
- Testing the coding limits of ChatGPT
My intent isn’t to convince you that ChatGPT is the best AI, nor is it trying to convince you that AI will replace all software jobs (it definitely won’t). Instead, I’m hoping to leave you with inspiration enough to try and incorporate AI into your routine work.
If you find this article useful, please take the time to 👏 or follow.
Migrating from Google to ChatGPT
🤔 Mindset Shift: Google is for surfacing other people’s similar questions, whereas ChatGPT is here to answer your exact question.
Like most people, I Google when I don’t know something. The standard workflow is to Google, click through the top results, and read until it feels like you have divined the correct answer. If you are lucky, someone has already asked the exact same question. But more often than not, I find myself clicking through multiple responses and stitching the answers together.
Let’s ask an incredibly simple question:
Ok, this isn’t actually what I asked. It’s a partial answer. Here are the remaining results:
- Deleting data from a table
- Delete an item in a DynamoDB Table
- How to add or Remove Items from an Array in AmazonDB
- Add or remove an entry from a List type attribute in a DynamoDB table item
- How to Add or Remove Items to an Array in Amazon DynamoDB
- How to delete all items in a DynamoDB
- (and the list kept going)
You’ve gone through this process so many times that it’s instinctual. These Google search results primarily answered the question: “How to delete items from a DynamoDB table.” Next, you’d rewrite your search to be “How to add items into a DynamoDB table.” You’d read those results, stitch together the answers in your head, and you are good to go.
Let’s do the same thing with ChatGPT:
ChatGPT gave the English description and the exact code in both Python and the AWS CLI. Google did its best to return content similar to my question, whereas ChatGPT did its best to generate an answer.
🤔 Mindset Shift: ChatGPT automates the process of looking at the top results and filtering down to an answer.
This new mindset made me realize how many times per week I have a very simple question, and I want the “top results from Google.” Here is a list of the questions I’ve asked just this week:
- “Can you download specific chunks of a file via curl?”
- “How would you trim the quotes off this string in bash?”
- “How do I add secrets to AWS Secrets Manager?”
- “How can I kill all processes on a Linux system that match a regex?”
- “Give me 5 ideas for questions in a developer productivity survey?”
- “What are 3 different ways to start a process on boot in Linux?”
Can I get the same answers through Google? Yes.
Can I get my answer faster through ChatGPT? Absolutely.
Can AI replace my job? No
Can AI improve my speed? Absolutely
ChatGPT is now my go-to for basic Google searches. Can we go more complex?
Pair Programming with ChatGPT
Let’s start with what I was trying to accomplish:
I was recently introduced to Databricks. My goal was to investigate how data in S3 is growing relative to the type and quantity of drones my company sells. The amount of data can change based on the product, flight length, and mission type. I would need to tune the data to exclude short flights, drone simulators, and file types that aren’t relevant. Databricks is very SQL-heavy, which means doing multiple table joins, conditions, and complex groupings.
We’ve used ChatGPT to answer simple questions such as “How to join two tables in SQL.” But you can do more with ChatGPT: you can give it context.
Here is the response:
🤔 Mindset Shift: ChatGPT can form it’s responses based on the input you give it.
Think of how powerful this is. By tailoring its responses based on the context provided, ChatGPT far surpasses what Google can do. No Google search would give me the code above. At best, I would be stitching together multiple different sites together. This was infinitely faster!
This first query is cool, but it wasn’t the final answer I needed. I needed to tweak the data. Now, if ChatGPT is 10x faster than Google because it can tailor its response to the specifics of your question, this next step is 100x faster:
ChatGPT considers the context of the entire conversation when formulating its responses:
Because ChatGPT remembers your conversation, you don’t need to regurgitate the information. It’s like you are pair programming with a human. You and ChatGPT can keep building on, providing new input, rolling back to previous steps, or trying an experimental path.
In reality, I spent the next hour giving an additional dozen prompts until I had 150 lines of SQL that would have otherwise been beyond my capabilities. Now, to be clear, ChatGPT made mistakes, like a human would. I was able to point out the errors, and we were able to make progress.
🤔 Mindset Shift: You can work with ChatGPT to build up to a complex solution. Start simple, and layer in the complexity.
Okay, so you can use ChatGPT to answer simple questions or build up small code snippets. But can we go further?
Using ChatGPT for brainstorming
A great example is using ChatGPT to surface additional considerations for your project. Here’s my real-life example:
This week, I was asked by a developer how they could automate the injection of a license file into their remote development environment. As is my new style, I went straight to ChatGPT:
ChatGPT gave me a solid answer, talking through the process for uploading and downloading the file and the Terraform for the AWS IAM policies needed to manage AWS Secrets manager. Each section included example code and explanations. It was great.
However, I got curious if I had considered enough of the problem, and I asked ChatGPT a more general question:
It came back with eight additional things to consider: permissions, costs, encryption, secret rotation, regions, resource policies, secret versioning, and initial account setup. For each of these, it had a paragraph summarizing the topic.
I already knew most of these considerations, but several were new. This got me thinking: can you use ChatGPT as a brainstorming partner?
Seeing is believing: try copying one of these prompts into ChatGPT4.
- I am a software engineer at a software company with a public REST API. I want to start stress-testing it, and I am evaluating several frameworks. What are the important features I should be looking for?
- I am a software company that runs a SaaS product. I need to add SSO to my product so each company can log in with its authentication platform. I’m trying to compare tools like Auth0 and WorkOS. What are some important features to consider?
- I’m a software engineer at a company building an enterprise (self-hosted) application. In my case, the customers manage the entire product themselves without me. I am worried about the maintenance burden of supporting my app long term. What should I consider?
The answers it came back with were very useful and a great jumping-off point. This is a great example of something that is not Googleable because I tried. Because, again, ChatGPT is trying to create answers, and Google is trying to surface similar content.
🤔 Mindset Shift: use ChatGPT to brainstorm the unknown unknowns to your work.
Okay, now I am using ChatGPT to replace my typical Google searches, write snippets of code together, and act as a brainstorming partner. Can I get it to write complex code?
Testing the coding limits of ChatGPT
When it comes to writing code that directly fits into your code base, ChatGPT is definitely the wrong tool (I’ll try GitHub Copilot next). However, when it comes to writing integrations against public APIs, ChatGPT can be excellent.
If you think about it, this makes sense. Building an integration is simply mapping “read” actions from one site into another site's “write” actions. The hardest part of the problem is figuring out how you want to translate between two disparate data models. Once you know what you want, it’s easy:
Here is a link to the code that it generated. This is great for what it is. But can I go further?
I made it a challenge to get ChatGPT to build a small software program with the following restriction: I’m not allowed to type any code. I can only execute what it gives me. Every typo needs to be corrected by ChatGPT.
In the beginning, ChatGPT was doing great. It easily wrote up a RESTful client and plugged in other common libraries. It worked, though it was simple.
Adding in debugging statements was fine. I told ChatGPT I needed more debugging statements, and it added print statements throughout the code.
Wrapping function calls in other libraries was also nifty. I was downloading and re-uploading large files, so I asked ChatGPT if it could wrap them with a progress bar visualization on the command line. Here’s what it did:
I wouldn’t have taken the time to do as many debug statements or inject the tqdm
library if I was doing it by myself.
🤔 Mindset Shift: ChatGPT can add polish to your code, that otherwise wouldn’t have been worth it.
Where everything fell apart: asking ChatGPT to refactor the code into methods.
Once the code had gone beyond a simple function, I asked ChatGPT to refactor the code and add in abstraction. And from then on, ChatGPT started having typos and logic failures on almost every question. Toward the end, I spent more time telling ChatGPT to correct the issues than if I had just done it myself.
My guess as to what happened is that each question to ChatGPT gets only a limited amount of compute time. The more complex the situation, the more it felt like ChatGPT could not fully hone its response and just threw out an unpolished result.
❌ Callout: ChatGPT is good at writing a single function but falls apart quickly when dealing with abstraction or multiple methods.
On a better note, once I finally got the code working against AWS S3 with Python, ChatGPT translated it well. While it took me an hour to get it to write the code I needed, it took only 1 prompt for it to:
- Translate the S3 code to work against Azure, GCP, and Dropbox.
- Translate the Python code into Typescript.
Wrap-Up: ChatGPT is here to augment you, not replace you
Originally, I struggled to incorporate ChatGPT into my daily routine. I felt like it was a cool gimmick, and maybe it applied to other people’s workflows but not mine. My work was either too complex or too nuanced for an external AI tool to be useful. When people asked me about AI, I would try and brush it off as “I’ve tried it, and it’s cool.” I wouldn’t tell them I had never used it for practical, day-to-day tasks.
After forcing myself to use it for a week, I am now a religious fanatic about how AI has transformed my daily work. I use it as my replacement for Google, for brainstorming, and as a pair programmer for simple code.
I highly encourage you to sign up for a ChatGPT4 account and incorporate it into your workflow. I think you’ll find it to be a big boost.