I'm a computer engineering student. As such I have a lot of classes with electrical engineers on the one side, and computer science majors on the other.
The EE kids like programming because it's a means to an end. It let's them simulate whatever it is the are working on in a very effective manner. They would never program for fun.
The CS kids like programming because it's a means to create. They enjoy the end result, a game, a website, an algorithm. They thrive on abstraction because it increases their productivity.
The computer engineers are just fascinated by everything. They often find assembly as fascinating as Lisp. These are the students who don't believe in magic layers, and will tinker their way lower and lower until they contemplate over whether they should take a class on solid-state physics because CPU architecture is relatively clear to them and they want to really understand how transistors work.
It may be different at other schools, but this article seems to describe computer engineers at their best.
I've often thought in similar terms... and I think everyone has a different story here.
I used to write some simple software (we're talking some ASM and some BASIC here, with some C and Pascal - no OOP or design patterns or fancy stuff.... I was young, it was a while ago). At some point I took some digital electronics course, and at some point during that course, when we moved from transistors to discrete logic ICs to Intel 8080 trainer boards programmed in Octal - something clicked. I got it. I couldn't necessarily go out and build you a CPU - but I get it.
Networking too.. I get it, down to the electronics, the modulation, the analogic/digital circuitry. I get it enough to understand what's on both sides.
So where's my magic? I may not understand the hellishly complex details in anything past the 486, with all the pipelining and caching and whatnot, but I get it enough to know what it's about. There's no magic - I know I could go study (probably for a good long while) and understand it better.
So now there's no more magic (I never really felt there was, I knew I could always pick up a book and figure it out) - but there is discovery. It's the software patterns, the network protocols. It's complex systems and emergent behaviour. It's the interface between humanity and computers. I get the internet (and local networking, and network stacks) down to the bits - I love it when I find a mysterious network behaviour that I can't seem to grok in my head - because I know that either I'm being fed faulty information, or my mental model is wrong (which means I might learn something - which is always good). I love an especially frustrating problem.
As a generalist - a lot of that knowledge goes unused. I get how SSDs work (I'm using one now) - I've had a decent career, and there are tons of avenues I could take if I need a hobby.. because it's all interesting. But there's no magic.
ICs. I understand down to the level of circuits built out of logic gates, and I understand up to the level of transistors (well, to the extent that anyone ever understands quantum mechanics); but the step from logic gates to layers of doped silicon is magic as far as I'm concerned.
This is a good way to describe a good computer science or engineering degree.
Can you describe what really happens when you visit a web page? How does a flip flop fit into the grand scheme? Why does it matter?
As a generalist it is critical to understand as many different levels of "magic" as possible. This lets you put into perspective just how important new technologies like SSD hard drives or multicore processors will eventually become.
The EE kids like programming because it's a means to an end. It let's them simulate whatever it is the are working on in a very effective manner. They would never program for fun.
The CS kids like programming because it's a means to create. They enjoy the end result, a game, a website, an algorithm. They thrive on abstraction because it increases their productivity.
The computer engineers are just fascinated by everything. They often find assembly as fascinating as Lisp. These are the students who don't believe in magic layers, and will tinker their way lower and lower until they contemplate over whether they should take a class on solid-state physics because CPU architecture is relatively clear to them and they want to really understand how transistors work.
It may be different at other schools, but this article seems to describe computer engineers at their best.