For the last year or two, AI has quietly become the most-used tool in my workflow. I write Swift with Claude. I sketch architecture with it. I debug with it. I ask it to explain other people's code. I use it for personal projects — a habit tracker here, a recipe parser there. It's no longer a thing I "try sometimes." It's the thing I reach for before Google.
And yet — I've never stopped to learn what's actually happening inside the box.
I don't know what an embedding is, not really. I've read the words "vector database" forty times and I couldn't explain to a junior dev why we need one. I can name "RAG" and "agents" and "fine-tuning" the way someone can name three French cheeses without having tasted any of them. I know how to use AI. I do not know how it works.
That's a strange place to be eleven years into a software engineering career.
The honest reason I waited
I'm a senior iOS developer. Eleven-plus years. Swift, Objective-C, the whole evolution. Java and Kotlin from before that. JavaScript when I have to. The native-app world has been good to me — deep, technical, dependably interesting.
Every six months for the past two years, I'd open a tab labeled "learn AI" and close it within an hour. The field looked like a stampede I'd already missed. Transformers. Attention. Embeddings. Diffusion. RLHF. LoRA. Quantization. MoE. New papers daily. New frameworks weekly. New benchmarks that everyone agrees are gamed. New "agents" that turned out to be while True: call_llm() with extra branding. It was easier to keep using AI than to learn it.
The story I told myself was: I'll get to it when the dust settles.
The dust isn't settling. The dust is the field.
What changed
A few weeks ago I read some pieces describing real production AI systems — not the demos, the shipped ones. And the thing I kept seeing wasn't ML wizardry.
It was engineering.
State machines that emit text. Retry logic. Timeouts. Memory you have to manage by hand because the context window is finite. Tool design. Cost budgets. Observability. Eval suites. Sandboxing for code execution. Concurrency control. The kind of problem space I've been wrestling with for a decade in a different costume.
So the question stopped being "can I learn this?" and became "why haven't I?"
The commitment
For the next 6 months — 24 weeks, starting now — I'm going to learn this properly. In the open. On dev.to.
This post is Week 0. Every Sunday from here on, I'm publishing one post on what I built, what I broke, what surprised me, and what I'd do differently. With code. With repos. With wrong turns left in, because the wrong turns are the only part that actually teaches anything.
I'm doing this publicly for one reason: writing in private lets you quietly quit. Writing in public turns quitting into a story you'd have to tell.
A few principles I'm setting for myself:
- The hard path before the easy one. Raw HTTP requests before any SDK. Toy implementations before production libraries. Core loops by hand before frameworks. I want to know what the abstractions are hiding before I let them hide it.
- No shortcuts on understanding. If I can't explain it, I haven't learned it. Every post has to clear that bar.
- Build, don't binge. Tutorials are tempting. They produce the illusion of progress. I'd rather ship one ugly working thing than watch ten polished videos.
- Cost matters. Real engineering is bounded. Every project gets a cost ceiling and I'll publish the math.
What this series will not be
It won't be a curriculum guide. There are enough of those, and most are written by people who haven't done the thing. It won't be a "10 best agent frameworks in 2026" listicle. It won't be hype. It won't pretend I knew something I didn't know.
It'll be one person, eleven years into one specialty, deliberately becoming a beginner in another — and writing down what that's like, week by week, until I'm not a beginner anymore.
If you're reading this and recognizing yourself
If you've been using AI every day and quietly assuming the chance to understand it has already passed: it hasn't.
The barrier isn't talent. It isn't timing. It isn't your math background, your degree, or the language you started in. The barrier is starting publicly, where the half-finished tab can't quietly close itself.
Find your version of this. Pick a cadence you can hold. And start.
Next Sunday — Week 1
Week 1 is the unglamorous foundational stuff: environment setup, first principles, first real code. No frameworks yet. If you want to walk along, that's where I'll be.
If you're walking the same road, drop a comment. Accountability scales.
— Tej
Top comments (0)