A few weeks ago, I read on Xiaomi's website that its new MiMo-V2.6 model can generate 3D objects in Blender. It made me curious to try, so I installed Blender on my machine, launched OpenCode, selected MiMo-V2.6 as the model, and asked if it could model something in Blender for me. It had me install an MCP server into Blender, then asked me what I wanted to build.
In this spooky season, I had the idea to ask for a jack-o-lantern. It created a pumpkin. I asked to carve a face in it to make it an actual jack-o-lantern. It carved all right. I continued to iteratively refine what I wanted, over the course of two weeks, because I kept running into the rolling limits of my OpenCode Go subscription.
Here is the final result, with the jack-o-lantern dimly illuminating its environment in a 30-second video:
Having absolutely no prior knowledge about Blender, this two-week-long session of "vibe 3D modeling" was an interesting experience. Here are some observations that I noted in the process:
- Having an LLM do things that I had no clue how to do myself made me feel powerless at times, like I was at the mercy of the agent.
- That feeling of powerlessness was amplified whenever I ran into my subscription's rolling limit, as I didn't have the ability to continue the work by myself.
- Whenever the result felt wrong, I was lacking a common language to precisely explain the problem to the LLM. That resulted in having very low confidence in my own prompts.
- I had to blindly accept every recommendation from the agent, as I couldn't understand the options it was describing to me.
- I possibly asked the agent to solve problems that weren't real, because I hadn't realized there could be differences between how things appear while playing an animation in the viewport and in the rendering window.
- The agent was assuming I knew what I was doing, so it tried solving those possibly nonexistent problems, which in itself could have caused real problems.
At some point in the process, I closed my Blender project and re-opened it. Ever since, everything in the viewport appears in gray, and the brick wall behind the pumpkin is either invisible, or now appears as a plain wall. Why is that? No idea 🤷. All that matters is that it does not seem to make a difference when rendering. If you are reading this and happen to know how to use Blender, I apologize for the pain I am probably causing to you.
The conclusion of this project is that I think I now know how it feels to "vibe code" when you truly have no clue how to program by yourself. As a seasoned programmer, this is not a feeling I normally have access to. In order to experience that feeling, I had to have an agent do something that I would be completely and utterly incapable of doing myself. The corollary to that conclusion is I am now unsure programmers can really vibe code to begin with.
When I think I am vibe coding, it probably means I am not paying very close attention to the code being generated (which, as a side note, is not a practice I condone for projects with actual risk). That does not change the fact that I am very arguably applying my programming skills and knowledge:
- I usually have a pretty solid intuition of what the solution should look like from a technical point of view.
- I tell the agent what to do in precise, technical language.
- I cut the work into smaller pieces that are reasonably scoped and ordered in a strategic manner.
- I can tell when the agent is getting sidetracked, and steer it into a better direction.
- I evaluate the trade-offs that are being presented to me.
All of these points describe the opposite of what was happening when doing my jack-o-lantern project. In that context, I:
- had no intuition at all of what the solution should look like from a technical point of view (what "commands" the agent should use in Blender);
- could not use technical language to tell the agent what to do;
- was still cutting the work into smaller pieces, but could hardly judge if they were reasonably scoped and ordered strategically;
- could not tell when the agent was getting sidetracked and lacked the competency to steer it;
- could not evaluate the trade-offs that were being presented to me and had to resort to blindly trusting the agent's recommendations.
The differences between these two cases can be summarized this way: the former shows skills, the latter doesn't.
My hypothesis is that even when they think they are "vibe coding", programmers can't help but show programming skills. If a programmer has to solve a problem using software, they will approach that problem in a way only a programmer would, even if they don't write the code themselves, and even if they don't care about the code at all.
And if somebody is "vibe coding" in a way that only a programmer would, then I don't think it really qualifies as "vibe coding". It has to be something else.
