People change their minds about things, and this is a nuanced topic, so I may think some more and decide something else in the future.
But these are my current thoughts.
This is some advice to new developers who are just starting to learn to code. I’ve recently come across many junior developers who use AI chat tools like ChatGPT as part of their development. I’ve also come across senior developers who do the same.
Using AI tools for development isn’t a bad thing. It can actually make you much more efficient. Whether it’s enhanced intellisense to predict what you’ll type next, so you’re typing less. Or whether it’s giving you a summary of something that would have taken multiple StackOverflow articles to get an answer to. Or maybe even helping you refactor your solution into something cleaner.
I believe these are all useful and good ways of using AI in development. But you’ll notice in the above examples, the developer already knows what they’re looking for, or how to break down the problem into smaller problems to then dig deeper into. They’re using AI to make themselves faster.
What I’ve noticed among some junior developers is what I would refer to as a delegation of problem solving to AI.
Writing software is inherently about solving problems. It’s arguably the most important part of being an engineer. But I’m seeing more and more new developers fall into the trap of using ChatGPT to generate code for them which they copy and paste, but they don’t understand the code itself.
They’ve done some JavaScript or Python course, but have not practised beyond that themselves. The distinction being, without ChatGPT they would not reach a solution.
And to be even clearer, I don’t mean they’ve been working on a problem themselves and have been stuck for ages and then use ChatGPT to help them. That’s great. What I mean is, they have not tried to solve the problem at all. They run into a problem they don’t have an answer for, and immediately reach for AI.
You may think I’m over-exaggerating, or it’s not really that deep, but take the following example.
I’ve had a developer ask me for help on a task they were stuck on, which is great. Always ask for help when you need it! But when I read through the code, there was no consistency in what was written, nor any structure. I would ask why this React component had these props passed to it, and they couldn’t tell me. They just needed a line of text to render, but it wasn’t showing.
Even though they wrote all of the code themselves, they didn’t really, because they didn’t make any of the decisions. They delegated the decision making to AI. Which means they find it very difficult to debug issues when they arise, because where do you even start.
I think the instant gratification that we’ve developed in other parts of our lives with social media and what not, could be playing a part. Maybe.
Some may argue all this isn’t a bad thing. AI is creating a new class of developers who’s goal isn’t to become software engineers but to study a little and quickly build things for themselves, and AI tools enables them to do that. I agree, more developers and builders FTW. I think we’ll see the definition of a developer expand over time as a result of AI.
But I fear there are many junior devs who do intend to become good Software Engineers, but are going down this route, where they’re moving so quickly on their journey, they can’t differentiate between the standard JavaScript libraries available to them, and what React offers.
Remember, learning is important. You’ll always be learning as a Software Engineer. You’ll be learning in other parts of your life too. And you can’t rush learning. Take your time in trying to understand things.