why I won’t vibe code
Vibe coding has become a popular meme, and it basically means “coding by prompting”, but I’ve always felt weird towards adopting these AI tools heavily, especially in this manner.
I see lots of people though using LLM’s to get answers to questions, bootstrap a bit of code or write unit test boilerplate. But still, in these simpler and seemingly more innocent use cases I feel strange using these tools.
thought offloading
I think part of me is afraid of offloading my thinking to a machine.
Not everyone is like me in this regard, or needs to be, but I really like thinking deeply about difficult problems and getting my hands dirty. I feel like this is truly the fun part of engineering.
I think that deeply learning new things, exercising the mind, trying to use it to its full potential while attempting to develop it is a way to become better humans in the long term.
the LLM tradeoff
When you offload your thinking to an LLM, it is usually a productivity <-> skill development
tradeoff.
You use it to bootstrap some boilerplate code for a new project quickly because you want to get to the fun part of coding, or generate some test cases, or maybe you use it to get gift ideas for your mom.
I can see how these can feel valuable uses on a personal outcome level
, and I’ve certainly used LLM’s for some of these in the past.
-
But as a participant of an engineering discipline, is it
right
that we need to write so much boilerplate (looking at you, Java)? Should we instead focus on building/using tools, languages, frameworks and abstractions that are human-centric and that we can easily reason about? Is there an argument to be made that we sometime feel the “need” to use LLM’s because the abstractions and platforms we’ve built for ourselves are not yet optimal? -
As software engineers, should we focus on maturing the ecossystem, its tools and upskilling developers, or keep the status quo of what the LLM’s are well trained on and stagnate as a discipline?
-
As a tester of a complex system, is it
right
that you cannot come up with edge cases and thorough testing scenarios? Maybe that would mean you need deepen your understanding of the product and customer journeys. And you don’t need LLM’s to do this. -
As a son, or daughter, is it
right
that you need to use an LLM to think of a gift idea for your mom? Maybe you should focus on deepening of the relationship instead.
value
The productivity <-> skill development practice
is ultimately about what we value at a certain point. Maybe we really need to quickly achieve an outcome that does not need to be the most correct, and that’s okay, but it is important to be very conscious of this tradeoff
Personally, I believe that what makes me valuable as a software engineer, as someone who is testing a system, and as a person, is not that I achieve outcomes faster and with less effort. The effort itself can be rewarding and reaps longer-term benefits.