Responsible AI Coding: What I’ve Learned So Far
Published May 9, 2025

A whole new way of coding. When JetBrains offered me a trial of Junie, an AI assistant built into IntelliJ, I had to give it a go. I soon saw the potential, it’s kind of like an AI coding partner (albeit a little dumb at times), but that’s okay, if used responsibly. So here’s what I’ve learned about coding responsibly with AI—so far.
From Curiosity to Augmentation
At first, I gave Junie a go out of curiosity. I didn’t expect much, but very quickly, I saw the potential. Used right, I thought, it can augment me, but only if I can work out how to use it responsibley.
I still use ChatGPT and chat’s with other Software Developers for broader problem-solving, but with Junie, the relationship is different. You don’t just chat—you ask precisely, and it writes solutions directly into project files. This also means Junie has access to project files, i.e. access to information. So, I thought, let’s start there; I need to give it structured information.
Structuring AI Collaboration
To get good results, I set up my project with the AI in mind. That meant two things:
- A
.junie/guidelines.md
file with high-level principles. - A
/requirements
folder, where each requirement lives in its own file. Have a look at my example GitHub project, where the requirements are in the repository.
I am finding that concise, clear guidelines work best. If you overcook the detail, the AI may ignore it. Like other developers, AI performs best when told what is required—not how to do it.
Safe Practice Makes Better Output
Using AI in your IDE changes how you code—but not how you review code. You still need to:
- Check in to a branch regularly (so it’s easy to revert).
- Read every line it writes.
- Follow the normal pull request process.
- Make manual tweaks before approving.
The workflow becomes more fluid and faster, but the standards remain the same. You’re still the developer and guarantor of quality code output. You’re just shipping faster.
Lessons I’ve Learned So Far
Here are a few tips I’ve picked up along the way:
- Only ask AI to write code you could write yourself (if you had unlimited time). That way, when it goes wrong, you’ll know how to fix it. So don’t try using it on new libraries until you are familiar with the library yourself, or you will end up losing time on small details you should have known about from the documentation.
- Avoid bleeding-edge libraries. Stick to libraries that were already well-supported before the AI’s training cut-off. You’ll avoid hallucinations and strange bugs.
- Commit working code often. If something derails, you can always step back.
- AI can teach you things. I’ve had several moments where Junie or ChatGPT done something that saved me Googling. I know this sounds like a contradiction of ‘don’t try using it on new libraries’ but it’s not. It will sometimes write things in a way you hadn’t thought of, which can teach you new things.
Juniors and the AI Gap
If I were mentoring a junior developer, I wouldn’t start them off with AI code generation. They need time—and respect—to learn the ropes. But I would give them the chance to talk problems through with AI, just like they would with a colleague. When they move from junior to mid-level, that’s when AI coding can give them a huge productivity boost.
Looking Ahead
I believe AI coding is going to become the norm in most domains. And as it does, responsibility has to be part of that norm—just like testing, version control, and documentation.
It’s not enough to be faster. We also need to be deliberate. That means checking the output, tracing where it came from, and using AI as a tool—not a crutch.
Final Thought
Responsible AI coding isn’t a buzzword. It’s a mindset. It’s knowing when to delegate to the machine, and when to take the reins back. It’s building software with care—even when the code came from a place that feels almost magical.