AI Assistant return of experience

[2025-07-03 Thu] on Yann Esposito's blog
My return of experience from using AI agents again into a big real-world production ready project.

TL;DR of TL;DR: With the correct setup LLM-based AI Assistant have their place in the Software Developer tool-belt.

TL;DR:

  1. Evaluations
    • The Good:
      • (++) answering specific technical questions (with references),
      • (++) write small unreliable scripts nor prod-level quality (if helped)
      • (+) simple/repetitive coding tasks, boilerplate,
      • (+) review
      • (+) documentation writing
    • The Bad:
      • (-) test writing
      • (-) Perform specific, small, and easy (beginner junior) production-ready programming task.
    • The Ugly:
      • (--) Big tasks that would require a lot of intermediate steps.
      • (---) Code a feature with a production quality. It is a lot faster and more reliable to code manually. Almost all invested time was lost.
  2. Setup: need to support AI Agent, MCP (Clojure-MCP in particular!), RAG
  3. Limitations: bullshitting, non-verbal reasoning, complex coding tasks, self reference
  4. Conclusions:
    • Main lesson: Great for small and easy tasks but you already need some expertise.
    • Using AI Agent is a skill like learning other tools like git.
      • They bring value and are an improvement
      • never blindly trust ; always double check the answers
      • Learn what you can and cannot delegate
    • I would say that you can PARTIALLY delegate about 20% of the daily tasks; code review, documentation, code analysis.
    • WORKS VERY POORLY without advanced latest setup (MCP, RAG, reasoning, agent behavior), probably cost a lot.
    • AI Workflows potentially superior to AI Agents?

Introduction

My past encounters with LLMs were far from impressive. So, what made me decide to give them another chance?

The Setup

Setting things up was not straightforward. But once done I must admit I was really impressed.

I feel AI Agent are now like Versioning System (git) and Build Systems (make). These are tools worthy of learning. But from my experience they only provide value if you have a full setup:

See my previous article to see all details of my current setup.

Productivity Gain

(--) Hard/Advanced Programming

First, let's make it clear. For real, production-ready, quality development or complex tasks with advanced requirements these tools are a NET NEGATIVE.

If the task at hand is not small in scope, with a clear specification the system will act as a confidently wrong junior developer. In the end, most your time will be lost.

Worse than that, discovering the problems generated by the tools will not be a trivial task, and in the end result in a lot more time loss than if you would simply not have used any AI Agent.

So be conscious about the difficulty of the task at hand.

(+) Boilerplate

For writing boilerplate code following your project's best practices I would say my experience was positive. Some subtle errors could appear, and this was not great. Still, it is faster to use the AI for the boilerplate than typing it yourself most of the time.

(++) Small disposable scripts that don't need to be reliable

If you need to write a script that don't need to be highly reliable. In that case, I can say my experience was a BIG NET POSITIVE. It worked because the tasks to write this script was:

It built he tool for me in a few seconds which would have taken me more time just typing it.

An important remark however, is that if you know what would be the "Best tool for the work", this would also tremendously improve the speed and quality of the result.

I asked the Agent to build the same tool twice. First in bash, second using babashka. And for my specific need, not only it was a lot faster to build the tool using babashka, but the result was clearly superior both in design and quality as well as efficiency.

(+) PR Reviewing

I think a nice use case of AI Assistant is to ask it to generate a review of your PR locally prior to send it to show it to your team.

While 20% is not much, this is still a net positive. Personally I feel that using AI just for review would already be a good reason to add them to your tool-belt.

(++) Asking specific technical details about your own project

Using RAG + Clojure-MCP to search and discover the details of your Project, this ended up being very useful.

I work on a huge base code. We created a full platform from scratch that contains hundreds of technical details. Some of them are long forgotten in some documentation, and some were not even cleanly documented due to time pressure during the delivery.

Still I could ask these very specific questions and got a clear answer. Of course, as you should never trust the system fully, I asked for the source code and documentation to be able to verify the answer. And it worked perfectly.

Typically I could ask "What is the HTTP Header to use for this specific feature?" and it looks at the code and returns the value with a small documentation and pointer to the sources.

(+) Writing doc

While everything must be proofread because you cannot fully trust the Agent, this generally gives a good first pass overview and can generate a documentation of mediocre quality. If you want a good documentation it will need a lot more time. But I still give a positive outcome as existing and bad documentation is still a net positive comparatively to no documentation.

(-) Writing tests

In my experience, asking these agent to write tests can either be a net positive or a full net negative were I had to delete all generated tests. So I wouldn't recommend using AI code generation for writing advanced tests cases. But I feel this is fine for very specific small functions. And even there, you really need to be cautious about passing tests that are not useful at all and just give a false sense of safety.

Sometime it is just better to write the tests, at least the cases but not the boilerplate, yourself to be sure you are testing the correct thing.

(++) Familiarize with foreign code

The ability to generate a PROJECT_SUMMARY.md as suggested by the Clojure-MCP tutorial, proves that these tool can really help grasp a new project. It's structure, the generic ideas, etc…

This is not totally perfect, but I got impressive results, so this count as NET POSITIVE.

Conclusions

With this new tryout of the AI tools I could discover tasks for which they are useful. In terms of productivity, I believe their benefits depend tremendously on the type of work you assign them. I feel they have a place as a daily-use tool, particularly for pre-reviewing your code and helping you write documents.

To be effective you need to:

  1. Use something at least as efficient as Claude 4 Sonnet; so an Agent with Clojure-MCP and RAG support.
  2. Be conscious about the scope and complexity of the task
  3. Be able to provide precise technical specification of the task
  4. Always be conscious (evaluate and monitor) the time it would take to complete the task manually versus the time spent supervising the automated tool.

If you familiarize yourself with these agents, really try Clojure-MCP. It is a game changer and that provide a pretty huge advantage to Clojure comparatively to other programming languages.