The Age of Software Has Only Just Begun
My recent experience using the latest generation of AI coding tools.
Software is eating the world.
While prescient, Mr. Andreessen couldn’t possibly have foreseen 2026’s AI coding assistants. What would one say today in response to that quote from 15 years ago? My vote would be something like “you ain’t seen nothin’ yet!”
Many of us happily accept the idea that we are already living in the age of software. We have iPhones with an endless selection of apps, online services that offer up nearly anything in the virtual and physical world, and cloud platforms that put incomprehensible amounts of computing power at our fingertips. Yet I am now convinced that what we perceive today as software playing an outsized role in our lives is about to rapidly fade into a quaint memory.
Much has been written lately about the current generation of AI coding tools: Anthropic’s Claude Code with Opus 4.6 and OpenAI’s Codex with GPT-5.3-Codex. Here are just a few examples:
- Andrej Karpathy’s post on X
- Code has always been the easy part by Kellan Elliott-McCrea
- Software Factories And The Agentic Moment by StrongDM AI
- The Quickening by Lior Pachter
Reading those articles, and many others published around the same time, certainly gives one the sense that something significant is happening in the software engineering world. I agree wholeheartedly, and decided to write this post to share just one example of my own experience with these transformative tools.
Niche Software
Way back in 2010, I started using a personal finance application called MoneyDance, as Microsoft decided to sunset its Microsoft Money personal finance application and I wanted something I could run on a Mac. I had been using Microsoft Money for some time, keeping track of bank accounts, credit cards, and investment transactions. Both the export capabilities of Microsoft Money and the import capabilities of MoneyDance were, let’s say sub-optimal, so I made the decision to just start fresh with MoneyDance and not bother with importing any existing data.
Sixteen years later and here we are today. I’ve used MoneyDance to track nearly every aspect of my financial life. It now contains something like 30,000 transactions, 27,000 historical security prices, and over 200 accounts (credit cards, bank accounts, loans, and income/expense categories are all “accounts” under double-entry accounting systems like MoneyDance). The software seems frozen in time, with a quirky interface and infrequent updates. I’ve tolerated it because it would be immensely painful to migrate to a new application, even if I knew of one that could replace all of MoneyDance’s functionality that I actively utilize.
There isn’t a big business in personal finance software. Most people just use online aggregators that pull in their various accounts and show nice net worth graphs and limited reports. But I have found a lot of value in having an application that can do more than that. Just as an example, with MoneyDance I can enter future-dated transactions into my checking account to represent upcoming bill payments, paychecks, and tax refunds. This ability to see the future balance of the account is great for cash-flow management, as I can easily decide how much money needs to stay in the checking account versus moving to savings or investment. You can think of applications like MoneyDance as being for people who want to manage their personal finances in the same way they’d manage the finances of a small business.
Long story short, I find MoneyDance useful enough to have continued investing time into keeping it up-to-date, and today cannot imagine not using some kind of application to manage my personal finances. But as I mentioned above, it is not without its faults. The interface isn’t that great, it seems quasi-abandoned by its small developer, exporting data for any reason can be cumbersome, and it has only limited support for programmatic interaction and customization.
Over the years, I periodically (and unseriously) entertained the idea of writing my own personal finance application. As appealing as it might be to build something that would address all my complaints about MoneyDance, I was always dissuaded by the amount of work it would take, both initially and in ongoing maintenance. The juice isn’t worth the squeeze, as they say, and I felt resigned to just keep paying $60 a year or so for MoneyDance knowing I’ll eventually need to replace it.
Well, 2026 arrived and an entirely different calculus took effect.
The Build
Inspired by my experience building software tools for my own use, I decided to try building a new application entirely from scratch using both Claude Code and Codex. Despite never having written a single line of TypeScript in my life, I accepted Codex’s initial recommendation to use Next.js as the framework. I wasn’t planning on writing much code, as after all it’s 2026 and manually writing code seems like it should now be the exception rather than the rule.
Building software with this current generation of coding agents is an entirely new experience. You just tell the agent what you want and working code materializes as the agent iterates. It’s as if you have willed it into existence. This might seem like oversimplification, or even hyperbole, but it is not. Let me show you what I had it build, and hopefully convey not just how incredible this technology is, but also my growing unease about what this portends for the future of software.
Counterpoise
Here are some basic stats about my agent-built personal finance application as of today. It’s called Counterpoise, a name I selected from a list of suggestions generated by ChatGPT. The icon above was also generated by ChatGPT.
- 51,700 lines of TypeScript across 243 files
- 722 tests, including 45 end-to-end tests that use the Playwright browser automation tool
- 346 commits
The first challenge was data. While I eventually wanted all of my existing MoneyDance data imported into Counterpoise, that couldn’t happen until the app had all the critical features working. Launching the app just opened a blank set of accounts, and I didn’t want to spend time manually entering accounts and transactions to get a feel for how it would work when populated with data. Instead, I asked the agent to construct a realistic dataset and seed it into the database. I told it I wanted about 3 years of data, including credit card transactions, salary deposits with 401(k) contributions and taxes, rent payments, and investment transactions for a couple with joint accounts:
With sufficient sample data to explore the app, things started to move quickly! I just kept asking for additional features and tweaks. Here’s a few:
-
Security Prices: I registered with Tiingo, a financial markets API provider, and then provided my API key to the agent and told it to read the documentation and implement security price updates with a UI.
-
Recurring Transactions: I asked it to replicate MoneyDance’s recurring transaction feature to set up regular payments and deposits (like paychecks), including a nice calendar view.
-
Keyboard Shortcuts: To make it easier to navigate the app and enter transactions, I asked the agent to add extensive keyboard shortcuts.
-
MoneyDance Import: The most challenging part for the agent was building an import script for MoneyDance’s proprietary JSON export format. There is no documentation for the format, but since I could check the import results against what is shown in MoneyDance, I could inform the agent of any discrepancies and ask it to investigate and fix each issue. After a bit of back-and-forth, the current import script runs in under 2 minutes and imports all 30,000 transactions, 2,000 payees, and 27,400 historical security prices. It also imports the recurring transactions I’ve set up in MoneyDance, as well as all past investment transactions, including stock splits.
-
Plaid Connector: I even registered with Plaid, pointed the agent at Plaid’s documentation, and had it build a Plaid API integration to allow the app to download credit card transactions from my various banks and present an interface for reconciling them with any pre-existing transactions.
Ultimately, I had the agents implement every feature I use in MoneyDance, with a modern interface and the immense flexibility that comes from controlling the codebase, all without writing a single line of code. But there was no reason to stop there! I started thinking about all the possible features that were now just a prompt away.
New Capabilities
A primary complaint of mine about MoneyDance is that this rich set of current and historical financial data is only accessible from within the app. I usually have to go through a clunky and tedious process of defining a custom report when I want to look back at some specific spending trend. With Counterpoise, I now have full access to the data and can build any interface needed for querying, exporting, and importing. Since I know AI models have impressive data manipulation and analysis skills, my first thought was to find a way to let the AI handle custom reporting tasks. That turns out to be quite straightforward, as I would only need to point the AI to an MCP server providing access to the Counterpoise data. So I tasked Claude Code with implementing an MCP server, and a few minutes later had a PR waiting:
After hooking up the MCP server to the Claude desktop app, I can ask Claude questions about any dataset in Counterpoise and it will generate interactive plots in response:
Look up the Example Data in Counterpoise, and show me a plot of spending on food for the last three months of 2025.
This transition from a closed application with siloed data to one where I have complete control of the data and code is the most important benefit, and certainly would have been an unrealistic endeavour without these AI coding tools. But what does this experience tell me about the future of software?
What’s Next
No one knows where exactly this is headed, and it is likely to have a lot of unforeseen consequences. While it might seem like these tools will disrupt all commercial software businesses, I’m not so sure of that. Certainly, these tools can be used to build a lot of existing software that companies are currently paying for, and the calculus of “build versus buy” is undoubtedly shifting. But most companies don’t really want to get involved in building and maintaining software tools that are outside their areas of expertise. Paying a bit of a premium to have software built and managed by a vendor is a completely reasonable decision, especially if software costs drop across the board. I’m sure some companies will run on 100% in-house software, but I suspect that won’t be a common approach.
As software becomes less reliant on human software engineers, think about what that might mean for the “average complexity” of a software product. If I, a sole developer in my free time, can replicate an entire consumer software application today, what can a large team of developers build alongside a team of AI coding agents? I suspect we are going to soon see software that is orders of magnitude more complex than anything previously built by human software engineers. Software that literally requires advanced AI agents to manage.
Yes, way back in 2011, software was eating the world. But today? You ain’t seen nothin’ yet.





