I’ve always had a hybrid career: started as web development intern; opened my own startup doing it all as any founder; returned to software development; spent a little while as a product owner and currently I do a mix of product management with software development with a little plus of working at Igalia that is a coop so I also spend time on other company management work (such as helping a bit with communications or sharing the company decisions with the other co-owners).
That said, I always considered myself a generalist professional, not an expert and sometimes I felt this was a weakness (will I ever be really good at something?). With the rise of LLM tools, I noticed that being a generalist is actually very handy and I can use the tools as my own personal experts to complement my skills. I want to share a bit how I’m changing my workflow and adapting to this new way of working to make the most of the AI tools.
There were a few ah-ha moments that I can think of since I started using the tools that really felt like magic and made me certain that things were changing for good and it’s not just a fad, I cannot see myself manually typing every line of code anymore like I used until not so far in the past.
The first times I tried autocompletion a few years ago it was not very useful. The experience was a bit frustrating and the IDE felt more like an annoying colleague trying to guess what I was doing and suggesting non-sense code all the time. I was skeptical at the beginning but I decided to give another chance with Cursor, that was the first “wow”, I finally saw the potential of having the IDE autocompleting my thoughts and speeding up my work.
I used it for about a year, until Claude Code happened. The first times I tried Claude Code it didn’t feel so different from the agentic features built in Cursor, so I wasn’t very excited to switch directly, but it really clicked when I changed my mindset to not using it as a smart IDE but rather as a real agent to whom I can dispatch work to and supervise the results. Now I noticed I barely touch my IDE anymore, just for minor refinements or small fixes that will be faster to do myself than asking the agent to do it.
This shift puts me back into doing more and more product management work than software development and now I have this constant feeling that I could be doing much more than what I’m doing right now, but to do that I need to take a step back, rethink how I work and how I can unblock AI to do more stuff without me. It’s not about removing myself from the loop, but putting me on top of it and using the best of the tools.
What did not work
- Supervising every step: I know LLMs are not deterministic and they do make mistakes and giving permissions for it to do everything can lead to very harmful actions, but at the same time supervising every single step doesn’t scale and changes very little the process of development. Unless the usage is for research and debugging together where the goal is not automating anything but expanding your knowledge and using the tool to find and debug bugs together, in this case it makes sense to go step by step.
- The temptation of having an infinite amount of agents working on several things in parallel without a proper process: do not understimate the cost of human context switching. The agents can do a lot and much faster than me, but jumping from terminal tab to tab reading and trying to understand what the agent is doing or asking for sometimes feels more like a slow down than an actual improvement and makes my head hurt.
- Not giving technical direction or enough context and just acting as a user reporting issues. This almost always lead to the agent coming up with duplicated and not optimized code, or making the agent running around its own tale creating over-engineered solutions. That’s when my technical side helps a lot: apart from having skills that make sure the agent follows some basic rules or custom rules to the project, being able to direct the prompt to a solution or a path I would try myself, always returns in a simpler solution and much closer to what I would reach by myself - but much faster.
What did work
- Treating and trusting the agent as a functional tool that can act and make decisions by itself.
- With the right process, we can trust the output. The LLMs and agent harnesses are already good enough that most of the output is good and useful, so I can finally trust them.
- Focusing on prompting good requirements, give the righ context and don’t treat the agent as a human, but as a capable bot, they don’t have memory (I know this can be “fixed” with a bunch of md files) and they can’t read thoughts (nor do humans, but with agents we need to particularly remember this).
- Taking time to experiment and think about how I work. I feel there’s this pushed idea that AI is magical and once you start using it you become a 1000x engineer and coding is solved. Part of it may be true but it won’t change your workflow automatically, you need to try for yourself, make the effort to adapt and see how they best fit your work. Changing processes and habits are hard and we can’t overlook this.
Next steps
I still oversee a lot of the agents work and more and more I feel I just became a bottleneck in the agents progress because most of their work is already pretty good, so my goal now is to sandbox the agents work as much as possible to let them run loose without risks and put myself in a leadership position, not as a pair. Currently I’m working on optimizing my own dev setup and the projects I work on to be more agent friendly.
Some ideal workflows:
- issue created -> agent reads, asks for clarification if needed -> works on a fix -> submits PR -> another agent reviews (loop until is ready to merge) -> I review, test, and merge
- PR is created -> agent tests and review -> adds screenshots to the PR -> approves or request changes -> when marked as ready I validate and deploy
Nothing is very new or different from what many people are already doing but this would automate most of my repetitive work leaving me space to work on the areas that really need humans: understanding users needs, prioritizing work and figuring out how I can help the whole company to be more productive.
I’m also planning to experiment with open weight models and move away from CC for most of my work, I might write about my ethical concerns surrouing LLMs in the future, but wanted to write about my practical experience for a long time now. Meanwhile I suggest reading this post from Charity Majors that summarizes a lot my feelings.