3 ms·
> today's new developers are die-hard black boxers How is anything else even possible? I spent eight years doing CPU development and even at the time I wouldn'
by luu 10y ago
> today's new developers are die-hard black boxers
How is anything else even possible? I spent eight years doing CPU development and even at the time I wouldn't say that I understood how CPUs worked. No one understands how an entire desktop or server CPU works today. They're too complicated. Back in grad school, I had a fairly good solid state & device physics background, stronger than most EEs. Ten years later, if I now want to understand how a modern transistor works, I expect it would take me 1-2 months to get a good high-level picture. And that's just the digital stuff -- I never had a good picture of how analog circuits work, and understanding that would take years.
In terms of complexity, the CPU is much less complex than the compiler or OS I use. For that matter, it's less complex than the browser I'm using to type this comment. If you don't believe that, look at the number of person years that goes into developing a CPU vs. the amount that's gone into any of those pieces of software. Relatively speaking, CPUs are simple. And they're still so complex that no human can understand them.
There's no way to understand the entire stack below you unless, maybe, you're doing materials science work and don't have anything else below you in the stack. And even then, "understand" is sort of an iffy term to use. When I was up to date in the area, there were a lot of open questions on phenomenon that worked but had no proven "why". While I haven't looked into it, it's a pretty safe bet that the total number of such mysteries has increased.
This isn't to say that people shouldn't develop some understanding of the building blocks they're using. Rather, understanding is a difference in degree, not a difference in kind. There's no such thing as understanding everything you use. There's just, at the margin, spending a bit more time on understanding components vs. spending a bit more time understanding how to use components.
- jdcarter 10y agoWell it's really a balance. Looking at the CPU, these days the x86 instruction set is a total illusion--the CPU decodes those instructions so a totally different underlying architecture can take action on them. The block diagram for a modern processor is astounding. Back when I was working on Motorola 68K processors and creating hardware drivers, learning to work with assembly helped me tremendously with basic principles like pointers/registers, stack/heap, memory-mapped IO, and so-forth. How the processor worked inside wasn't really the point; working with assembly made me a better C programmer. The point isn't so much that you have to keep peeling back the layers of the onion so far that you can understand how the silicon is laid out, you just need to peel back a couple more layers than you're used to. If you're a Ruby programmer, for example, write a C extension. It'll be enlightening.
- hashkb 10y ago> The point isn't so much that you have to keep peeling back the layers of the onion so far that you can understand how the silicon is laid out, you just need to peel back a couple more layers than you're used to. If you're a Ruby programmer, for example, write a C extension. It'll be enlightening. Thanks, this is just right. You don't have to meet the turtle on the bottom, but you should be acquainted with a few turtles down.
- uola 10y agoI'm not sure running on AWS instead of on your own server is actually going down a turtle. I run pretty much everything myself, but that is mostly dealing with complexity which isn't very enlightening. Might very well be that someone who uses a provider gets a better understanding of infrastructure design.
- dredmorbius 10y agoRunning on AWS is going up at least one turtle, possibly several if you're throwing configuration management and deployment tools into the mix. AWS abstracts out bare-metal through Xen, deployment images, the AWS control panel, its monitoring, and the fact that you can't physically grab and yank the server should you want to. On bare metal, you've removed most of those layers, though you have the option of putting most of them back in. I find the head for AWS vs. bare-metal admin to be quite different. Being old school, I prefer metal.
- uola 10y agoI'm just not sure that those layers are actually functional. I see little reason why things couldn't be more like AWS if there were standardized ways to e.g. configure things. A lot that one deals with is glue between the turtles and not necessarily the other turtle.
- dredmorbius 10y ago