loading words...

Jan 15, 2019 12:21:13

That moment when coding no longer feels scary

by @jasonleow | 744 words | 373🔥 | 411💌

Jason Leow

Current day streak: 373🔥
Total posts: 411💌
Total words: 207771 (831 pages 📄)

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. 


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


"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.  

From Jason Leow's collection:

  • 1

    @jasonleow awesome post ??
    Breaking things down to smaller parts is so important. After coding for a while, the language might get easier but if you can't break the problem down you won't have anything to code about.

    Abhinaya Konduru avatar Abhinaya Konduru | Jan 17, 2019 14:26:49
    • 1

      @itsabhinaya What you said is very true. Wish coding courses taught these meta-skills more

      Jason Leow avatar Jason Leow | Jan 17, 2019 22:21:21
  • 1

    @jasonleow - great discovery.

    Brian Ball avatar Brian Ball | Jan 16, 2019 14:40:18
  • 1

    @jasonleow

    Wrote a post about my thoughts after reading your article :)

    https://200wordsaday.com/words/so-what-s-next-after-learning-programming-43125c3e1f807b1b8

    Jason avatar Jason | Jan 15, 2019 20:00:44
    • 1

      @jasontxf oh cool! Will read and comment there ?

      Jason Leow avatar Jason Leow | Jan 16, 2019 15:29:13
  • 1

    @jasonleow congrats on the progress!!

    Keenen Charles avatar Keenen Charles | Jan 15, 2019 13:41:32
  • 1

    @jasonleow great job keep going!!!! :D

    Basile Samel avatar Basile Samel | Jan 16, 2019 00:54:16
    • 1

      @basilesamel @keenencharles thanks! Onward! ?

      Jason Leow avatar Jason Leow | Jan 16, 2019 15:27:52
  • 1

    @jasonleow This is very true. Not everyone knows how to break down and analyze a problem to solving it until they had a fair amount of experience.

    This also falls under logical thinking. I've known of many programmers who are very good at writing code when you have a very clear direction for them.

    But when it comes to giving them the entire problem to solve on their own, they usually get stuck and not sure how to proceed.

    Keep it up!!

    Jason avatar Jason | Jan 15, 2019 06:51:52
    • 1

      @jasontxf Thanks! Still taking baby steps now tbh, but so glad to learn this lesson because I know I can get it now (whereas before that I always doubted whether I'm even a "programming person"!

      Jason Leow avatar Jason Leow | Jan 15, 2019 14:25:09
contact: email - twitter / Terms / Privacy