I like making plans. Like, really like doing it. 1
So let’s go through a plan for how we’ll do learning on this blog.
Whenever you learn something, there are two high-level ways that I know to go about it: Rules-Based or Underlying-Principles-Based.
Rules-Based learning is when you start with rules on how to do something. It’s sort of a “top-down” approach.
Your parents likely told you “look both ways before crossing the street” or “don’t talk to strangers”. As a kid, these are probably good rules to follow. Your parents didn’t want you to have to learn first hand why they were good rules, because that could be bad (ie fatal).
A lot of online coding “boot-camps” tend to take this approach to teaching software.
Eventually, with time and motivation, you’ll dig deeper and start to learn the why of the rules you know. This may eventually allow you to formulate your own new rules.
Underlying-Principles learning starts with some base assumptions or known principles, and builds up to larger or bigger ideas. This bottom-up style is slower to get up and running, but starts you off with an extremely solid foundation of knowledge.
If you’ve ever played a sport, you’ve probably seen this in action. Coaches take athletes wherever they are at in their skill-set, design lessons and drills to help improve their skills, and through hard work build the team’s talent base to be bigger than it was at the start of the season.
College classes tend to do the same thing. Each is set up with prerequisites to ensure students all start with a similar set of knowledge. The professor takes that knowledge and builds it up, combining it with some new ideas, to broaden the minds of students.
Eventually, with time and motivation, you can formulate your own rules and shortcuts for getting to your end goals more quickly than you learned them the first time.
Why Underlying-Principles Here
For a more relevant example of Rules-Based learning: when you were young, your teachers probably showed you how to add by aligning the numbers, adding single digits column by column, and carrying spill-over to the next column. No one probably took the time to explain to you why this was the correct way, you just learned it as “the correct way”.
There’s been a lot of consternation on the part of some parents about how the techniques taught have changed a bit over the years, but rest assured “math” has not changed. There is more than one correct algorithm to accomplish the underlying task of adding numbers.
The key question that we, as scientists, need to answer: Which algorithms work, and which do not? Answering this question requires more than just memorizing a formula.
Rules-based gets you learning and moving fast, but Underlying-Principles gives you a better platform to grow. As long as you have the patience and time, I personally recommend the latter. And since we want to go deep here, I think we should go for Underlying-Principles.
Fair warning: This picture is subject to change. But it is a start.
The picture should show the approximate progression of lessons. We’ll start with electrical engineering and some basic math background, fuse those together to show how you can do computation with digital devices. Then we’ll delve into how you build and configure a general-purpose computing device, and how that design influences the why of software syntax.
In parallel, I hope to start introducing some calculus and control theory topics, along with software development process & team leadership - all of which should culminate in the grand set of “how to make good software”.
I also like eating and drinking things. Expect a few posts there.
Next Steps - Where are we going?
Go start learning! Check out Abstraction.
My wife can tell you all about it. ↩