I used to think (and honestly, I still do sometimes) that I needed to “learn everything first” before starting a programming project. I’d spent hours reading textbooks or watching YouTube videos feeling like I was “being productive”. But I’ve never actually code. Part of me was scared of getting it wrong, of producing something “rubbish”. But here’s the thing: that’s kind of the whole point. Your first project is meant to be messy. No one writes elegant, bug-free code straight out of the gate1.
Computer Science NEA: The Good, the Bad, and the Box-ticking
Doing A-Level Computer Science meant I had to complete a coursework project (the infamous NEA). In all honestly, the NEA was one of the more useful parts of the course. It forced me to:
Plan out a complex system- learning to break a huge problem into manageable chunks
Structure and document code
Manage my time and energy– because you can only dedicate so many hours before you realise you have other subjects and the remainder of your CompSci course to revise for
I’ll go as far as to say I learned more about Python, OOP, and GUI design during the NEA than from any textbook or lesson.
But here’s the thing that drives me mad: for the sheer amount of time you spend on it, the exam board (AQA in my case) gives it a tiny chunk of your grade. And most of that mark? It’s for writing about your project, not actually making it good. Instead of successfully debugging a gnarly algorithm, you’re screenshotting your third “evidence flowchart” because apparently the first two weren’t enough. The obsession with documentation isn’t learning, it’s box-ticking. I was incredibly fortunate to have teachers who valued project work because without them, I’d don’t think I’d have gotten half as much out of it.
The learning for me didn’t happen in a textbook or in a video tutorial, it happened when my program crashed for the 42nd time2. Somewhere between debugging, refactoring, and very aggressive crocheting3, I realised that learning happens by building things that break.
Getting Back into Coding
Right now, I’m slowly getting back in programming again and have started to enjoy the process once again. One of the things I’ve really wanted to do was build an online multiplayer version of the Racing Demons4 card game and have a built-in flashcard feature for learning. It’s half coding project, half personal experiment to see if I can trick my brain into studying while the most fun5 card game ever.
I had little to no experience with web development when I thought of this idea. But that didn’t matter because this time, I didn’t sit down and study ever single concept first, I picked something I cared about and learned what I needed along the way.
FreeCodeCamp6 has been an absolute game-changer for me. Their project-based approach to learning programming helped me to build, not just watch, and every time I solved even the tiniest problem, it stuck way better than anything I’d ever memorised for an exam.
There is so much out there online to learn from. Free courses, forums, open-source projects, etc. you could spend a lifetime exploring and still not run out of material. You don’t need to “know everything” before you start. You just need to start, break something, and debug your way out of it.
One of my friends below kindly offered to share their experience with project work, here’s what they have to say:
For me, the benefit from project work, independent or guided, is the constant test of whether you understand things. It’s an output only way of learning so you can’t run away from what you’re fuzzy on. It’s the fact that you made something, even if it’s wildly crappy, would mean more to you than some polished piece of software made by someone else. I see project work as a form of self expression to some extent
Hera Choi
Don’t do it alone
And one more thing I wish I’d learned sooner: don’t do it alone7. When my friends and I competed in the National Cipher Challenge8, we worked on a shared codebase, split up ciphers, and jumped in to help each other when one of us got stuck.
If you’re struggling, find a community. Join a coding club, jump on a Discord server, or just grab a friend who’s also learning. The odds are, they’re just as stuck as you are, and you’ll both get further by working through it together than you ever would alone.
Just begin (and begin again)
Whether you’re a student working on a coursework project, throwing together a silly web page at 2am, or finally building that half-baked idea buried in your notes- just begin. And when you’re stuck, or lose interest, just begin again.
You’ll learn more from messy little projects and broken code than from any amount of perfect plans. Every restart is proof you’re learning, we all are. I’ve still got a long way to go, and I’m still learning, but that’s what makes it exciting.9
Speaking of planning: One thing that’s helped me massively is finding a way to capture ideas before they disappear. For me, that’s my Atoms to Astronauts notebooks and planners. Every blog post, project idea, and random “what if?” usually starts as a messy scribble in there before it ever makes it to a deadline on Notion.
You can find a link to their beautifully crafted notebooks (and a few other tools that have genuinely changed how I work) on my Resources page!
Use code MATHSRANT10 to get a 10% off your orders!
Anger Management 101: I found crochet to be incredibly helpful whenever I had the urge to throw my laptop out of the window while struggling with debugging .Yarn, as it turns out, is cheaper than therapy (in most cases) ↩︎
If you’ve never played it – it’s like a multiplayer version of Patience (or Solitaire). Do look it up! ↩︎
I will argue the Racing Demons is the most stressful fun you can have with a deck of cards. Fun fact: I used to play a quick round or two of Patience right before my A-Level exams to calm my nerves. ↩︎
I grew up (and I’m sure I wasn’t the only one) thinking that programmers are often lone geniuses in dark rooms, fuelled by more caffeine than anything. In my experience (and I’m no professional), being part of a community is what keeps me sane. Coding is hard, but it’s a lot less hard when you’re not shouting at your screen alone. ↩︎