The Guardrails 12: Vibe building
My raw reflections on vibe coding and what it means for data science education
I'm not a handyman. Any major home maintenance issue is a nightmare for me. I'd rather trade expensive labor costs for a few hours of sanity. That said, I'm currently building an above-ground pool, and it is painstaking, both physically and in terms of navigating regulations. Yet, there's a certain contentment in the work, and it's related to "vibe coding." Just like I've asked countless "stupid questions" to actual handymen and my Gemini assistant, this new coding paradigm requires learners to reset mindset and educators to unlearn previous pedagogical approaches, but making that switch will be rewarding down the road.
Vibe Coding is Unstoppable
"Vibe coding" has exploded over the past few months. It wasn't even a recognized concept last year! I was happily using Windsurf just a month ago, but now, with the launch of Claude Code, which augments over 99% of the code in some projects I'm working on, Windsurf (while still beloved) is starting to feel a bit… old.
While many are rightly concerned about deskilling and cognitive offloading, and how these trends might impact learning, my focus is different. I'm thinking about how we can reset existing mindsets and approaches to learning. We shouldn't delude ourselves into believing that the old ways of acquiring knowledge and producing still hold true in this drastically altered world. So, naturally, "vibe coding" brings with it a critical debate: should we still teach students to code, or should they simply "vibe their way through" with AI assistance?
Why Foundational Knowledge Still Reigns: My Unpopular Opinion on R
Here's an unpopular opinion: I believe the R language is on its way out. Having taught R programming for over eight years, I've come to the decision that I will switch to using Python in classroom soon. This decision is purely pragmatic: Python is natively and far better supported by many vibe coding tools.
But this brings us back to the core question: should we still require students to learn traditional coding when they can prompt their way to a solution (honestly I don’t think they can)? My answer is a no. Basic knowledge of programming languages provides learners with intuitions that can pay off tremendously.
Like in my handyman analogy: because I lack fundamental knowledge about construction or mechanics, I have no intuition when a home appliance goes wrong. I can't even begin to diagnose the problem. Similarly, the more time you spend painstakingly debugging code, the more empowering you feel when using vibe coding. I was fortunate enough to spend the COVID years tinkering with open-source hardware like Raspberry Pi. This gave me some level of comfort with cloud servers and an intuition for why and how things could go wrong. I didn't learn this in a formal classroom; I learned by playing, by making, by doing.
Promoting a Hacker Culture: Beyond Formal Learning
My students will be a different group – many might never imagine themselves as coders, builders, or developers. Yet, practical vibe coding skills will not only enhance their employability but also help them develop informed and non-ideologically-tainted perspectives on AI innovations. (There are many hot and often misguided takes out there in the public sphere regarding AI!)
The real hurdle isn't necessarily using vibe coding or writing effective prompts. It's the mental block that prevents many from getting their hands wet, from diving in and experimenting. In short, it's the hacker culture we need to nurture – a culture that encourages playing with things, breaking things, and learning by doing. This learning approach is practical and bottom-up, built on hands-on experience rather than starting from philosophical or theoretical principles.
It's never about formal learning in the traditional sense; it's always about developing an in-depth and intimate experience with technology and using that experience to cultivate sensitivity. This journey should start with curiosity about how things work, rather than how things ought to be (which is a critical question, but perhaps one best answered in the next step). It should be driven by the art and beauty of creation.
As a Christian, I believe in the inherently satisfying process of creating something from scratch, of turning vague ideas into something tangible (as we are created in the image of Creator). My hope is that students will genuinely enjoy the process of ideation, turning those ideas into a prototype or product, and savor the act of creation.
For this group of students, I might offer a healthy dose of fundamental programming knowledge, but then leave the rest as a messy, experimental playground for them to make mistakes. The key then isn't just the delivery of a prototype but a genuine, satisfying experience of creation. So, in essence, I don't plan on teaching "vibe coding" as a skill. Instead, I plan on teaching vibe coding as a creative experience.
Embracing the "Handyman" Within
Returning to my home maintenance example, my humble goal is then to make someone like me – someone who isn't inherently handy or inclined towards mechanical work – genuinely enjoy the process of repairing a complex system. It's about shifting the mindset from fear and dependence to curiosity and empowered creation.