A sculptor doesn’t wait for marble to shape itself.

They chip away, adjust, squint, undo, refine. The block doesn’t matter much—what matters is the eye that sees the statue inside.

It’s the same with LLMs.

They can generate passable code in seconds, and that’s genuinely exciting. But I’ve learned that passable code is rarely what we really want. The real work often happens after that first draft: shaping, refining, and figuring out whether it matches our bigger goals.

I started Vibe coding

I started coding in the 90s on my parents’ computer (yeah… exactly how you imagine it, but French). Over the years, I’ve switched hats from developer to applied scientist to engineering manager. My perspective is just that—one person’s journey—and I’m happy to share what I’ve seen. Especially now that AI can write code almost faster than we can blink.

Because yes, AI can produce results. But only we can decide if those results are actually good. And that depends a whole lot on context—something no code generator can predict on its own.


Before AI, obviously you needed to know what you wanted to code before you started. Good devs were the ones who had a vision in their mind before typing a single line.
You can call this whatever you want—I call it Taste. The taste to know what the end product should look like.

Taste isn’t something you get from only reading manuals or endless Stack Overflow threads. It comes from making plenty of mistakes—like nesting conditions until your eyes cross or using clever shorthand that’s indecipherable six months later.
As a manager, you tend to repeat yourself, and this is the song I sing: “If you want to get good at coding… code… a lot.” That’s the only way to develop taste.

Without taste, even the cleanest AI-generated snippet can become a headache. With it, even an AI-generated mess is a great starting point.


I don’t like going straight to the point, so here is a small detour. I also make music, and there’s a striking parallel here. Cory Wong, the groove-driven guitarist from Vulfpeck, once said in an interview that he doesn’t really care how he achieves his signature sound. Pedals, amps, plugins, microphones—it’s all just gear. What matters to him is how quickly and reliably he can get from the idea in his head to the sound coming out of the speakers.

That’s exactly how we should think about AI and code. The tools don’t matter as much as the speed and clarity with which we realize our vision.

On the flip side, composer Cristobal Tapia de Veer—best known for the haunting soundtrack to The White Lotus—describes a different creative path. He often starts with something raw, messy, and strange: a weird rhythm, a warped sample, a feeling that doesn’t yet have a shape. Then he layers tools and tweaks until it becomes a fully-formed piece. But the important thing is that the initial idea drives the tools—not the other way around.

That’s a reminder that “professional polish” doesn’t matter if the vision is missing. Whether you’re sculpting music or software, it’s the intent behind the creation that gives it meaning.


Context shapes what “good” actually means. Think about your project: is it a quick prototype, an MVP, or mission-critical production code? Each scenario carries a different definition of good. For a hackathon, “good” might mean fast and hacky. For production, “good” likely means robust, maintainable, observable, and reliable.

I often use AI to jumpstart tedious tasks—connecting services or quickly visualizing an architecture. But every time, I pause to check against the actual goals: “Does this scale? Is this readable? Will anyone be able to maintain this in a year?”

Those small moments of reflection—of applying taste—make the difference between good-enough-for-now and genuinely good.


There’s been some handwringing lately about whether AI will turn junior devs—or any of us, really—into mindless copy-pasters. I prefer seeing it as a unique opportunity. If AI handles the routine stuff, we all have extra energy to discuss deeper, more interesting problems.

In code reviews, instead of dismissing AI-generated code, I ask, “What’s your vision here? Does this match it? How can we make it clearer or easier to maintain?” It’s not about being critical; it’s about encouraging the implementer to know what they want to do.

It’s less about policing syntax and more about helping each other develop judgment. Together, we can refine taste and strengthen our collective skill at shaping ideas into clear, intentional software.


I’m all for embracing AI tools. They’re a massive boost—(probably) not a threat. But remember, they’re still just tools. They don’t know your team, your goals, your style, or the stakes of your project. They might give you something slick and well-formatted, but of course, it will quickly blow up if you don’t know where you’re going.

At the end of the day, genuine quality isn’t something that AI alone can deliver. Quality comes from clarity of purpose, thoughtful design, and careful editing. Just as marble won’t carve itself, your code won’t shape itself into greatness without your guiding vision.

So, yes—use AI. Enjoy skipping the boilerplate. But stay firmly in control of what you’re creating.
Because, tools aside, you are a craftsman—what is it you are crafting?