Vibe coding
Recently I have been experimenting with AI coding tools such as antigravity in order to find out how I feel about them
and how tools such as these will affect my future job prospects. I think generally, they are amazing at very specific tasks.
For example, adjusting front end styling (something I am terrible at), these tools can manage handily on their own. However when left to their own devices
about architecture and backend structuring for future entendability they are not the best. Shortcuts are very often taken at the cost of
scalability and maintainability. Maybe this is because they are trained on code bases which dont always follow the best of practises. Hobby code bases
which are cheap, nasty and do a very specific piece of work.
I found this when building out existing code bases I had, that often at the beginning the AI performed well, then later on after certain decisions were made, it became harder and harder to maintain ALL functionality. Choices were made to ensure new functionality work but neglected to consider how it would affect the old requiremnts. I guess this can be similar when working with a new team mate, they take some time to understand the code and then after they have implemented a few features the general idea of how things are architected are grasped. Git is super duper useful for noting the changes, and having it revise the git history is nice for recovering lost information. Meaning that having good commits and understanding of how the code has changed is essential. Having "Knowledge debt" and going purely based on vibes and person QA is very easy to do, spinning up code this fast and this easily is quite the rush. I think anyone neglecting to give it a go will quickly regret such choices, however I think the faster things move, the more important it is to have someone guiding it with a decent idea of what needs to be done. Allowing full control, can lead to hacky and messy choices which will bite you in the ass later.
When starting completely from scratch, instead of building on what already exsited I found a similar experience of extremely rapid initial use, and then a slow down as the complexity increased. So proabably my current opinion towards them is; they are great for proof of concept and getting an idea of what you want to achieve, however trusting it entirely with all the choices is foolish, it will lead to a mess which you will need to tidy later, hence having a quality engineer guide it with architectured choices makes it far more effective into the future. For junior engineers, skipping this stage of learning through trial and error, and instead relying on choices made by AI could really stunt them in the long run.
One thing I am grateful for is, I have so many ideas and very little time for them. This technology has allowed me to hack together many many personal tools which before would have taken me weeks-> months. It doesnt matter that they dont work perfectly, as I am the only one using them. Hence I find it really good for enhancing and speeding up process, if you think in the right way. But I am still hesitant on using it for critical systems which really need that finesce, throught and human touch.
Becuase these tools move so fast, currently after a while of using them I feel exhausted. The style of work is different to how software engineering used to be. It could be relaxing and fun, and it still can be, it is just different. One extra layer of abstraction which the developer has to deal with now.
Thanks for reading!
Bryn Lom • Software Engineer