One thing I've noticed over the years is that good 25-year old software designers are relatively common, compared to good 25-year old hardware designers. The reason, I think, is the relatively limited universe that software designer work in, and therefore have to understand. Hardware design is like writing software, but where you have to pay different prices for each of the different programming constructs you might use. In addition, the parts you use in hardware have incredible complexity.
As long as I am letting my engineering prejudices flow freely... I've known a lot more software designers with strange and perverse beliefs about the way the world works than hardware designers. For instance, a remarkably high proportion of software geeks are socialists or communists. I have never known a hardware geek of that sort, though hardware people are at least as strange and probably stranger than software. Software engineers frequently are unable to perform minor repairs on their automobiles, like break pad replacement. I've known a couple who couldn't figure out how to open their PC-Clone's cases.
As far as learning new things in hardware, the most recent big change has been the rise (but not complete domination) of text as opposed to graphics. But that dates to PALASM, back in the late 70s and very early 80s. Any hardware designer who hasn't caught up yet (and they are out there) needs to be put in a museum.
And funny thing, the old techniques from the 50s keep coming back out of the grave. Back then, digital engineers had to count every transistor (or tube) for efficiency. Then when we went to popcorn logic in the 70s, transistor counting got replaced with package counting. Now that programmable gate arrays are back, the old efficiency has returned to a smaller unit than package. My observations on beginning engineers is that I can design programmable logic in about 1/3 the silicon used by the average one (and my designs work), and 2/3 the silicon used by the very best. (I also get done sooner.) This partly because I have already made all the mistakes, and know how to avoid them. That is why they have to pay me the big bucks. :)
Common errors and inefficiencies of young designers:
(1) Failure to design to the underlying hardware. In other words, they tend to believe the VHDL salesmen who claim that their silicon compilers are efficient regardless of the source. A good (experienced) designer knows that with each change in the tools, he will have to learn new techniques for using them efficiently. After you've been doing this every other year for 15 years, it gets a lot easier. (2) Failure to try more than one technique for solving a problem. They tend to use the first idea that comes to them, this is almost never the best one. I keep trying new things until I find one that is obviously easy to use and efficient. (3) Failure to minimize costs. In school, they really don't care how efficiently and effectively you use your parts, or what their costs are. My grandfather told me that an engineer is someone who can do for 5 cents what any fool can do for a quarter. Inflation has increased these numbers somewhat... (4) Failure to design in such a way that you can easily show others how and why your design will work. This terrifies the management. (5) They almost never count nanoseconds to verify worst case timing for their designs. Since nanosecond counting involves only addition and subtraction, the art is not taught in school. In addition, school doesn't prepare kids for the rigours of going into production. (6) A tendency to rely on prototypes, or inside chips, simulation, to prove manufacturability. At its heart, a design for mass production is a proof that given a particular collection of parts, (the bill of materials or BOM) connected in a particular way (the netlist) what will result is a system that will satisfy the needs of the customer. A single prototype doesn't prove this, as all integrated circuits have an incredible tolerance of performance. A prototype working only proves that this particular collection of parts works suitably (at the temperature and voltage the prototype is tested at.) (7) A tendency to overestimate their own abilities. The majority of digital designers get pushed out of the market. Most of the students a new engineer competed with will be out of the industry (in the sense of designing) before 10 years are out. The competition consists not of the average student, but instead of the best of the best. In other words, the top 10th percentile to graduate from school is not nearly as good as the top 10th percentile to work as designers in industry. This means that they tend to have an inability to learn due to an inflated sense of their own abilities. from their more experienced brethren.
-- Carl |