2026-01-21 strategy
Thinking that 6 months ago I didn’t use LLMs at all for programming and seeing the use I make of it today, I thought it would be interesting to write a blog post about the evolution.
This post is based on my experience developing Asfaload, an opensource multi-signature sign-off solution developed in Rust and using minisign for handling cryptographic signatures.
Some important points to note are:
- I’m working on an open source project, and I’m ok sharing the code with LLMs.
- I am the solo developer of the project.
- I was starting the project using a programming language I didn’t know at the time. Finding solutions to the error messages returned by the Rust compiler was a good incentive to interact with LMs.
- I’ve always enjoyed designing and specifying the systems I was working on. I spent months specifying how Asfaload would work and this as paid off now I’m using LLMs extensively.
While these factors are important regarding my experience, you might follow a similar path in your journey discovering what LLMs can bring to programming.
First phase: prudent discovery
In the first phase I started to use LMs via a chat interface to ask questions about how to write some code or about error messages I got from te compiler. I was just starting Rust and it was very interesting and very helpful to progress much faster than I would if I hadn’t had access to these chat interfaces.
But then I started asking questions that that were increasingly complex. And that led me to the second phase of my use of LLMs for programming.
Second phase: getting familiar
As my interactions with the LLMs via the chat interface were really helpful, I asked questions that were getting complex and that became deeply linked with my code. Inevitably I started to paste code excerpts. Initially I thought I would write the tests myself, but it appeared that it was very helpful to let the LLMs generate the tests and to review them afterwards. So a lot of interactions with the chat but of the kind “Write me exhaustive tests for this function that I paste below”. This worked fine even if I reviewed all the code generated and I regularly add fundamental changes to apply. In the end it made me win time and if it didn’t make me faster, it freed me from the burden of unpleasant work.
But as the test generation worked fine, I went further and began to ask a question regarding code in the application. That led me to the third phase.