Computer Science, Software Engineering, and Vibe Coding
Computer Science is the foundation for several different expert jobs, and in the context of vibe coding, software engineering is the most relevant. This post goes into the relationship between CS, software engineering, and vibe coding, and why you should care about software engineering as a vibe coder.
Computer Science and software creation
Computer Science degrees touch a wide range of topics, and only some of them are particularly relevant to vibe coders using Generative AI to create software. Think about it in terms of mathematics and accounting: while mathematics applies to a wide range of STEM, accounting only needs some very specific parts of maths.
While computer science is the foundation of software engineering, software engineering itself can be considered the processes and practices used to implement software. These processes and practices have been built up over the recent decades, though there is always constant change in technology. Generative AI is the most recent big change, but there’s always been changes, often quite big ones. Experienced software engineers have likely gone through multiple big, industry defining changes.
Vibe coding introduces a distinct change in the industry, but not in terms of technology. The ability to create software has always been available to anyone, but now a larger portion of non-software engineers have the ability to produce code without knowing what it does or how it works.
Software engineering is there to apply a methodological approach to computer science theory and software delivery, If someone is shipping software via vibe coding, it’s important they understand the practices enough to avoid risks or negative impact. That’s the whole premise of this blog series: leveling up knowledge to ensure that we, as a society, mitigate as many possible concerns from vibe coding while helping you achieve your goals.
How do people get into software engineering?
Historically, there’s been two routes into software engineering: the academic route and the self-taught route. The academic route typically would set the foundations through computer science theory, while the self-taught route tended to be more hands-on. I myself am self-taught, though I also went into academia. Those using vibe coding tools are actually quite similar to the self-taught category.
Software engineers who started in academia typically start at the foundations, learning abstract theories. Code is used to reinforce and teach those theories. Meanwhile those who are self taught typically start with code, and they learn abstract theories to reinforce the knowledge they need to unlock more code-based skills. In both cases: code is a means to an end. There is rarely a right or wrong path to take, but they require a different mindset to gain the skills and experience needed to provide value to businesses or academic research.
I’ve mapped some of the paths software engineers follow to learn in the image below:
While it might seem like Academia and Self-Taught are entirely different paths, they overlap substantially. At about 3 years into the job, the path taken to become a software engineer largely becomes irrelevant. Not completely irrelevant, but nearly unnoticeable in day-to-day work. I expect my software engineers to be able to learn any concept they need to get the job done. The number one skill I see in the most senior software engineers: the ability to learn and adapt to changing needs.
Vibe coders I’ve talked to tend to start in a couple of places:
Their company has told them to try out vibe coding
They feel curious to try out vibe coding independently, whether for career growth or for interest.
Like most tools, vibe coding is there to fit a use case. Understanding your end goals is vital to developing the skills you need to get there. Ask yourself: why are you curious about vibe coding? What do you want to get out of it? Is there something specific you want to do? What’s your preferred learning style: hands-on, or theoretical?
These are the first questions I ask anyone who approaches me about vibe coding, because the answers completely change in which direction I think you should go. If you’re just curious, the answer is different from if you have a specific goal in mind. To set yourself up for success, you need to reflect on what you want to achieve.
Why software engineering?
Like most digital industries, computer science has become a fundamental part of our daily lives. On the base level: when was the last time you interacted with a business that didn’t have a website? Beyond research, software engineering is there to provide business value. The scale of digital infrastructure provides a broader reach than traditional products, for a smaller cost. In the simplest terms: the creation, delivery, and maintenance of software provides businesses value at a lower cost than traditional, non-digital industries. A small team of developers can reach millions of people.
However, these smaller teams come with risks. The fewer people to maintain a service, the bigger the dependency on core individuals. Establishing healthy software engineering practices help minimize the risk, while providing the team the ability to deliver on business goals. Companies without healthy software engineering practices in place fall into a loop - short term practices risk the long term delivery of software. We call this technical debt. Every software project will have technical debt. Companies trade off short term wins with the long term impact of technical debt.
Think of it like keeping an apartment clean and maintained. It’s okay if the apartment has a couple of trash bags prepared and ready to be thrown anyway. But if more trash bags fill up, it affects the quality of life for those living there. It may even attract rodents or insects, which requires substantial remediation.
Software engineering principles have been established to reduce this impact. Instead of waiting to throw out the trash once there are several bags, throwing away the trash once one bag is filled makes it easier to maintain.
In other words, following software engineering practices are illustrated by the happy green person with 2 trash bags on the left, vs the unhappy person the right plagued by too much trash, rats, and flies.
While it may seem like software engineering might slow down development in the short term, it actually speeds up development in the long term, along with minimizing risk. As we walk through different concepts together, I’ll be highlighting the practices, theory, and guidelines that particularly apply to vibe coding, so that the vibes you produce ✨ sparkle ✨ rather than seem 🕵️ sus 🕵️.
What I hoped you learned from this post
The relationship between computer science and software engineering
Why software engineering practices are important
How vibe coding fits in with education styles software engineers have followed in the past
Self-reflection: why are you interested in vibe coding? What do you want to do with it?
If this left you thinking “okay, I get it - let’s get into the juicy stuff”, then subscribe. The next article will be on Thursday!
A short intro to me, for those that don’t know me: I’m Noah, I work in the biggest news media company in the Nordics. In my day job, I’m a “tech enabler”. In my volunteer roles, I’m involved with unions and open source. In my hobby projects, I design and build programming languages. I’ve been coding for over 20 years, and professionally for about 15 years. I’ve lectured at universities, I’ve spoken at many conferences, and I’m an avid writer. My biggest passion is helping people, and helping the world, to the small extent that I can. The topics in this blog series are all ones I’m deeply passionate about, since it combines my love of helping people with technology. None of these posts use AI anywhere: I hope you enjoy the human approach



