One of the overriding themes which I attempt to convey in my teaching, blog, etc is that the modern technology landscape is something that we arrived at largely
by chance. Nearly every decision made in the development of computing had a wide variety of alternatives at their time, but once things become ossified as a norm it is difficult to imagine another way. For example, I have recently mentioned a few times how it is hard now to see TCP/IP as not being the "obvious design," but in the early '90s there was healthy competition of network protocols offering various feature sets.
I think it is extremely important from a teaching and engineering perspective to view the modern computing environment not as some elegant design (which it most certainly is not) but instead as an concretion of "best option at the time" solutions to real problems.
It is a bit intoxicating to think about how things could be if computing really were approached as a single, monolothic, elegant design. But essentially every attempt to do so has failed. Much like how we think of computing as layers of abstraction, the computing industry is functionally constructed of layers of abstraction, and so it is difficult to really change anything at lower levels.
I think it is extremely important from a teaching and engineering perspective to view the modern computing environment not as some elegant design (which it most certainly is not) but instead as an concretion of "best option at the time" solutions to real problems.
It is a bit intoxicating to think about how things could be if computing really were approached as a single, monolothic, elegant design. But essentially every attempt to do so has failed. Much like how we think of computing as layers of abstraction, the computing industry is functionally constructed of layers of abstraction, and so it is difficult to really change anything at lower levels.