That moment when coding no longer feels scary
Tags: codenewbie, beginners
Published: 2021-09-15 23:36:17

Before starting, programming felt scary. And so confusing. I didn’t understand what the terms meant. It was complete gibberish to me. I took foreign language classes before (in French), but this is a whole different level. With French, there’s at least some scaffolding to start off as there’s some similarities to English. But with programming, all the symbols were hard to figure out. But now, after learning some HTML, CSS and JS basics on Udemy, it doesn’t feel so scary anymore.

Why? Not because I mastered the language after just some online classes. Because after watching the videos of the instructor approaching the problem, writing the code and explaining blow-by-blow what and why each word is meant to do, I’m beginning to see that coding is done in bite-sized pieces. Programming is very much about breaking down an overall feature to very small and specific blocks of code, and building up the feature one block at a time, starting from a minimum viable block of code. Usually, each block is simple and easy to write. 

For example, as part of the Javascript class, I had to build a small Javascript game that tests your reaction time, by having you click on random coloured, random sized circles and squares appearing in the browser one after another, and each time you click it, you get a reading on your reaction time of how fast you managed to catch it. Sounds scary? It did for me in the beginning. But after breaking it down, it feels much more approachable. And it all starts with the **Minimum Viable Interaction** (haha yes I’m coining it here - for my own purposes at least).

So the MVI is basically to make a shape appear on the browser and click on it to get a timing. And that can be broken down even further:

Need a shape to appear on your browser? Just create a shape first in HTML. Then write some JS to make it disappear when you click on it. Then add a new variable to start a timer when the page loads, and end the timer when the shape is clicked on. Then get the time taken and write some JS to display it out on the page. There! Already the first interaction of your game is done. You click on a shape and it shows the reaction time back. After this minimum viable block of code for the game, continue building on it to add more functions/interactions…

This is probably child’s play to code veterans, but to be able to see the approach to coding this way, makes everything seem possible. As a maker/designer, that’s how we make products - by prototyping minimum viable products (MVPs) first, launching it to learn if it works for the users, then building on it after. Knowing that it’s pretty much the same way for coding really lowered my fear factor.

This is something (most) online classes don’t really teach. They dive into the code and teach you the how very quickly - how it’s written, what tools you need, what the terms mean…but don’t teach you how to problem-solve in programming. I later learned this is called [computational thinking](https://en.wikipedia.org/wiki/Computational_thinking): 

> “The characteristics that define computational thinking are decomposition, pattern recognition / data representation, generalization/abstraction, and algorithms.[7][8] By decomposing a problem, identifying the variables involved using data representation, and creating algorithms, a generic solution results. The generic solution is a generalization or abstraction that can be used to solve a multitude of variations of the initial problem.” - Wikipedia

Isn’t that critical to explicitly teach too in basic beginner level courses? So that budding rookies like me don’t just develop the technical skill to coding, but also the problem-solving mindsets and thinking skills needed to sustain their journey? I’m sure there are some courses that do that…maybe just not the ones I come across in many of the coding MOOCs. 

So now I realised that I need to break things down and visualise my approach like Russian dolls, nesting more functionality upon another from just one super basic and simple starting block. 

I know I can do that basic block. And I know I can build another simple block on top of that. 

That realisation was really empowering.

A pivotal moment since starting to learn how to code. 

A moment when coding no longer felt scary.

---

Follow my daily writings on [Lifelog](https://golifelog.com/jasonleow), where I write about learning to code, goals, productivity, indie hacking and tech for good.