Building With AI
We've seen the wonders of vibe coding, but we've also seen things break down as the app gets bigger. Do we need a new way of building?
I was helping someone build an app for their company. This wasn't going to be a public product but rather something they used internally that employees could leverage for different purposes. Within the first 15 minutes, we had something integrated into his systems and were presenting information beautifully. It was amazing. This was something that, traditionally, would've probably taken me a month to build, and here it was in 15 minutes. I gave the owner a list of prompts to use to continue building. After a week, I got an email saying how much more he had done and that the sky was the limit. Unfortunately, after a month, I got another call saying things were messed up and he couldn't get the AI to do anything right anymore, and in the process, it was messing up stuff that already worked. Yikes. To get him back on track, I had to go into the code, update it manually, then reassemble a clean context and update the prompts I gave him. Eventually, it started producing good results again but
It got me thinking that the current frontier (and even non-frontier) AI models are really good at one-shotting straightforward solutions. They're good at layering on top of that solution until there is too much nuance to manage. We solved this with context engineering on top of prompt engineering, and that seems to get you further, but it still breaks eventually. If the goal is to have AI write all the code and maintain the system perpetually, we need a different building paradigm.
Let's lean on microservice-type thinking, where each feature is treated like its own application. Managing microservice systems that have grown can be a pain in the ass, but maybe AI can handle it. Maybe create a dictionary that stores a master table of features mapped to context, with the context updated after each AI update to that feature. Then maybe we have an orchestrator that sits on top, evaluates the context for each feature, and determines when to break the feature up to keep the context load for any single feature low and continued high performance is produced.