β

Teaching coding from the Metal Up or from the Glas

Scott Hanselman's Blog 3 阅读
* Stock photo by WOCInTech Chat used under CC

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 way to make sure you've got things straight. (Follow up post on this topic tomorrow.)

As we were white boarding 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 your type cnn.com and press enter you can pretty much tell you from the address bar down to electrons what happens. AND YOU LOVE IT.
  • Your 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.
  • 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.

* Stock photo by WOCInTech Chat used under CC


Sponsor: Big thanks to Telerik! They recently published a comprehensive whitepaper on The State of C#, discussing the history of C#, what’s new in C# 7 and whether C# is the top tech to know. Check it out!


© 2016 Scott Hanselman. All rights reserved.

作者:Scott Hanselman's Blog
Scott Hanselman on Programming, User Experience, The Zen of Computers and Life in General
原文地址:Teaching coding from the Metal Up or from the Glas, 感谢原作者分享。

发表评论