The Rust experience in every language
Rust's borrow checker and compiler messages were unique on release. Clear messages, arrows pointing at the exact problem, and sometimes a good suggested fix. No programming language I used at the time, not even Go when it was released around that era, came even close.
I became a better programmer learning from the Rust compiler messages. While I never stuck with Rust for larger projects, or long enough to say I mastered its features, it correct many habits in my work and increased my understanding (mostly of memory safety and management).
But this is not a post about Rust.
Sometimes I miss programming. I don't do it as much anymore, and when I do, I'm never alone: there's always an agent available, if not already running. How can I still get programming time when AI can do it so much faster?
So an idea hit me: code as fast and well as I can, then rapidly iterate by feeding the results to AI. I remember doing that kind of "fearless" and rapid development when I was learning Rust because I trusted the compiler to catch me. With an agent evaluating my work, any language can have the equivalent of a Rust compiler — except better in some ways because a compiler is deterministic, and while AI isn't, it can explain why in top of what. Even languages like JavaScript and Bash.
Try prompting your agent to be a pair-programmer, give it the goal of your programming session, tell it to not write code for you (tell if to show suggestions as diffs if you prefer), then start the loop: write code, ask for input, make changes, repeat. Ask questions, tell it to make specific reviews or look for specific things as needed.
I've been learning again while writing a lot more code since my workplace has required AI-centric work. I still delegate work to agents, but this way I'm programming and learning again. Agents are better and faster than searching docs or the internet for answers, they can tell you the sources so you don't blindly rely on it, it can dig into a dependency's source code and explain concepts, conventions, and protocols to aid in writing better software.
This is by no means revolutionary. It's also not a post about how AI is awful or about reclaiming the artistic side of being a programmer. Instead, I'm enhancing my programming skills by realizing I can use this tool to make every language have the Rust compiler feeling. This has helped me retain ownership of my work while keeping my skills sharp. It'll never be faster than vibe coding, and that has its place. Working this way may also mean setting expectations with the people you work with and report to, since it's slower than letting an agent write everything. In my experience, it's mostly non-programmers who don't get why (to their own detriment, I'd say).
Help them understand that over-reliance on AI erodes ownership, which makes issues harder to find and fix before deployment. Time to review code written by agents can take as long as writing it yourself with their help, the latter process guarantees better quality, direction, and creativity when needed.
And this is much more fun than prompting and reviewing AI-generated code all day.