00:00:07.759
When ChatGPT-3 first came out, I took it for a test drive. Did anybody else do that? What did you do with it? What prompt did you type in? Did you try anything interesting, like asking it to send you a joke?
00:00:28.039
I’m really bad at writing, so I used it to write emails. What about you? Raise your hand if you have any use cases. Who here wrote a short Shakespeare play?
00:00:40.719
Okay, who used it for programming-related tasks? Just to convert from one database technology to another—like, here’s a script that builds some inserts for one database technology. Can you show me how it would look with PostgreSQL? This conversion between different small syntax differences worked out very well. In summary, it was about converting syntax from one database management system to another.
00:01:28.759
Okay, who else? Yes, go ahead, what did you use it for?
00:01:43.799
Yes, I used it to write a Rails controller, but that didn’t work out well for me. I also tried writing some bash scripts, which worked well.
00:02:13.519
Then there were method naming conventions—how did that work for you? Better? Great! How about you, Adrian?
00:02:31.239
The prompt was to convert some video files using FFmpeg. Anyone else have any interesting use cases?
00:02:45.200
How about planning road trips? Not programming related, but interesting nonetheless. Any constructive criticism or feedback on performance?
00:03:01.680
Someone used it to refactor a method. How did that work out? It depends, right? That’s often my experience too. When I first tried ChatGPT-3, I thought the most obvious use case was to write some code for me, like writing a program that does a specific task.
00:03:33.400
Did anybody else use ChatGPT to write a program or function? Raise your hand if you asked it to write one and ended up liking the result. Did it require just a few small adjustments to work? Now raise your hand if you felt what it produced wasn’t usable at all.
00:04:18.239
I see a lot of criticism online about ChatGPT, where people say it hallucinates a lot and doesn’t write very good code. For example, it may make a library call for a function that doesn’t exist. Because of this, some people dismiss ChatGPT entirely.
00:04:56.199
That was my initial feeling. However, two important things happened that changed my mind. Before we go on, let me count how many of you still think ChatGPT isn't very helpful for programming.
00:05:31.080
Thank you! I think a lot of us are somewhere in the middle, and I hope everyone will at least find one useful tidbit from this talk.
00:05:49.680
The first realization I had was that writing code is not the best use case for ChatGPT. There are many other parts of the software development lifecycle before you start coding. First, you must define what you’re going to do and design the feature or change you want to implement. Next, there’s testing, deployment, monitoring, and more—all activities surrounding that final coding step.
00:06:23.840
Considering all of this, writing code is actually a small part of the process, and it's not necessarily the hardest part either. So if we claim that ChatGPT isn’t great for writing code, we have to consider that it can still help us with the larger tasks surrounding coding.
00:06:50.079
Moreover, how often does a human write a big chunk of code and assume it’s perfectly good? Typically, we write code incrementally, test it, ensure it works, and then commit it. Hiring a contractor to write an entire program without any checks is not something we would usually do.
00:07:15.480
So that expectation that we can use ChatGPT just to pull together a large piece of code doesn’t align well with how we typically code. This is one realization I had.
00:07:42.560
The second thing is that ChatGPT-4 came out. This change is significant because ChatGPT-4 is so much smarter than ChatGPT-3 that it feels like a completely different product.
00:08:12.080
Let me ask—raise your hand if you’re using ChatGPT for programming. Now keep your hand up if you’re using version 4, and if you’re not sure, it probably means you’re using version 3.
00:08:30.600
If you haven’t upgraded to ChatGPT-4 yet, I implore you to. It's worth way more than the subscription fee, and the productivity you gain from it absolutely pays for itself.
00:09:00.640
Are you familiar with the three levels of abstraction in programming? Pottery, accounting, and inventory—lessons in abstraction can help us programmers.
00:09:21.200
Think back to a time when you owned a pottery store and had to manually add up how much money you made last month; you were working at a very low level of abstraction, doing tedious mental grunt work.
00:09:40.960
Fast forward—now you’ve got calculators, which elevate your work one level up and save some effort.
00:09:53.840
Then, with the advent of accounting and inventory software, you really level up in terms of the mental grunt work. You don’t have to think about low-level details anymore, so this is a relevant progression for us programmers.
00:10:11.240
As humans, we conceptualize our end goals, like building ticketing software, but we often face low-level tedium—before frameworks like Rails, programming in raw PHP involved a lot of manual work. With Rails and other tools, we can focus less on the mechanics and more on our bigger goals, and likewise, ChatGPT can help us mind those details.
00:10:40.440
So, if writing complete programs isn’t the best use case for ChatGPT, what is? One suggestion is learning about your domain. If you’re writing software for a pottery store, you might use ChatGPT to learn more about pottery.
00:11:06.000
Another use case could be creating abstractions in your code. ChatGPT can assist in identifying appropriate abstractions based on the knowledge you have about your domain, making the process smoother.
00:11:26.000
Creative writing is another suggestion, particularly if you need inspiration or want to structure your writing. You could even use it for localization, creating entire localization files and handling translations across multiple languages.
00:11:54.200
Also, writing tests is an area where ChatGPT shines. You might say, 'I want to test this specific functionality,' and ChatGPT could generate helpful boilerplate for you to modify as needed.
00:12:16.520
However, be cautious—ChatGPT can generate tests that aren't appropriate unless you have some testing skills to validate what it outputs. It’s like having a friend help you brainstorm tests, but you need to keep your programmer’s hat on.
00:12:43.760
The last thing to point out is that ChatGPT can aid in automating your testing processes significantly. For example, when I was working on tests for a project, I described the test case to ChatGPT, which generated the corresponding code.
00:13:02.960
I'd run the test, see it fail, provide the failure message back, and watch as it generated the code to resolve the issue. This iterative process made it feel like collaborating with a fellow programmer.
00:13:28.680
As this technology evolves, I envision a future where these interactions could become more seamless. The goal is to automate parts of this process where you'd not have to switch between ChatGPT and your code editor manually.
00:13:49.920
Regarding new technologies—one of the more tedious parts of programming involves learning, especially when documentation is lacking, and this level of frustration can turn beginners away.
00:14:07.920
For instance, Docker documentation often causes confusion. You might run into a particular term that’s troublesome—here's where ChatGPT can help clarify by allowing you to ask questions in context, understanding what parts of the documentation don’t make sense.
00:14:25.520
You can request for tailored tutorials or get stuck on something and need clarification. This makes it significantly easier to learn new technologies.
00:14:45.560
In programming, we engage in planning at various levels. Whether it’s the next six months or what we’ll do in the next five minutes, ChatGPT can assist in those discussions.
00:15:06.440
For instance, when I wanted to build a chess-playing robot, I asked ChatGPT to help me plan the project, but I instructed it to first ask me questions about what my needs and goals were.
00:15:29.840
This shift of mental burden is incredibly useful, allowing for a more efficient planning process. The tool asked insightful questions I hadn't previously considered, and this helped me focus my direction without getting lost.
00:15:55.040
Remember, at no point should ChatGPT replace skill. If you don’t scrutinize the information it gives you, you might end up in a worse situation. ChatGPT enhances what good programmers can do and may exacerbate issues for inexperienced ones.
00:16:28.760
Takeaways include that while generating entire functions or programs can be useful, often the greatest value lies in testing, learning new technologies, and planning. ChatGPT allows us to focus more on high-level objectives rather than low-level tasks.
00:16:54.840
I host a podcast called The Code with Jason. Guests include industry leaders like DHH and Sandy Metz. I hold two weekly Meetups, one of which is designed for European time zones, happening on Sundays at 18:00 Bucharest time. I encourage everyone to join.
00:17:20.200
Additionally, I publish a snail mail newsletter that subscribers seem to enjoy. I have an upcoming book titled 'The AI Advantage', due for release through Manning in 2024. This book expands on concepts discussed today.
00:17:47.200
Finally, you can find all this information on codewithjason.com. My email is [email protected], and I’m on Twitter as @jason_swett. I’m more than happy to continue any discussions in the hallway.