I shouldn’t have to care about this. I don’t want to care about how someone’s code gets into the IDE. Whether you wrote it by hand, copied it from a forum, prompted an LLM, or ran a simulation where monkeys are given infinite time to produce the solution.
I care about what gets merged into the codebase.
When I click that “Approve” button, I’ve got only a few worries on my mind. Does it produce the correct outcome? Will people understand this next quarter? Will they be able to change it?
But lately, I started noticing things that immediately tell me the code is written by an LLM. No, I don’t mean the repetitive comments (I’m fine with those), not even the switch statements they’re so fond of.
I know the code was generated because it was written in a way no developer on the team would.
It works, it’s clear, it’s tested, and it’s maintainable. But it’s written in a way that doesn’t follow the project conventions we’ve accepted. I know it wasn’t written by a human.
Because no one would write an HTTP fetching implementation covering all edge cases when we have a data fetching library in the project that already does that.
No one would implement a bunch of utility functions that we already have in a different module.
No one would change a global configuration when there’s a mechanism to do it on a module level.
No one would write a class when we’re using a functional approach everywhere.
I don’t want to know how you wrote this. I just want to know that you care about what comes out of the model. This is code you wouldn’t have produced a couple of years ago.
We spent decades coming up with patterns and standards that help us build maintainable software.
That’s always been the challenge - putting something in production that you can take care of for years. Anyone can vomit up a working implementation. You’ll stitch together a Frankenstein-monster-looking piece of code that will get the job done.
The part we’ve struggled with is making changes to that after you push it out the door.
I was at a local café a few days ago, and they were training a new barista. There was a long line, and the new guy was startled, rushing to make the next cup, spilling coffee and milk.
We’re back at this stage, rushing to push out the next piece of software because we think that speed is the greatest virtue.
But people want a good cup of coffee, even if they have to wait a little bit for it.
I always thought I’d be getting angry at the finance people who’ll be looking for ways to write smaller digits in the spreadsheets, but I’m disappointed by my fellow developers who quickly threw all principles out of the window so they can speedrun software development.
I don’t care how the code got in your IDE.
I want you to care.
I want people to care about quality, I want them to care about consistency, I want them to care about the long-term effects of their work. LLMs are engineering marvels, and I have the utmost respect for the people who’ve created them. But we still need to build software, not productionize prototypes.
Write better prompts. Give better descriptions. Tell the LLM what library to use. Give it examples to follow. Write smaller files. There are no new principles - follow the ones that already exist.
Don’t leave a codebase’s maintainability to the weights of a model.
Integrated Development Environment, a software application that provides comprehensive facilities to computer programmers for software development.
Whether you wrote it by hand, copied it from a forum, prompted an LLM, or ran a simulation where monkeys are given infinite time to produce the solution.
A feeling or atmosphere that is created by a particular situation or environment.
I Know When You're Vibe Coding
To combine two or more things to form a single unit or entity.
I care about what gets merged into the codebase.
To officially agree to or accept something as satisfactory.
When I click that “Approve” button...
Repeated many times, often in a way that is monotonous or uninteresting.
No, I don’t mean the repetitive comments (I’m fine with those)...
The action or process of using a model to replicate the behavior of a real-world system.
prompted an LLM, or ran a simulation where monkeys are given infinite time to produce the solution.
Capable of being kept in good condition and easily repaired or updated.
It works, it’s clear, it’s tested, and it’s maintainable.
Designed for or adapted to a practical purpose; based on functions rather than classes.
No one would write a class when we’re using a functional approach everywhere.
To produce something in a messy, uncontrolled way.
Anyone can vomit up a working implementation.
An early sample, model, or release of a product built to test a concept or process.
But we still need to build software, not productionize prototypes.