My Challenge: Two Real Apps, New Stacks—using AI where it helps
This week I ran an experiment: could I ship two functional apps in frameworks I hadn’t used before?
- ✅ An iOS app (SwiftUI)
- ✅ A web app (Next.js)
Repos:
- 📱 iOS (SwiftUI): github.com/TheAnandThakkar/anandthakkar-swiftUI
- 🌐 Web (Next.js): github.com/TheAnandThakkar/anandthakkar-nextJS
I leaned on generative AI for scaffolding, translating ideas into code, and producing UI components. It felt close to magic—until the production boundary reminded me what still takes engineering craft.
The Reality Check: Code Generated ≠ Product Deployed
AI is great at producing code. Getting to a running, reliable, scalable product still needs a developer.
Even in this small experiment, shipping depended on human judgment:
1) The CI/CD Labyrinth
Pipelines, deploy keys, environment variables, and release automation (e.g., GitHub Actions) don’t wire themselves. Shipping is a process, not just a commit.
2) The Runtime Riddle
When dependency conflicts, production-only bugs, or memory/CPU spikes appear, prompts won’t save you. You need debugging instincts and log literacy built through experience.
3) The Architectural Blueprint
AI can assemble components; it doesn’t pick the trade-offs. API boundaries, state strategy, scaling plans—architecture is about anticipating failure and growth with context.
These are not just coding steps; they’re engineering decisions.
Why Fundamentals Still Win
This worked because I have a base in software design (abstraction, OOP, clean code). AI’s output wasn’t copy–paste; it was material to evaluate and refine.
That’s why Data Structures & Algorithms (DSA) still matter:
- ⚡ Performance awareness: Is this
O(n^2)
whenO(n log n)
exists? - 🧩 Right data model: HashMap vs Tree vs Graph?
- 🚀 Scalability: Will this hold at 10k concurrent users?
AI delivers the what. Fundamentals give you the why.
Experience: The Unfair Advantage
AI will keep improving. Durable systems still require context, trade-off thinking, and accountability.
The developer’s value is shifting from:
“I can write code quickly”
to
“I can debug, deploy, and design systems that last.”
AI is a phenomenal tool. Tools don’t build enduring systems—craftspeople do. The best craftspeople have battled real systems, real bugs, and real deadlines.
Experience will continue to ship products.
What’s been the biggest gap you’ve seen between AI-generated code and real-world deployment? I’d love to hear where your judgment made the difference.