I have worked with software development for more than two decades. During that time, it has been an unchallenged truth that we need version control. Although CVS was notoriously fragile, SVN was frustrating and git was unintuitive, we never challenged the notion of making sure every change of the code was properly recorded. We were always ready to roll back versions that created problems and blame poor developers.
AI assisted software development challenges the foundation of version control, and I’m starting to think if they are still relevant, and worth the hassle.
Since software is becoming cheap and fast to create, we should get rid of the notion of going back in the recorded history. The only way is forward. If you find a problem in your code, even a critical issue, it is usually quicker to have an AI fix the problem and deploy the new code, rather than roll back to a previously working version. As I am an avid believer in trunk based development there should be a single truth of the software we are building. This should also be the software that runs in production. I am going out on a limb and claiming that branches, tags, releases, and other supporting functions have enabled us to create an overly complicated software life cycle. AI allows us to simplify this whole process. But beware, you still need good engineering practices to pull this off.
- Automated pipelines that deploys the software to production
- Automated testing that ensures the sanity of the software
- Working with AI in very small batches, preferably deploying after every commit.
- Separation of the system, allowing us to work in different files without stumbling on each other
Imagine a world without version control. A world where there is only one version of the software. This is the latest version, and the version that runs in production. Imagine not having to struggle with merge conflicts, getting rid of your git cheat sheet and always knowing exactly what code runs in production. AI assisted software development brings us new opportunities to simplify how we work with software. I am curious about your thoughts are reactions to this provoking idea. Why can’t we live without version control? What stops us from just having a simple file system? How much friction is it worth to add to get the feature of having several versions of the software we build?