Last week I was three codebases deep in a single working session: iOS, Android, and a web project, all moving forward at the same time. Not because I had a team. Just me, Claude Code, and the native knowledge I'd been building up for years.
That used to be impossible for one person. Not because of knowledge. I'd had the knowledge for a long time. But the volume of code to write, the context to hold, the raw output required. Cross-platform frameworks like React Native and Flutter were the obvious answer to that: write it once, keep the team small, accept the trade-offs.
And there are always trade-offs. Anyone who has built natively knows what cross-platform costs you: performance ceilings, platform-specific quirks that need workarounds, UI that almost feels at home but not quite. You can get close. Rarely right.
I never fully bought into it, even when I understood why teams chose it. My background is native iOS and Android before I moved into web with Rails. Each platform has its own way of thinking. The mental model for iOS is genuinely different from Android, different again from the web. I knew what was being traded away. But the logic was clear: three separate codebases, three separate skill sets wasn't realistic for most small teams or solo developers.
That changed with AI-driven development. I had the knowledge. What I didn't have was the hours in the day to keep three codebases moving. Agents handle that now. My job is knowing whether what the agent produced is right for that environment. And what comes out is actually native. Not close. Actually native.
I didn't expect this to change what the breadth I'd accumulated was actually worth. For most of my career, knowing iOS, Android, and web was just a collection of things I'd picked up. Useful, but not especially strategic. Now it's a genuine advantage.
Skills built years ago, some of which felt niche or excessive at the time, are load-bearing again. I didn't predict that.