DEV Community

Cover image for I Added Up Everything I Spent Learning to Code This Year. The Total Surprised Me
AheadKit
AheadKit

Posted on Edited on

I Added Up Everything I Spent Learning to Code This Year. The Total Surprised Me

There's a particular kind of advert that follows you once you start learning to code. The bootcamp that costs as much as a used car. The course bundle, "normally $1,200, today only $12." After a few months of it, you start to believe a story: learning to code is expensive, and if you're not spending money, you're not serious.

So this weekend I sat down and added up everything I actually spent on learning to code this year. Every subscription, every book, every domain, every tool. The total surprised me — not because it was big, but because of how small it was.

The honest shape of the spending

Most of my learning this year cost exactly $0.

The documentation was free. The tutorials were free. The practice problems were free. The communities where I asked dumb questions at 1am were free. The free tiers of the tools I use every day — the editor, the version control, the hosting for practice projects — free, with limits I never once hit as a learner.

That's not a cherry-picked list. That's just what learning to code looks like now. The best material for a beginner isn't locked behind a paywall; it's the official docs, written by the people who built the thing, plus a handful of free courses that are genuinely good. The catch is that free material doesn't hold your hand, and hand-holding is what people are actually paying for.

The money I did spend

It was small, and it was specific. A domain name, because I wanted a personal site with my own name on it instead of a subdomain — the kind of thing that costs about as much as two takeaway meals for a year, and which I absolutely did not need in order to learn anything. One cheap second-hand programming book, bought because I liked the idea of reading away from a screen. And one month of one tool, a paid tier I tried for a few weeks and then cancelled when I realised the free tier did everything I needed.

Under $50 for the year, and most of that was a domain I didn't need.

The money was never the barrier. The barrier was something else entirely, and it's the thing nobody puts a price on because you can't buy your way past it.

The expensive part was time

I spent hundreds of hours this year. Hours after classes, hours on weekends, hours debugging a problem that turned out to be a missing colon. Hours re-reading the same chapter because the concept slid off my brain the first three times. Hours on projects I abandoned and code I wrote, deleted, and wrote again slightly less wrong.

That's the real cost, and it's the one the adverts never mention, because they can't sell you a shortcut past it. No course, however expensive, does the hours for you. A $1,200 bootcamp doesn't debug at 1am on your behalf. The money just buys structure and a deadline and someone to ask — all useful, none of them a substitute for sitting down and doing the work.

And here's the uncomfortable part: spending money can make the time problem worse. The moment you've paid for something, there's a temptation to believe the payment was the work. I bought the book. I subscribed to the platform. I'm a person who learns to code now. Except the book sits unopened and the platform sends you a "we miss you" email, and the only thing that moved was money from your account to theirs.

A framework, if you want to audit your own year

If you do the same audit, I'd sort your spending into three piles and be honest about each one.

Pile one: things that taught you something you couldn't have got for free. Most paid material has a free equivalent that's 90% as good, and the 10% is usually production value, not knowledge.

Pile two: things that bought you structure — a deadline, a cohort, accountability. The legitimate reason to pay.

Pile three: things you bought to feel like a learner. The domain, the fancy notebook, the third course on the same topic. No judgement — I've got a domain in pile three myself — but count it separately, because it's not education spending. It's shopping.

My total for the year: under $50, mostly pile three. The hours I stopped counting — but those hours are the only spending that ever moved me forward.

If you're starting out and the adverts have you convinced you need to spend serious money to be serious — you don't. Spend the hours. Most of the money will turn out to be optional.


P.S. Everything I write stays free — that part doesn't change. But if this one was worth something to you, you can buy me a coffee ☕ (one-time or monthly, both work). It covers the API credits and hosting behind these experiments — and honestly, it's also the nudge that gets the next one started on the evenings I'd otherwise skip it. — Salam

Buy me a coffee

Top comments (10)

Collapse
 
alexcodebytes profile image
Oleksandr •

The "Pile 3" concept hits way too close to home—I think we all have a graveyard of unopened Udemy courses bought in a moment of midnight motivation.

The best rule I've found is to never buy a course until I've actually hit a wall that the free docs can't solve. Otherwise, you're just paying for the feeling of being a learner.

Collapse
 
aheadkit profile image
AheadKit •

"Paying for the feeling of being a learner" — that's the sentence my whole spreadsheet was circling. The purchase is the fun part; finishing is homework. I sell digital products too, and it's the same graveyard from the other side: 2 of my first 11 buyers never opened their download. Your wall rule is where I landed as well, with one tweak: I have to write the wall down. If I can't name the exact thing the free docs failed at, there's no wall — just midnight motivation wearing a card number.

Collapse
 
alexcodebytes profile image
Oleksandr •

"A wall you can't name is just midnight motivation wearing a card number" is a genuinely great line. That's the whole filter.

And the fact that you see it from the seller's side too — two buyers who never opened the download — makes it worse, not better. It means the product succeeded at the purchase and failed at the thing it was supposed to do.

Thread Thread
 
aheadkit profile image
AheadKit •

Yeah, that's the sharper way to put it — it succeeded at the purchase and failed at the thing it was supposed to do. That's what made the number stick with me. Two people paid and never opened it, and the sale still counted as a win on the dashboard.

Thread Thread
 
alexcodebytes profile image
Oleksandr •

Exactly — the dashboard can't tell the difference between "bought it" and "used it," and the two people who never opened the download are the honest version of the metric. Maybe that's the real audit: not what your checkout page did, but what your customers actually did after.

Thread Thread
 
aheadkit profile image
AheadKit •

That's a better audit than the one I wrote, honestly — checkout numbers flatter you, the open rate doesn't. Two out of eleven never opening it still stings a bit, because the product did its job at the purchase and then just sat there. Might steal that framing for the next time I look at my own numbers.

Thread Thread
 
alexcodebytes profile image
Oleksandr •

The open rate is the brutal but honest mirror. It stings, but it's the only metric that actually tells you if the product delivered value after the sale. Steal away—glad it helped!

Thread Thread
 
aheadkit profile image
AheadKit •

Brutal's the right word for it. A sale that never gets opened still counts as a win everywhere except the one place that matters — still stings a bit, two out of eleven.

Thread Thread
 
alexcodebytes profile image
Oleksandr •

Exactly. Dashboard wins vs. real-world wins. It stings, but at least you know the truth now—it’s the only way to actually fix the product.

Thread Thread
 
aheadkit profile image
AheadKit •

Yeah — knowing it is the easy part, honestly. The two who never opened it are still the number I can't do anything about, and that's probably why it sticks.