Here's what some industry veterans and seasoned coders think the younger generation doesn't know ... but should.
What you don't know about hardware might hurt you
"I see poor understanding of the performance ranges of various components," says Bernard Hayes, PMP (PMI Project Mgmt Professional), CSM (certified Scrum Master), and CSPO (certified Scrum Product Owner). "For example, rarely is the processor the bottleneck, but so many people look to 'tight loops' to speed up performance when it's often an I/O issue. In a world in which most folks have never intuited systems operations from studying console lights (or more often now, correlating events with signal analyzers), engineers are losing a strong mental model for processor/IO & systems interactions."
Also, says Hayes, "I see people more often having difficulty in thinking through problems caused by buggy hardware, and in general, folks have minimal real understanding of the hardware issues and the implications of the downstream errors that hardware errors can cause. Instead, they tend to feel that 'the driver should deal with that.'"
"When your company builds specialty hardware, you need to be able to learn how each new thing works -- and write some hardware test routines to figure out whether it was built to spec and which bits do what!" says Suford Lewis, a hands-on developer and project leader for 35+ years and past president of the Association for Women in Computing. "Half the fun of my career was moving between technologies and these days when things change so fast, I would think that changing what you are willing to do when a company dissolves from under you would be a downright necessity."
Miles Fidelman, Principal at Protocol Technologies Group, LLC and a 36-year veteran of the networking industry, wonders, "Maybe it's a personal gripe, but as far back as 1983, I found serious software engineers who didn't understand hardware. For example, in talking about, say, a simulation algorithm:
Me: How much horsepower do you need?
SE: I don't know.
Me: Let's see, how many lines of code in your main loop?
Me: what language?
Me: ok, that's about 10 lines of machine code per line of Fortran, so
100,000 instructions per loop; how many times does the loop execute per
SE: every 1/20th of a second.
Me: OK, so that's 20 x 100,000 = 2mops (which was faster than anything we had
at the time), maybe we'd better rethink this.
"I don't think things have gotten any better," says Fidelman.