Just wanted to write down a pivotal personal moment since starting to learn how to code the past 2 weeks. A moment when coding no longer felt scary.
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.
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:
"The characteristics that define computational thinking are decomposition, pattern recognition / data representation, generalization/abstraction, and algorithms. 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.