I have no problem with vibe coding. Yes, you can make bad code with it, and quite easily. The worst way to vibe code is to issue a monolithic prompt like “Build a word processor with the features of Microsoft Word.” But using techniques like chain-of-thought or plan-and-solve prompting in an iterative manner can yield pretty good results. Not perfect – you’ll still have some last-mile editing to do – but it can provide a pretty good jump start.

I’ve been writing code in one form or another since I was ten years old. Commodore, Apple, HP MPE, Unix of various flavors, VAX, a few Linuxes, more Windows than I care to recall, MacOS, a little Android and so on. A litany of languages across those platforms. Over that time (which seems to coincide perfectly with me getting older), I have grown more fond of helper tech. IDEs? Yes. Auto-indent? Bring it on. Intellisense? Even better. Anything that lets me focus more on the problem I am trying to solve and less on the tooling I am using to solve it has my vote.
Right now, I am really enjoying AI assistance in IDEs like Cursor. I find it to be generally unobtrusive and it seems to learn my style over time so I find myself accepting more of its suggestions. It’s nice that it’s fairly atomic – doing things like figuring out that I probably want to iterate over the list I just created. I recently wrapped a project where I did a lot of prototyping in Databricks notebooks (I am not a fan). The AI assistance was nice because the environment loads so many libraries in the background that it helped me keep track of things.
But, as much as coding assistance is nice, I have found myself gravitating to “vibing” the ancillary tasks to the actual coding. I feel like this is where AI assistance is really shining for me right now. Those tasks are all of the things that make your code useful for other developers – adding consistent module and function docstrings, adding comments in particularly gnarly blocks of code, performing code review, or generating readme files.
It’s clear that AI tools are fairly good at understanding code. There are also reasonable concerns about the quality of code generated by AI. That said, its ability to understand code is useful for those adjacent tasks. I work mostly in Python these days and, when I get finished with some code, I will typically load it up into Claude and ask it to add docstrings to all functions and explanatory comments around code that would be unintuitive to a junior developer (yes, you can have it look at the code from that perspective). I will then follow by asking it to create or update my README based on the latest version of the code. I may also ask it to do a code review (making suggestions, but never editing) because I usually work alone and it can screen for places where I was lazy with PEP8 compliance, casing, or type hints and such. I then usually wrap up by asking it to create/update the requirements.txt or Conda environment YAML for the code so that it remains deployable.
Recently, I’ve been working on creating a Claude Code subagent to encapsulate all of this. I can update the subagent to address project specific requirements around headers, variable names and the like. I’m looking forward to getting the subagent into production.
I’ve generally found Claude and ChatGPT to be pretty good at these tasks. I also use codegemma through Ollama for customers who want ironclad guarantees that their code remains private. I don’t recall the last time I saw a blatant error resulting from any of these requests. Usually, the changes are stylistic. For example, AI really likes to insert emojis into text and that drives me crazy so I take those out.
The biggest risk is that AI tends to be overeager and, by default, will want to “fix” your code. It’s pretty easy, via prompt engineering, to keep it from doing that but it can be really frustrating when you forget. I never want it to change the functional parts of my code, just add comments and tell me about issues it found.
As a one-person shop, AI tools have become useful additions to my toolbox to allow me to ramp my productivity with minimal infrastructure. They continue to mature and get better as productivity enhancers. Their shortcomings remain persistent enough that I don’t worry about them replacing developers anytime soon, but developers should feel comfortable adding them into their workflows for supporting tasks.
Header Image Credit: Michal Klajban – CC BY SA 4.0