articles

Home / DeveloperSection / Articles / Teaching coding from the Metal Up or from the Glass Back?

Teaching coding from the Metal Up or from the Glass Back?

steve smith2559 12-Apr-2017

Maria on my team and I have been pairing (working in code and stuff together) occasionally in order to improve our coding and tech skills. We all have gaps and it's a good idea to go over the "digital fundamentals" every once in a while to make sure you've got things straight. (Follow up post on this topic tomorrow.)

As we were whiteboarding and learning and alternating teaching each other (the best way to make sure you know a topic is to teach it to another person) I was getting the impression that, well, we weren't feeling each other's style.

Now, before we get started, yes, this is a "there's two kinds of people in this world" post. But this isn't age, background, or gender related from what I can tell. I just think folks are wired a certain way.  Yes, this a post about generalities.

Here's the idea. Just like there are kinesthetic learners and auditory learners and people who learn by repetition, in the computer world I think that some folks learn from the metal up and some folks learn from the glass back.

LEARNING FROM METAL UP

Computer Science instruction starts from the metal, most often. The computer's silicon is the metal. You start there and move up. You learn about CPUs, registers, you may learn Assembly or C, then move your way up over the years to a higher level language like Python or Java. Only then will you think about Web APIs and JSON.

You don't learn anything about user interaction or user empathy. You don't learn about shipping updates or test driven development. You learn about algorithms and Turing. You build compilers and abstract syntax trees and frankly, you don't build anything useful from a human perspective. I wrote a file system driver in Minix. I created new languages and built parsers and lexers.

  • When you type cnn.com and press enter, you can pretty much tell what happens from the address bar all the way down to electrons. AND YOU LOVE IT.
  • You feel like you own the whole stack and you understand computers like your mechanic friends understand internal combustion engines.
  • You'll open the hood of a car and look around before you drive it.
  • You'll open up a decompiler and start poking around to learn.
  • When you learn something new, you want to open it up and see what makes it tick. You want to see how it relates to what you already know. Get best dissertation proposal writing services in UK.
  • If you need to understand the implementation details then an abstraction is leaking.
    • You know you will be successful because you can have a FEEL for the whole system from the computer science perspective.

    Are you this person? Were you wired this way or did you learn it? If you teach this way AND it lines up with how your students learn, everyone will be successful.

      LEARNING FROM THE GLASS BACK

      Learning to code instruction starts from the monitor, most often. Or even the user's eyeballs. What will they experience? Let's start with a web page and move deeper towards the backend from there.

      You draw user interfaces and talk about user stories and what it looks like on the screen. You know the CPU is there and how it works but CPU internals don't light you up. If you wanted to learn more you know it's out there on YouTube or Wikipedia. But right now you want to build an application for PEOPLE an the nuts and bolts are less important. 

      • When this person types cnn.com and presses enter they know what to expect and the intermediate steps are an implementation detail.
      • You feel like you own the whole experience and you understand people and what they want from the computer.
      • You want to drive a car around a while and get a feel for it before you pop the hood.
      • You'll open F12 tools and start poking around to learn.
      • When you learn something new, you want to see examples of how it's used in the real world so you can build upon them.
      • If you need to understand the implementation details then someone in another department didn't do their job.
      • You know you will be successful because you can have a FEEL for the whole system from the user's perspective.

      Are you this person? Were you wired this way or did you learn it? If you teach this way AND it lines up with how your students learn, everyone will be successful.

        CONCLUSION

        Everyone is different and everyone learns differently. When teaching folks to code you need to be aware of not only their goals, but also their learning style. Be ware of their classical learning style AND the way they think about computers and technology.

        My personal internal bias sometimes has me asking "HOW DO YOU NOT WANT TO KNOW ABOUT THE TOASTER INTERNALS?!?!" But that not only doesn't ship the product, it minimizes the way that others learn and what their educational goals are.

        I want to take apart the toaster. That's OK. But someone else is more interested in getting the toast to make a BLT. And that's OK.


        Updated 27-Mar-2018

        Leave Comment

        Comments

        Liked By