We’ve all heard it (and most of us have said it): “X is just a dumbed down for the masses.” Heck, I came dangerously close to saying it myself in today’s earlier rant. But I didn’t say it, and I try not to, because I think it’s not really very useful.
First of all, if you really are a beginner, you probably need things to be dumbed down, at least a little. For instance, as a relative beginner working to self-educate himself in the field of electronics and RF design, I learned that diodes pass current in one direction, but not the other. This is a “dumbed down” version of diodes: they actually have a forward voltage drop, and it’s only when that forward voltage drop is exceeded that current passes. But that too is a dumbed down version of what diodes do. The forward drop isn’t constant, it depends on things like temperature. Also, there is actually a curve that relates voltage and current, they don’t just snap on. But that too is just a “dumbed down” version of what a diode is. And so on, and so on.
The fact is, these “dumbed down” versions of the diode are very useful: they do convey some bit of useful information and begin to give us some experience and intuition about reasoning about circuits that contain diodes. The only thing that is bad is if we envision that our “dumb” understanding of diodes was a complete understanding of diodes. Then, there would be circuits and behaviors that we simply couldn’t understand, because the real diodes are a bit more subtle than our dumb version, whatever level of understanding that might actually be.
But more than that, when we say something is dumbed down, we stray dangerously close (and often well beyond) calling the people who may use these simplified models as “dumb”. That simply isn’t productive, and runs counter to what I view as the purpose (and mostly successful achievement) of getting people interested in computing and electronics. The Arduino is successful because it does “dumb down” things enough for the people to experience success, who might otherwise have been frustrated and annoyed. When I hear people say that the Arduino is “dumbed down”, I really hear them telling people who use them (or even more tragically, might have used them) that they are stupid. I don’t want to call people stupid, especially those who might actually try something that I enjoy, and inspire me to do better work.
The problem I was trying to make clear was not that the Arduino was “dumbed down”, but that the default development environment was a path that eventually kind of dead ends: to gain any real expertise and fully use the power underlying the $2.50 piece of silicon at it’s heart, you almost need to start over: perhaps by using assembler as some has suggested, or perhaps just by using avr-gcc with avr-libc. You have to learn about interrupt vectors, and the hardware resources, because the particular abstractions that the default development enviroment present rob the underyling hardware of its power. To give another example, no less a luminary than Edsger Dykstra scolded a generation of computer science instructors and students that the BASIC programming language was a fatal disease from which they would never recover. It wasn’t true. For many, it was the only programming that they ever learned, but that wasn’t a bad thing. For many in my generation though, it was a stepping stone to an exciting and profitable career.
Don’t bother saying something is “dumbed down”. It’s pointless. Your understanding of almost anything worth knowing is almost certainly “dumbed down” from its reality. Revel in complexity. Don’t be ashamed that you don’t understand everything today: you won’t understand everything tomorrow either, but with luck, you might understand more than you do today.
Now, if I could develop a slightly less dumbed down idea of how FETs work, I could perhaps understand the behavior of my QRSS beacon a bit better. So that’s what I’ll work on for the rest of the evening…