Software engineering in the age of LLMs
Vibe coding, Software development and Artificial Intelligence promise significant productivity gains, yet they come with risks, both from hallucinations, accidents and reduced developer productivity. By using tried and trusted software engineering practices it's possible to significantly reduce risks and offer a sustainable path for development whilst keeping many of the benefits of using AI/LLMs.
Although there are many aspects to software engineering and they all contribute to better development, it's worth stating the obvious that these are on a spectrum and there are a few easy to implement practices that can make a significant contribution to speed development and reduce common risks.
Benefits of Vibe Coding
Vibe Coding like Rapid Application Development before it is delivering a Proof of Concept that turns blue sky thinking into something tangible that can be used to engage stakeholders and back a case for investing in a new product or service. Paying customers using a service validates the concept, proves viability and offers a viable road map for a profitable future.
Risks associated with Vibe Coding
Paying customers expect a minimum level of service. Once a service is live there needs to be a level of comfort that it will continue. In the age of Vibe Coding, risks that were acceptable during the initial phase become insufficient to guarantee long term viability. Promises are not enough and guarantees or insurance require evidence to support longer term viability.
Benefits of Vibe Engineering
Keeping many of the advantages of using LLMs to assist with development, Simon Willison coined the phrase Vibe Engineering. By adding a minimal set of tried and trusted software development practices ensures development is repeatable, significantly reducing errors reaching production, identifying issues earlier and facilitating debugging.
Vibe Engineering
It's unhelpful to over manage the development process so this article offers a good starting point with my experience of building products and a small subset of the collective knowledge of best practices and experience known as the Software Engineering Body of Knowledge SWEBOK.
The main aspects covered in this article are:
- Repeatability
- Productivity tools
- Change management
- Quality assurance
- Professional development
Although key, software architecture is outside the scope of this article as there are too many variables, many tech stacks are often capable of addressing requirements near their core competence and change is expensive.
Repeatability
There are many parts that make up a software application: the operating system the app will run on, think Windows, Linux, BSD, Android; the software development framework or Tech Stack such as Django, Go and Java; each of these also have shared libraries. To fix bugs, add features and take advantage of the latest developments they are always in flux.
With all these moving parts it's essential to be able to automate and easily repeat creating an application in different environments.
Productivity tools
Humans are fallible, LLMs are trained on human fallibility and almost always make mistakes. Just as spelling tools are invaluable for writing, so too are linters, compilers and automated tests for development. It's straightforward and frictionless to incorporate them into daily workflow.
Coding is the easiest part of software development
Automated testing enables developers to take risks with the comfort of knowing other aspects of code are safe.
Bourne and Bash shell scripts are an essential part of any developer's toolkit.
Two utilities that should be in everyone's toolbox are sed the Stream editor and awk the pattern-directed scanning and processing language.
There are tools to help generate Regular Expressions and once you get the hang of them they make life so much more flexible and easier.
As LLMs are pre-trained on existing data sets, it's inevitable they can lag the fast pace of tech development. Also suggestions may be for an amalgam of versions rather than the latest, if in doubt it's worth checking the latest documentation.
LLMs are a tool like any other. Use them for what they're good at and don't forget all the others. When used together, they're greater than the sum of their parts.
Change management
All software has bugs. Also there are always changes, either to the application itself, the libraries, framework or operating system, so it's essential to be able to track changes to your own code.
diff
When an issue arises, it's essential to be able to answer the question "What Changed?"
The most common way of identifying changes is an application invented in 1974 called diff, it's so ubiquitous it's built into git version control. Visual development tools are excellent for quick and easy development and many of them output code so it's easy to track and see what changed. Any visual tool that doesn't allow a difference between changes is going to be hard to debug as development progresses.
Being able to easily see what changed makes it easier to identify and fix bugs.
Source control
Using a Source Control application such as git ensures all copies of code are kept safe and makes it easier to track changes over time.
As a minimum all source code and scripts should be stored in a version control system.
Development : Staging : Production
By keeping development and production separate is an easy quality win.
Automating builds reduces friction making it easy to develop, then after successful automated functional tests push changes to source control, then test in a staging environment that's close to production. When that passes it's relatively safe to push to production.
Quality assurance
QA is more than continuous integration. Whilst automated tests and CI are essential to identify issues as early as possible and ensure the code base is in a useable state, it's useful to add to functional tests with integration tests and usability tests. LLMs can help create tests to increase code coverage, but there are usually some elements for manual testing for example: On-boarding, installing and usability.
These tests significantly increase durability, reliability and reduce risks.
You can see an example of automated integration tests on GitHub.
Professional development
What choices are available after Vibe Coding => Vibe Engineering?
There are two types of people, those who like to code and those who prefer visual tools. Most of us fit into both of those categories with a strong tendency for one or the other. It's thanks to this variety of personality traits that benefit working as a team, each contributing their strengths.
Teams can be any shape or size and growth tends to follow customer requirements, after all it's end clients that pay for it. Products and services benefit from both customer focus and technical focus so any team will inevitably coalesce around those two roles in addition to any administrative necessities.
It's early days but IMHO those who start Vibe Coding are likely to be customer / outcome focussed and so might prefer a path to Product manager and be customer centric. Vibe Engineering offers significant developer productivity and an equally viable and valuable one building the future.
Software architecture
Although outside the scope of this article, it's critical to choose a good tech stack for development, it defines what you can do, how you work, how easy it is to hire and keep developers and how well they integrate with LLMs.
As a personal preference Django and Django REST with PostgreSQL meet these requirements. Django is a popular web framework written in Python that is very well supported in LLMs, it's straightforward to use, has robust in-built security and offers fast development for the web. The Django REST framework integrates well with Django web framework and enables an easy way to create APIs for mobile and single page applications and there are tools to create stand alone apps with for example BeeWare for iOS, Android, Windows, MacOS, Linux, Web, and tvOS using rich, native user interfaces. Documentation is excellent, perhaps why it's so well supported in LLMs, has an active well supported package ecosystem and Python adoption (54.8%) is accelerating in the stack overflow developer survey 2025 as is Postgres (55.6%). https://survey.stackoverflow.co/2025/
Building the future
As the project progresses, there are usually competing forces for what should be developed next. Even with LLMs there are limits to what can be delivered with minimal resources. More than triage, managing Software requirements ensures the project stays focussed and addresses client needs. It's end clients who pay for and use software so it's critical to ensure their requirements are met, including safety, stability and a clear development roadmap.
Support
As a project takes off, there will be a need for support, both for on-boarding and day to day issues including bugs and users.
Far from being an inconvenience, these are golden opportunities to reduce churn, learn from your customers and plan for the future.
As your project gains popularity and grows beyond a few simple tasks, calls on support need their own team. Although this can appear time consuming and expensive, getting the right people is crucial to accelerating the flywheel effect.
Security
Security is a very large area and ought to be integrated into development and any release cycle. Using frameworks such as Django and incorporating good code practices mitigate many common vulnerabilities, but there is no substitute for a security audit and incorporating a Software security aspect to the project and development process.
- Benefits of Vibe Coding
- Risks associated with Vibe Coding
- Benefits of Vibe Engineering
- Drawbacks to Vibe Engineering
- Software Engineering
- Quality Assurance
- Review your development framework
- Propose changes to Vibe Engineering
Benefits of Vibe Coding
Vibe Coding like Rapid Application Development before it is delivering a Proof of Concept that turns blue sky thinking into something tangible that can be used to engage stakeholders and back a case for investing in a new product or service. Paying customers using a service validates the concept, proves viability and offers a viable road map for a profitable future.
Risks associated with Vibe Coding
Paying customers expect a minimum level of service. Once a service is live there needs to be a level of comfort that it will continue. In the age of Vibe Coding, risks that were acceptable during the initial phase become insufficient to guarantee long term viability. Promises are not enough and guarantees or insurance require evidence to support longer term viability.
Benefits of Vibe Engineering
Keeping many of the advantages of using LLMs to assist with development, adding software development practices ensure development is repeatable, significantly reduce errors reaching production, identify issues earlier and facilitate debugging.
Drawbacks to Vibe Engineering
Reduces the speed of development
Adds a number of tasks
Software Engineering
Ensure builds are repeatable
Any changes are easily identified
Software is in constant flux, even when there are no changes to your code, changes to services, libraries or operating systems can introduce bugs. By identifying exactly what changed it's easier to pinpoint and resolve issues.
Quality Assurance
Review your development framework
Identify issues that might introduce risk.
Propose changes to Vibe Engineering
Clear practical steps to upgrade your development to Software Engineering keeping the best parts of LLMs.
What I offer:
Asses your current development framework and offer a path to Vibe Engineering
69% of AI agent users agree AI agents have increased productivity.
Vibe Engineering offers development at pace with significantly reduced risks.
Software engineering reduces risk by:
Testing
- functional testing
Developers can safely test any numer of changes knowing they will be tested to ensure they won't affect existing functionality.
Vibe Engineering can still generate code at pace, with the assurance of testing against expected outcomes.
- integration testing
Large apps tend to have a myriad of add-on services that consume data. It's essential to identify breaking changes so downstream services can be updated.
Not all tests can be easily automated. and some can be expensive. Manual or semi automated integration tests ensures all aspects still work well together.
Release management
- Staging: Ensure issues don't get released to production
Any number of issues might delete data, irrecoverably change data structures or data itself. By introducing a staging step it's possible to ensure data is not lost or changed unintentionally.
- Communication: Ensure your customers and end users are prepared for any changes
- Documentation: Reduce costs and increase uptake with accurate and helpful documentation.
Triage
- Prioritise resources: Ensure developers and resources are allocated efficiently
Issue management
- Ensure issues are not forgotten
- Assign responsibility
- Monitor progress
- Source of new feature requests
Product development
- Strengthening your moat
- Monetise where applicable
Marketing
- Ensure new features are incorporated
- Organisations aren't good at marketing because they are old, they are old because they are good at marketing
What tools should you use?
If you have existing tools, are they suitable?
if so it may be worth continuing with them.
If not, you may want to consider what languages your LLMs are best at and any preferences for development staff.
Python is the most supported by AI models and developers consistently vote Python as a language choice so you may wish to use Django, the Django REST framework and PostgreSQL.
There are a wide variety of collaboration tools. Your choice depends on the best fit within your organisation, there are no right coices here. GitHub may be preferred over Jira but neither is ideal for all situations and they all have their benefits and drawbacks.
https://survey.stackoverflow.co/2025/
84% of respondents are using AI tools this year.
https://survey.stackoverflow.co/2025/ai#sentiment-and-usage
A majority of developers don't use AI agents
AI agents are not yet mainstream. A majority of developers (52%) either don't use agents or stick to simpler AI tools, and a significant portion (38%) have no plans to adopt them.
https://survey.stackoverflow.co/2025/ai#ai-agents
Python adoption grew in 2025
After more than a decade of steady growth, Python's adoption has accelerated significantly. It saw a 7 percentage point increase from 2024 to 2025; this speaks to its ability to be the go-to language for AI, data science, and back-end development.
https://survey.stackoverflow.co/2025/technology/
From Vibe Coding / Proof of Concept to easy to maintain scalable app.
Vibe Coding / Proof of Concept Risk Reduction
Ideas are easy, it's crystallising those thoughts into a viable system that's essential for a viable product. That's where Vibe Coding is the latest most productive way to test an idea with a a Proof of Concept. Vibe Coding can deliver an app that works and convinces customers to part with hard cash.
Visual Basic was one of the first widely used Rapid Application Development tools to quickly generate applications for Microsoft Windows. It became a standard and created many essential apps.
Vibe coding tools are already delivering viable apps and creating value.
Limits of Vibe coding
There are limits to artificial intelligence-assisted software development . They hallucinate, can make catastrophic errors, and can take more time than expected.
One day Vibe Coding may turn into a modern day Visual Basic where it's a viable tool for enterprise development.
Missing opportunities
Best practice is not necessarily best for everyone. Doing the same as everyone else doesn't offer much of a USP.
After clients have bought into your service, they expect reliability as well as improvements. Having established your client base it's often more useful to ensure stability, fix bugs and more carefully manage improvements.
Is your LLM using the latest version? As components and tools evolve they often add new features or change existing ones. It's essential to keep up to date for security and performance, sometimes this can be challenging. There have been horror stories of accidentally deleting client data, it's hard to recover from such a catastrophe.
Coding is the easiest part of software development.
Engineering principles
Having decided to manage development for stability and measured incremental change you might find traditional engineering principles useful. They can be augmented with LLMs as they still offer coding benefits, but by using solid engineering principles you will ensure stability and reliability.
Integration testing ensures new features work as expected with the whole system, not just a single part.
Staging environments deliver stability that can be tested before moving to production, if data changes are necessary for example reporting or ETL into another system they can be tested before they go live to ensure there are no surprises. If part of your toolchain relies on an earlier format the changes can be prepared for and co-ordinated.
Engineering principles offer reassurance and reliable longer term growth that evolves with your organisation.
Scalability and long term growth
Unless you have a DBA onboard you may find scaling bottlenecks and parts of your data out of sync, there will probably be frustrating niggles that affect onboarding, workflow and customer support, things that once fixed can propel your offering above the competition. Your app can sparkle instead of being merely serviceable.
Long term success.
Once you have a sufficiently large app, you'll find integrating changes harder, LLMs can assist, but they need to be guided by intelligent hands that know your systems well enough to deliver without surprises. When customers rely on your systems, they expect stability and need reassurance that you will deliver change without surprises.
In the past, the big consultancies provided expensive working proofs of concepts that delivered on their promises. Vibe Coding can do the same but at a much lower price and in the hands of your own staff, this is their significant advantage.
The latest tools and technologies also offer significant advantages, solid engineering frameworks can include LLMs as long as they're guided by intelligent hands that know your systems and your roadmap.
Thinking of adding engineering stability and reassurance to your apps? Contact me for an informal chat.