A memory that comes to mind when I say the word "vibe coding" is one particular Spanish class. We were given a portrait painting and described it to a classmate who was blindfolded. Using our best ability and our limited drawing skills, we attempted to recreate the drawings.
Perhaps if we got better at Spanish and developed our drawing skills, the results would have been more comparable instead of hilarious. Over the past few years, this has happened in regard to AI and its ability to create programs from verbal instructions.
When this new technology was released, like many others, I joined in. I participated in a hackathon where we used AI coding, as well as watched a seminar by Andrej Karpathy, which outlined the future of coding. Suddenly, I was convinced of its effectiveness alongside its future.
Apart from those early memories usage of AI to code, such as the time I had to share a laptop with a friend who had no experience like myself, as I got closer into the world of software development, I came to the point where I wanted to detail my experience with the technology for those who haven’t used it before.
My reflections and the principles that I outline can be followed by anyone working with these new pieces of technology, even though they are not particularly working in software development. My goal for these is to hope to inspire you to be able to use these technologies in a way that's enjoyable, fruitful, and that honors God.
This blog will contain three key parts:
- It is going to outline the trends of this technology.
- I will go to the principles and will outline why I follow these principles.
- I'll conclude with the reason I wrote this blog and my hope for you if you decide to follow this trend.
How did we get here?
To get a better understanding of what feels to be a technology that just appeared yesterday, it's beneficial to understand some of the history behind how this technology developed. It can provide a much better understanding of how we went from primarily coding in Python and code language into prompts.
The AI capabilities you've seen in chatbots were derived from advances in neural networks, mathematics, GPU architecture, and the scale of the computation. Early on, we were able to see major advances in semantic capabilities, which were applied to coding and software development.
Over time, general trends such as agents and web search were developed to provide capabilities which allowed for agents to not only perform small projects but work at scale and for longer periods. Alongside presence in code editors (IDE), this spurred further use.
While many individuals have speculated about the rate at which AI will continue to develop new advances and affect the industry, in my opinion there has been high rates of adoption but slow development in key areas such as logic, mathematics, and interpreting real world situations which only human developers can do. The question if AI will ever develop those capabilities is debatable and I believe it will not be able to surpass humans in those key areas.
But one thing is for sure: it reflects a change in how individuals are coding, from using lines of programming language to describing a product and logic through verbal instructions.
Principles
I remember listening to a podcast where developers were vibe coding with complex workflows late into the night, functioning on credits and caffeine, and I'd like to say I've been there. I hope to in this section provide as a student a reflection of the habits I developed and value.
I have three key principles to offer.
1. Paper
The first principle I have to offer is called paper. Paper really cuts deep. It allows you to reach deep work. When you're in front of a chat, you can only reach a certain level of deep work, but while you're writing on paper, you can detail your ideas and reach a level that's below. This sense of deep work is similar to what you can get while working in a code editor without using AI.
While building a soccer game, I developed code only in the editor and I was able to reach kind of like a flow state. Using a chat-based editor where you're going back and forth with the model using voice typing, it can be especially frustrating and overwhelming. Another reason that I especially value working on paper is the reduced amount of time I'm on a screen and the reduced amount of distractions. For example, if I was sent to a new GitHub repository, instead of feeling overwhelmed, I could think about it, write some ideas down, assess the situation, instead of having to do some quick Google searches. For these reasons, I strongly recommend using the code editor called paper.
2. Function not Magic
Leveraging AI to create is like trying to stretch out a rubber band to the point where it can perform its tasks but won't break. AI has certain capabilities which can create new pieces of software, but it also has key limitations.
When I started with vibe coding, I wanted to create all sorts of projects, and these projects were big. These could be done by a full team of developers working for months at a time, and I wanted to do it all in an afternoon. If you try to stretch AI across these types of projects over a short amount of time its going to be less fulfilling and rewarding than smaller projects. You may also never develop a strong foundation.
I believe it's great to come up with cool ideas for new projects. For example, you might come up with a great idea, which is a developing GitHub repository, and that's great. But it is also a good idea to understand that artificial intelligence has limits and that there are concrete benefits where you can develop pieces of software that are within your skill level.
Yes, you might have heard that many senior software developers are using artificial intelligence, but they bring to the table skills and years of experience that they have developed, which allow them to use artificial intelligence in that way. They might have backgrounds in mathematics, which allow them to stretch AI to its limits.
I believe that you bring to the table certain skills. Working on projects that best match your skill level and are rewarding will be enjoyable and motivating.
3. Some things take Time
The final principle I want to offer is that things are going to take time. This principle reminds me of a time that my friends and I went camping where we were kayaking to an island with a rope swing. It took about an hour to kayak to the island, but jumping off that rope swing at the island was probably the highlight of the entire time there. That's the same thing about developing skills and learning concepts which you're going to use in your programming journey.
You don't need to learn how to use all the tools, all the pieces of software. You don't need to be using two agents when you can’t use one. All these things take time. I would stick to one piece of software to develop code. I would use Codex or Claude. You might have seen other such websites which focus on other aspects such as deployment or UI design. Those are all great tools which can save you time and which can help you develop your software, but you have to understand that this is not going to be something that will take a few minutes and could take weeks and days.
Moreover, the way that the industry is changing, these skills that you develop may not be applicable in the future. I'm saying this honestly.
I would recommend building core skills. What I mean by a core skill is for example, instead of learning how to build UI using Figma, for example, you could focus on listening to college lectures on UI design psychology and how you can make it more accessible. And if you're trying to learn more advanced skills, perhaps it's important to learn the fundamentals first. For example, learning how Git works and how programs are organized and focusing on some of the fundamental structures in networking before you dive into your first documentation. These will continue to serve you possibly 20 or 30 years down the line if you do end up pursuing a career in computer science or engineering.
Why I wrote this and My conclusion
Vibe coding opened up the world of creating software to me and I believe it can for you. If you are an aspiring business owner, blogger, content creator, or software developer vibe coding can be a way into the field
When I first dove headfirst into agent-based coding, I wanted quick results and to possibly put my projects on a college application or resume. I wanted to try out the new technology and see what it was all about, but looking back, I wish I had taken things slower and spent more time reading and less time in front of a computer. I hope that if you follow these principles, they will instill habits that will allow you to create amazing things.
I am currently not sure if I'd like to pursue a career in software development, but being able to apply my expertise to build projects is something that I enjoy. I felt that vibe coding opened up opportunities and presented challenges which were difficult to overcome.