how i use ai in my work
ai use is different for everyone
I get asked periodically how I use AI. The honest answer is that I use AI tools narrowly and with conditions attached, as I find the same tools that accelerate a task can also flatten skill acquisition and ship artifacts I would struggle to defend as my own work. What follows is the set of conditions I hold to when writing, coding, reviewing, and deciding whether agents should be used at all. These rules are personal and provisional, and they sit downstream of earlier posts I have written, including the end of writing code and the beginning of directing it, building with ai is costly, and “Looping” is not new. I believe each development environment and business case is unique to each person and org where AI tools are concerned, and I advise aligning circumstances, goals, and budget before following my strategy blindly as it may not work for you or your team, etc. What follows is how I use AI in my work.
not really for writing
I leave text generation for cases on this blog that carry an explicit attestation, and for everything else, I write personally. Where models earn their place in my writing is in the less glamorous work of double-checking my dyslexic spelling and grammar, helping when I am stuck looking for a better word because of my ADHD, and acting as a first-pass reviewer. Put another way, AI is welcome once I have produced a draft of some text, and then invited in as a proofreader and provocateur. This post is one of those cases since the animated list below began as my notes and was shaped into these paragraphs with a Cursor agent under a writing profile I enforce and carefully review.
prototypes yes, unsupervised no
When building and coding, I use AI to stand up fast prototypes and initial MVPs, especially when speed of exploration matters more than maintainability. I generally prefer tab-based autocomplete to agentic workflows because incremental suggestions keep me in the loop on each line and preserve customizability. I don’t run automated PR agents or blind “loops” that merge or approve work without careful review by me. Testing and reading diffs with trained eyes remains integral to software quality, reliability, and the maintenance of my own engineering judgment. Delegation of coding and decision making incurs the same kind of tech debt of the days before agents, and oftentimes results in deferred debugging and heavy reliance on a token budget. I would rather pay with review time up front than discover maintainability and reliability issues later, which is also why I wrote about the review side of when to start a new chat.
what i measure when agents run
When I do use agents, I track an ever increasing set of metrics that tell me whether sessions are worth it. Currently, I keep a close eye on net new bugs introduced relative to my baseline, shipping velocity weighed against the review time changes require, and the ratio of token spend to realized profit or concrete shipped value. I also try to track my qualitative happiness using AI tools, as oftentimes using them causes more frustration than if I struggled through developing a key feature or fixing a bug myself. I also keep an eye on my health and sleeping habits as early on, during the vibe coding mania of late 2024 to late 2025, I had a tendency, like so many others, to work into the wee hours due to the slot-machine-like mechanics agents often exhibited with variable quality and reliability, and still do. In practice, metrics keep me honest about whether an agent is accelerating delivery or merely producing a larger pile of unreviewed code that still has to be paid for in my time later. A session that looks fast on a PR counter and expensive on the review clock is, by definition, worse to me than if I had just programmed all the things myself. If metrics do not move in a direction I can defend, I treat them as a signal to change how I use a tool, and often stop to reevaluate.
sacrificing learning outcomes is a hard no
I set AI tools aside when my goal is to learn something new; using artificial intelligence creates artificial intelligence. When I already know how to implement a solution and doing it by hand offers no further developmental benefit, I am comfortable handing implementation to a swarm and reclaiming my time for other work. Generally, AI tools must provably increase productivity without compromising clarity, quality, or learning outcomes.
in the form of an unordered list
• I do not use AI for text generation except for specific cases on my blog that are attested to.
• I do use AI to double-check spelling, grammar, to help with word ideation, and oftentimes as a first-pass reviewer of the things that I write.
• I do not let AI code everything for me, but I do tend to build fast prototypes and initial MVPs agentically.
• I do use tab-based autocomplete instead of agentic workflows when customizability and high quality are paramount.
• I do not use automated PR agents or “loops” blindly, as I believe testing and reviewing code with trained eyes is integral to maintaining software quality, reliability, and my own skill.
• I do track metrics when using agents, specifically net new bugs, shipping velocity versus review time, and the ratio of token spend to realized profit.
• I do not use AI tools when my goal is to learn something new, because using artificial intelligence creates artificial intelligence.
• I do use AI when I already know how to implement a solution and doing so manually offers no further developmental benefit.
• I do not use AI tools unless they provably increase productivity without compromising clarity, quality, or learning outcomes.
share your thoughts
Have feedback on this post? I'd love to hear from you.
As always, 'twas nice to write for you, dear reader. Until next time.