Taming Software’s Complexity as AI Generates More Code
My personal observations and reflections.



As we build CodeYam, the first software simulator, two themes are top of mind:
How to tame software’s complexity and be confident in delivering value, faster;
What the software development life cycle (SDLC) will look like in a world where AI generates more (and more!) code.
Last month, I attended three different conferences in SF where it became clear that these themes are on the mind of many software companies’ and startups’ leaders.
Next.js Conf: Make it work. Make it right. Make it fast.
At the Next.js Conf by Vercel, Guillermo Rauch’s keynote was focused on how recent improvements to Next.js enpower software developers and their organizations to better manage complexity.
He spoke of two different kinds of complexity: accidental complexity and essential complexity. Accidental complexity refers to fixable problems that are introduced (and correctable by!) engineering. Essential complexity instead refers to creating something truly unique, dynamic, innovative – and complex. For Next.js, the framework should be flexible enough to support applications on the full spectrum of complexity, from the simplest to the most advanced. Guillermo shared a set of principles that guide their approach on this; quoting Kent Beck, the author of Test Driven Development: By Example:
Make it work.
Make it right.
Make it fast.
View Guillermo’s full talk from Next.js Conf here:
My cofounder and CTO, Jared Cosulich, who spent earlier years of his career at a Pivot building Pivotal Labs’ Boston office, introduced me to the concept of test-driven development (TDD), so the principles as Guillermo described immediately resonated. While he was speaking of them in the context of changes to Next.js, I couldn’t help but think about how these apply to the software development life cycle more generally – and the future of it, as we enter an era where AI writes more and more code.
GitHub Universe: AI Native Software Development
At GitHub Universe in Fort Mason, San Francisco, the conference celebrated the 10th year by celebrating the present and by focusing on an AI native future of software development. The GitHub platform today serves over 100 million developers, and their vision is to simultaneously improve the experience for today’s developers and make their platform even more accessible through natural language to help the next 1 billion people become developers. For existing users, they doubled-down on developer choice by adding new models to GitHub Copilot. As for their vision, they introduced a new product called GitHub Spark that’s powered by natural language.
At both the Next.js Conf and GitHub Universe, it’s clear that there are talented teams working on making natural language to software products possible, with different levels of abstraction that enable developers to choose to what extent they want to interact with the underlying code. Vercel’s v0 demos at Next.js Conf were standing-room only and there were multiple demos at both conferences that highlighted the ease of going from natural language to UI.
This introduces an exciting potential future where the constraint becomes our ability to imagine new software applications, not our technical abilities to build them. However, it’s not yet clear how near or far this future is today. Many of the examples were of very simple software applications like games or flight trackers; many of the attendees I spoke to mentioned they had not yet tried v0 or, if they had, it was primarily for wireframing and not complex, robust software. Similarly, GitHub Spark had a simple demo on the main stage but I haven’t heard of anyone using this in the wild. However, it is clear that more and more developers are leveraging AI for code generation.
DevGuild AI Summit III: Code Generation
AI code generation was the unifying theme of the DevGuild AI Summit III organized by Heavybit, which was an “unconference” format where participants self-organized around themes related to AI code gen. There were somewhere around 26 sessions, of which I attended three and co-led one. The session I co-led with two others who were curious about similar themes, despite being at the end of the day, was on how AI code generation will affect the entire SDLC.
There was great curiosity around what it meant for processes like Agile and the role of software developers (does this role go away or become more important than ever?). While we didn’t leave the room with answers, there was tremendous hope for AI enabling more empowered product-decision making and more efficient development processes. There was also concern and fear around what this future might mean, which led to deep discussion.
At the AI Summit, I learned from several attendees about DORA, which is a research program focused on understanding what drives software delivery performance and how to help teams get better at getting better. DORA had just released their 2024 Accelerate State of DevOps report, which dug into how developers are leveraging AI – and the resulting impact on their productivity, their organizations, and their software delivery performance. Some of the takeaways are fascinating. For example:
“67% of respondents report that AI is helping them improve their code. Here, we see further confirmation of that sentiment. AI seems to improve code quality and reduce code complexity”
“It isn’t obvious whether the quality of the code and the quality of the documentation are improving because AI is generating it or if AI has enhanced our ability to get value from what would have otherwise been considered low quality code and documentation.”
AI is hurting software delivery performance: both throughput and, especially, stability.
DORA team’s hypothesis on why throughput and stability are going down with AI code generation: “since AI allows respondents to produce a much greater amount of code in the same amount of time, it is possible, even likely, that changelists are growing in size. DORA has consistently shown that larger changes are slower and more prone to creating instability”
High-performing teams and organizations use AI, but products don’t seem to benefit.
You can access the full 2024 DORA report here or watch a recent community discussion they hosted on AI adoption:
CodeYam: Software Simulation and the Future
At CodeYam, we’ve been thinking (and writing!) a lot about how to tame the complexity of software and accelerate software development while increasing confidence in code changes.
Our focus is on simulation specifically as a means to enable better understanding, testing, and delivery of software with far less effort than is required today. I had the chance to share a new demo of CodeYam and some thoughts on complexity live at Founder Central in Boulder, Colorado at the First Pitch event.
You can read the recap and watch the recorded demo here:
The points around software’s complexity resonated with founders in the audience, especially those currently battling complexity to try to build great software applications for new use cases.
As a quick update on our progress, we have recently moved from the R&D phase of “make it work” to now a new phase that starts to enter “make it right” – although we’re still working on making it work for increasingly complex software products, starting with CodeYam itself. This is an exciting new phase, with lots of work to be done.
If you’re curious about our progress there, feel free to follow the CodeYam blog:
In the meantime, I’ll continue to share my personal observations and reflections here. By audience request, I’ll try to share more about my experiences and learnings as a founder as well (more on that coming soon).
Now back to working on CodeYam!
The democratization of coding to a further billion people through spoken language-based communication with computers is as exciting as it is non-specific. What are we building software to do? Any promising demonstrations or arguments about bringing the incentives of software companies more in line with wider public interest around safety, social equity, environmental concerns, flooding, fires, water scarcity?