AI coding tools like GitHub Copilot, ChatGPT and similar tools took the software development world by storm.
Some developers love them, some dismiss them, and the rest are neutral.
Personally, I enjoy using them, and I believe they can help developers of all levels, including new developers. However, there are some things to consider if you are a new developer.
With this article, I want to answer whether new developers should use AI coding tools and how to make the most of them.
Mention: This article is also useful for experienced developers, but its focus is on people new to software development.
Should new developers use them?
My short answer is yes. Developers should use any tool that makes them faster and better.
I believe AI coding tools are one example of tools that help developers code faster than ever.
But there is one crucial mention. These AI tools generate erroneous, incomplete, and inefficient code quite often. Also, they sometimes generate code that looks fine at first sight but has very subtle errors/inefficiencies. If you blindly trust them, you will get into trouble. By trouble, I mean that you will learn the wrong stuff and also build unreliable & insecure applications.
So, what should you do then?
Treat these AI tools like you treat any other resource on the internet. Would you copy & paste code from a website and blindly use it without understanding it? Do the same with these AI coding tools. They can be beneficial, but they can also be very dangerous if you misuse them.
The idea is to use them but with caution.
How to use AI coding tools
Since these tools were born, people have said they will replace developers.
My opinion is that they are nowhere near replacing developers. And the more I use them, the more they reinforce that opinion. They're just not good enough to generate correct, efficient code at the moment — at least not complex code.
But that does not mean they're not excellent tools. They're a great companion for coding.
For now, they're handy for the following use cases:
- removing the entry barrier
No more "how to get started" questions. These AI tools are super valuable for giving you ideas on how to get started with a project or tool. Even if they do not generate the correct code, they give you pointers on how to get started.
The above GIF illustrates how ChatGPT helps you to get started with Zod. It generates both the code and explanations, so you understand what the code does.
- speeding up development by generating boilerplate code
Writing the boilerplate code is one of the most tedious parts of the software development process. Thankfully, AI coding tools can help with that as well.
The above pictures show Cody AI generating the boilerplate code for a Node.js and Express application. It also helps you configure the ES module imports in your project.
- finding/solving simple bugs and errors
These AI tools are also helpful for spotting bugs and errors. You can give them the code and ask them to find possible issues with your code. Then you can ask them to solve them but do not expect to get perfect answers. Use the solutions proposed to get an idea of how you could solve the issues.
- re-factoring simple code
You can also use them to get ideas on how you can refactor and improve your code. Sometimes, they make suggestions that are not obvious to you. It happened many times for me to get ideas from these tools that were not obvious to me.
- generating documentation and tests
It's well known (unfortunately) that documentation and tests are not the highest priorities when developing software. With these tools, you can add your code as input and ask them to generate documentation and tests based on your code.
These are some of the ways you can use AI coding tools to help you with coding. I emphasize again that you should not trust them blindly. Treat them as any other resource - only use the code if you understand it.
The AI coding tools I use
At the moment of writing this article, I use:
- GitHub Copilot
- OpenAI ChatGPT
- Sourcegraph Cody AI
We have a community for developers. Join us here
The article Should New Developers Use AI Coding Tools? was originally published on my blog.
Top comments (40)
I find myself going back and forth on this subject because while I agree, it should be a good thing to rely on the tools, I have seen beginners rely too much on it to the point where if they needed to write the most basic of things they freeze. What has your experience been with this aspect of leveraging AI tools and absolute beginners?
Relying on them too much is definitely not good. Like you shouldn't exclusively rely on StackOverflow and other tools, you shouldn't rely on AI tools either.
Using AI tools like ChatGPT is no different than using StackOverflow to find an answer. But I agree, excessive use of any of these tools isn't a good thing. If I run into a big issue, I would debug things on my own end first with the inspector tool or some debug tool in my IDE. Taking the first stab at solving the problem yourself before asking for help.
I agree that it can be a great learning tool (provided it is used correctly, as already discussed in the comments). What worries me with AI-generated code is licensing and copyright of the output code. I wrote a post about it on my blog. casan.se/blog/programming/my-thoug...
TL;DR: AI code generators may generate exact copies of licensed code, which could be very problematic in both proprietary and open-source projects.
I think they are excellent tools. But, for new programmers there is a problem of knowing when the tool produces good code, and when it produces bad code. Recognizing those patterns of good code and bad code takes time; and that requires a valid environment, many repetitions, timely feedback, and deliberate practice — just like becoming an expert at anything in general.
Im a newbie in this dev area. Nowadays im working as an intern and sometimes I feel guilty for asking a lot from ChatGPT.
However this is the future, and we need adapt to it, or we can reject it, but sooner or later, whoever rejects it will be outdated
I would make the most of it, but make sure you understand the code you create. Don't ask ChatGPT to write code directly. Here's how I would using it as a junior dev:
This way, you have a helpful tool for your job, without it doing all the work for you :)
I would like to ask you a question,
Those who sat down and wrote this A.I tools like ChatGPT- How did they get there? Is it by the same A.I they made OR by the experience gained by writing Code, critical thinking and other factors which we cannot do without saying....
From my experience, I would encourage you to start solving problems on your own, but still that is if you want to be the first to see what exists at the other end of the universe.
Great post! Agree, finding the right tools can really ease the process of being a new developer. It's all about learning how to use them and leverage them along with your own capabilities instead of relying completely on them. Thanks for sharing!
Thanks for the contribution to the community Catalin!
My pleasure, @ben!
Generally agree. CodeGPT++ are quick and usually right when given simple tasks, e.g. write python to extract a key from a string of key/value pairs. For large tasks I've been getting good results asking for pieces of the puzzle - code examples - and then assembling them into some app framework...
Nice! I wrote a comparison about two other ai-coding tools, Smol-Developer and Wasp's GPT Web App Generator, here: dev.to/wasp/smol-ai-vs-wasp-ai-whi...
I'll have a look. Thanks for sharing it!
Funny. I've just read an article that said that, in tests, ChatGPT got significantly more than 50% of programming questions wrong. I once asked it how to do RSA-PSS-R with OpenSSL. It was wrong; it had told me how to do RSA-PSS. When I said "that's wrong", it came back with an alternative suggestion using a parameter that didn't exist. It's rubbish, and I suspect that a lot of flaws would be found during code reviews.
Same here, i testa and ask ChatGPT to make a funktion i Python with can (+ - / *) with 2 numbers, but it did not know this is in the language direkt, så ett imported Numpy library (big) and start koded a funktion with if statments.
The big problem here, is preformance, it added a big library and write 20 lines not needed.
I think in the future we vill se many code lik this if AI tools i used.
Yes, but so would code from a junior dev. Hopefully though the junior Dev would learn from the mistakes.
You would hope that a junior dev would do a bit of research and work out for themselves that OpenSSL can't do PSS-R, either straight off or, if they'd come back with a PSS version and were told that wasn't it, they'd then realise that it's not possible rather than coming back a second time with a solution that can't possibly work as it uses parameters that don't exist!
You're right about the learning from mistakes thing; ChatGPT, in my experience, is rubbish at that. I've asked the same question of it multiple times and it still gets it wrong.
BTW - here's a link to one news report on that study. techmonitor.ai/technology/ai-and-a...
I have seen engineers on very different levels becoming distracted in their "train of thoughts" by the inline editor suggestions, to the point that I'm becoming annoyed by those things slowing down people, because every suggestion needs to be validated whether it's applicable/helpful/correct, which can destroy the previous focus or prevent it from establishing.
And especially for beginners or when starting to work on an existing codebase that is different from what you are usually doing, that can not judge these aspects, the time might be better used by pairing with a more experienced dev.
Just my 2 cents
I’ve found AI tools very useful as a beginner, particularly because when I’m learning something these tools can help generate examples that boost my learning process and relieve a burden on my instructors when I need additional guidance. This code generation tends to save me a lot of time googling solutions, explanations and writing boilerplate items once I understand what is going on with them.
Secondly because AI sometimes generate hallucinations, it exposes me to unintentional concepts which have in some cases broadened my perspective, and also given me valuable perspective from correct vs. incorrect code for my particular use cases, through this process it has helped advance my beginner level debugging skills more efficiently and learn from mistakes which couldn’t easily be produced by my instructors in a classroom setting.
With all things striking a balance is good, and certainly many people may not find AI as useful as I have or they carry a different opinion. I can only speak to my personal experiences with it.
👨💻
So my take is that I treat ChatGPT AS IF it was a junior Dev. Give it a small, precisely defined question and it normally gives a really good answer. If it gets it wrong, a bit of coaching and it gets pretty close to the code I would write and in half the time. BUT you need to fundamentally understand when, where and why it gets it wrong to be able to explain what it needs to fix, just like you would with a junior Dev.
Where AI coding really shines is when you can use it for declarative coding. For example, I asked CGPT to scaffold a react native app to register teams and keep the scores for a cricket match. It automatically added an array of eleven players for each team but it really struggled with setting up the referential relationship between matches, teams and players.
Developers who use AI assistants have told us they are 31% more productive, with over 25% seeing more than a 50% increase in productivity. Btw, 20% of the users have more than 10 years of experience, so this isn't just helping new people.
A lot of writers say when they use tools like Jasper for content generation, it helps them get started without staring at a blank screen. I think the AI tools can help eliminate the "blank screen" effect for new developers.
No ... first learn the fundamentals, add AI to your arsenal later on.
Who said to skip the fundamentals? And why can't AI help you learn the fundamentals?
Yeah I guess it could, fair enough - there is not just one "right" approach to learning and education.
So, your answer to the question that you're posing would be "yes".
I'm quite curious what the approach of 'official' schools/educators (bootcamps and so on) will be - whether or not they will embrace these tools.
Yeah, I'm curious as well. It's interesting to see what the future holds.
Is new parenting method?
Huh?
Ah... never mind... sorry, I think I am lost...
Some comments may only be visible to logged-in visitors. Sign in to view all comments. Some comments have been hidden by the post's author - find out more