The tool evolved, but so did I

In this period of time, Copilot changed a lot. New features were added and new products emerged, such as the CLI. They became easier to configure and tweak with custom instructions.

The tools changed, but so did I. I learned and became better at prompting, at refining questions and at articulating my requirements. I also learned to use configuration files to avoid repeating myself. 

My most recent experiments have been heavily influenced by earlier ones; failures were responsible for the many wins that came after.

Wrapping up

So, where does all of that leave us? Is there a superior tool to rule them all? The answer is not that easy. It really depends on what you are trying to achieve.

Am I writing code in the IDE? If so, the inline coding assistant is my best friend. Yes, it will make mistakes, but it will quite often generate the code that I was about to write manually. Depending on context, it should also pick up on best practices I’ve already established. While I have to be vigilant about what’s generated, working in small iterative chunks counters some of the risks. And if I have some pending question, I can use the chat in ‘Ask’ mode to discuss options.

If I want to refactor a file, the chat in agent mode is very powerful. A careful prompt or a well crafted instructions file will be effective at migrating a file from one framework to another, and removing duplication in tests or production code. Ideally the IDE will also run the tests or the linter and process the output, but at present I find IntelliJ lacking here. Tools aren’t yet well integrated with the agent. I suspect VSCode might be better, because Copilot has developed there first. I haven’t tested it yet.

If you want to work on the repository as a whole,  the CLI is fantastic. With a well-made plan (that the agent can also generate) it’s able to work autonomously to upgrade configurations, research and modify code, refactor, run various command line tools, process the output and react accordingly. The agent will keep a TODO list to keep track of its progress and be able to iterate over it.

Both agents (IDE and CLI) are extendable with custom commands and instructions files. This can help you streamline recurring tasks.

Maybe, then, there is an easy answer: use the right tool for the job! It’s simple but very much applies to the ongoing wave of GenAI tools.

What next?

Custom agents and agent skills are trending. At the moment I’m currently experimenting with them and, so far, have seen great results. I’ll continue in that direction for now, at least until something else emerges that demands attention!