Change is afoot

Change is afoot
Our old dock, prior to rebuild.

I don't know where software development is headed, but nearly everything about it is changing, and that is great because it allows us to discard the hoary old, barnacle-encrusted frameworks of the past and start anew. This is great for individuals and great for creating companies.

Knowledge Management

In my most recent significant operating role, I led an organization comprising hundreds of product people across the US and Asia.   We delivered and operated services for our automotive customers across the US, Asia, and Europe.  

It was a complex business with numerous moving parts. And every day we learned important new things about our customers, about automotive software, about competitors, about drivers and car buyers, about automotive suppliers and merchants.  This learning happened across a wide set of meetings, emails, Slack threads, phone calls, operational data, and more.  We spent a lot of time capturing this learning — in Salesforce, wikis, meeting notes, presentations, documents, specifications, and code.  

Simultaneously, as an individual, I was constantly trying to manage my own understanding of the business, collecting and formulating my thoughts using notes, documents, presentations, and wikis.  And sharing this back with the team or subsets of the team.

Managing all this info was a constant struggle.  A significant amount of learning was lost daily.  Key information about an upcoming vehicle program was scattered across multiple Confluence pages, Jira discussions, Salesforce notes, and individuals' personal documents.  We fought every day to tame, direct, and order this information flow, but it was unruly.  The tools are not great. 

And at least we tried to manage all this information.  I’ve been inside organizations that make little attempt to manage the daily IP of their business, that have little discipline about sharing and leveraging hard-won knowledge.  

Personally, I’ve tried in fits and starts to use tools like Notion, Obsidian, or Logseq to manage my information, and have concluded that they are all finicky and fragile, and I spend a stupid amount of time screwing around with schema and organization when I use these tools.  I’ve discarded them all.   All I want is the ability to dump all my content free-form into an AI agent and let it help me extract meaning as I need it. 

I don’t think the problem is any different for companies.  A large swath of software for managing business processes is set to be replaced.  So many tools are DBs with some assumed business process flows and some UX for those flows — every one of these tools is going to face disruption.

Disruption

At the extreme, maybe all these business apps aren’t simply disrupted, but largely disappear, replaced by ephemeral apps that are created as you need them. Ohad Eder-Pressman on composing apps on-the-fly:

“Last week I made a todo app appear out of thin air. No code. No database. No backend. Just an AI hallucinating an entire application into existence, one request at a time.”

We are in that funny space where, if you want to build something, you might be better off waiting, because the tools six months from now will run rings around the tools of today. From Kevin Kwok:

“Tech, and especially AI, is increasingly deflationary. Every year the advances in AI are obsoleting the last year’s models. The knowledge gleaned from training the last generation of models or from building products that best utilized them might be essential for working with the latest models–but the actual old models or products will be outdated fast. Conversely, as it gets easier to build software every year, the value of owning the legacy codebase falls or can even go negative.”

Vibe-ing

My personal blog is just a database with some blog views on it.  I’m in like the 4th or 5th generation of technology to implement the blog.  And it seems like it is time to throw away all the blog software and start using AI tools to generate it.

My first attempt was to use Copilot in VS Code.  I followed the new Copilot workspace option, and asked for a single-page web app that is a paginated blog hosted on GitHub Pages.   Copilot chose Vite as a build system and created something similar to a Jekyll or Hugo blog, albeit with fewer features.  There were a few errors in the resultant code, but feeding these back into Copilot corrected them all.  I could deploy this in place of my current blog, and I will probably do so this week.  The Copilot interaction is a little understated in VS Code; it is clearly tacked on the side.

I repeated the experiment in Cursor.  Cursor is more focused on the AI-assisted coding workflow than Copilot/VSCode; it is more obvious what to do.  The resultant code sort of worked, but had some poor design choices — for instance, it required me to copy all my blog posts into a single JSON file, and it didn’t include any build system. This is just a bad choice.  I pointed it out and Cursor invented some build scripts, but choosing a build tool like Vite would have been a better path.

I repeated again in Amazon Kiro.  Kiro feels a little like Cursor.  The code generated by Kiro had a lot of the same problems as the Cursor code.  I don’t think, tho, that I took full advantage of Kiro’s spec-driven focus, and I want to retry that.

Then I tried Claude code.  Claude Code has a distinctly different feel, as it is a command-line tool rather than an IDE.  There is a plugin for VS Code.  I like this; it allows me to use my IDE of choice or the command line. The code generated had some of the same problems as Cursor and Kiro.  As with these tools, when I pointed out the issues, Claude fixed them.

All these tools are now sufficient to generate many useful apps.  It is beneficial to be familiar with the problem space you point them at, so you can easily find their design errors and guide them to fix.  There is probably no need to become an expert in JS frameworks anymore — let the coding agent handle that morass.

Shorts

We Warned About the First China Shock. The Next One Will Be Worse and Trump is enabling Chinese power.  We need to quit fighting the last economic war.