AI for developers. Should we fall in love?
Published on
If you started reading this post attracted by its title, you might be disappointed. You won't find a love story between humans and AIs here, not even a typical narrative. These are simply some notes, with a certain structure, about my view on the current state of software development with and for artificial intelligence.
By "with" I refer to writing code with the help of AI. And by "for," to developing specific software with integrated AI.
Ways to develop with/for AI
As of today, there are 5:
- Not using AI
- Chats
- Code assistants
- Code assistants with AI agents
- Development of proprietary agents
Not using AI
I understand this stance, especially if you're a Senior developer and you're a bit tired of all the noise around the topic. I acknowledge that there's a lot of hype in AI (give the article a chance, it's always good to have some wind among so much smoke 😉), but it's worth using it, if only to save yourself from going through Stack Overflow two hundred times to solve an error that's blocking you or to avoid having to read through the entire documentation of a new API to develop something simple.
Chats
ChatGPT, DeepSeek, Gemini, Claude, etc.
These are the most widely used type of tools. Both because of their age and accessibility, as all models have free versions through browsers or apps.
The type of interaction with AI is conversational: we ask questions and get answers. But the chat's disconnection from our local files forces us to move code back and forth.
In chats, providing the right context is fundamental. Given that their knowledge is vast, to get precise answers about a specific programming language, it's necessary to narrow down and clearly define the scope of the query. For this, we use prompts with:
- Role
- Experience
- Technical staff
- Prompting techniques such as:
- Chain-of-Thought
- Knowledge Generation
Additionally, chats have evolved, incorporating the possibility of adding extra context by uploading files from your local device or even directly from GitHub repositories, as in the case of Claude.
Code assistants
GitHub Copilot, Gemini Code Assist, V0, etc.
Their use is not as widespread. This is because they are more recent than chats and because their free versions only last a few trial days. Although this situation seems to be changing; for example, Google offers its Gemini Code Assist for free for individual use.
In addition to being able to converse with AI, assistants offer code suggestions for the file we're editing. Unlike Chats, here we don't have to copy and paste code.
Providing context is not as important. Their knowledge is limited to code development, and they read the file we have open, which allows them to know the language we're using.
When making queries, you can add files or specific lines within a file, but assistants don't have the context of all the files in a project.
Code assistants with AI agents
Cursor, Pythagora.ai, CodeGPT, and soon GitHub Copilot Agent Mode (if you have a GitHub Copilot license and want to try it, sign up for the waiting list, maybe it was luck but I was given access in less than 24 hours).
In addition to conversation and code suggestions, this type of assistants includes AI Agents.
While for traditional code assistants context was not as important, with the use of agents it becomes essential again, especially if we're going to build software from scratch. So don't set aside prompt engineering, and thank goodness because I consider it one of the most fun parts of working with AIs!
Unlike "traditional" assistants, agents do have the context of all the files in a project, including their relationships (such as function imports). Additionally, they are capable of:
- Creating and modifying files. Always pending your final approval
- Using the terminal. Seeing this for the first few times is a bit impressive 😅
- Creating branches and making commits. Merges are left to a bipedal mammal.
- Working in parallel with you. Yes, you can review the code for an API connection while it develops the 5 new components you've asked for 😳
Development of proprietary agents
This path is the most different, as its true function is not to help us develop code, but to create software with integrated AI.
There are several frameworks (mainly in Python) that facilitate code development, agent creation, and LLM integration. Among the most used are LlamaIndex and Crew AI.
In theory, we could develop our own tools for code creation. However, my opinion is that, unless you're looking for a very specific solution, building an assistance agent doesn't compensate for the effort. The reason is simple: it requires developing multiple components from scratch that in the case of Assistants like Cursor or Pythagora are already included:
- Tools to read code from a repository
- RAG (Retrieval-Augmented Generation) to give context to the LLM:
- Vector database with the repository's code
- Retrievers to make queries to the database and return results to the LLM
- Agents and tasks
- Tools for writing code
- Other technical components
However, I believe the power of this approach is that we can incorporate AI relatively easily into our software and develop our own AI tools without depending on those offered (and charged for) by third parties. Although for now, we cannot completely get rid of paying for queries to the APIs of the models we use in our developments. An alternative to APIs, especially if you don't need great depth of reasoning, is to use local models, but that's a story to tackle in another post 😊
Some final thoughts
I believe the use of chats will not disappear. Being dissatisfied with the assistant's proposal, preferring to compare the response with other models, or learning about a new language while you're on the train, are situations where turning to these tools will continue to be a good option. So if you see someone asking questions to their phone about Redux while grabbing a carton of milk at the supermarket, give them a chance, maybe they're not completely crazy and are simply trying to resolve a doubt they brought from work using ChatGPT's voice interface.
I believe all code assistants will end up including agents and will become the standard of work for developers in the near future. I also believe that the way of working will change radically with them, although I have no idea what our profession will be like after the transformation.
I believe it's worth delving into the creation of software with integrated AI. Getting started is affordable, with a gentle learning curve. A significant part of our profession will be oriented towards that. And fundamentally because everything is yet to be done, which means a lot of fun!
So, should we let ourselves be carried away by the general madness and fall in love? Well, if we learned anything from Theodore, it's that falling for an AI is not a good business, so let's better explore these new tools calmly, learn to use them (and enjoy them) and see what remains when all this apparent passion dissipates. Because what is certain is that for a long time, behind every line of code will still be human judgment.