As soon as I penned the title to this column, the tune to Where Have All the Flowers Gone? by Pete Seeger and Joe Hickerson popped into my mind, where it’s been playing in a loop ever since, but as usual I’m wandering off into the weeds and we haven’t even started yet…
I just received an email from a young engineer that made me feel rather sad, but that reminded me how lucky I was when I started out my career in engineering. Maybe we can offer this youngster some advice…
Let’s start with the original message, which reads as follows (note that I’ve edited this a little in order to protect her/his identity):
Hello Max. My name is ###### ###### and I am fan of you and your writing. I purchased your Design Warriors Guides to FPGAs while I was in school and found it very informative. I am writing to you because I am a young engineer in need of advice. I currently work as an ASIC/FPGA engineer at a large aerospace firm in ######.
My problem is that I am lacking the guidance I need from senior engineers to truly learn the discipline well. I find myself frequently getting stuck and staying stuck for much of the day because senior personnel are too busy to help. I ultimately resolve my issues, but I feel like I am not learning the trade very well.
I am very interested in knowing what it takes to become good at this. I believe that I am capable and bright, but I lack the coaching. Many of the senior engineers had great mentors that they shadowed and they learned the trade very well, so it’s puzzling to me why that sort of system is practically nonexistent these days.
I was thinking about enrolling in professional training courses but they are costly. I would appreciate any words of wisdom! Regards, ###### ######
As I say, this made me feel very sad. It’s horrible to be dropped in at the deep end, to not know which way to turn, and to not have anyone to ask questions and bounce ideas off. It also reminded me as to how lucky I was when I started my own career. I can’t help myself… join me if you will on a brief trip down memory lane…
------ Start of trip down memory lane ------
After graduating with a B.Sc. in Control Engineering in the summer of 1980, my first position (“Look Mom, a real job!”) was with International Computers Limited (ICL) in Manchester, England. At that time, ICL made honking big mainframe computers and I was hired as a member of one of their Central Processing Unit (CPU) design teams.
It didn’t take me long to discover that little of what I’d studied at college had much bearing on my new job. I also quickly realized that tasks that had appeared easy in the classroom (when the lecturer was doing the bulk of the work) were somewhat trickier when you had to do them in earnest. Fortunately, ICL had a really good policy whereby junior engineers like me were partnered with more experienced team leaders. I was lucky in this regard to be assigned a mentor called Dave Potts, who taught me far more than I’m sure he ever realized. Working under Dave was somewhat frustrating, however, in that he would never answer even the simplest question directly; for example:
Max: Hey Dave, what time is it?
Dave: Where is the sun in the sky? Which way is the wind blowing? On what side of the tree does the moss grow? How…
To cut a long story short, Dave’s policy was to lead you through a series of questions, thereby guiding you to discover the answers to life, the universe, and everything for yourself. In many ways this proved to be a superb learning experience (but you quickly learned not to ask Dave what time it was).
As one example, my first task at ICL was to design a 128-bit barrel shifter and rotator; that is, a unit that could shift or rotate the contents of a 128-bit bus by any amount from 1 to 128 bits in a single clock cycle. Dave informed me that the project called for this unit to be implemented using eight Application-Specific Integrated Circuits (ASICs), each of which would handle a 16-bit chunk of the data bus. Furthermore, all of the ASICs were to be functionally identical in order to keep the project within budget.
Note: As an aside, I should point out that we were designing gate-level schematics using only pencil and paper; also that the ASICs in question each contained only around 2,000 equivalent logic gates (these devices were considered to be pretty much state-of-the-art at the time).
Initially, my task didn’t appear to be particularly strenuous. The only tricky details involved handling logical versus arithmetic shifts and working out what to data to “stuff” into the “ends” of the shifter / rotator. Part of the solution was to employ a couple of the pins on each ASIC to act as a device ID, thereby instructing each chip as to its position in the chain.
When I’d completed this part of the exercise, Dave deigned to inform me that he’d neglected one slight detail, which was that – in addition to processing all 128 bits – the shifter/rotator also had to be capable of working with only the least-significant 64 bits or the least-significant 32 bits. OK, my task had just become a tad trickier, but it still wasn’t all that bad and a few days later I returned with my latest offering. “Ah, Ha!” said Dave, “Now we’re getting there, but in addition to binary shifts/rotates, this device also has to be able to handle 128, 64, or 32-bit Binary-Coded Decimal (BCD) data.”
Dave then proceeded to explain BCD in general along with what shifting/rotating this form of data entailed (what values do you insert when performing an arithmetic shift right on a BCD representation, for example). The great thing was that Dave was endlessly patient and he was always available to answer questions and to offer suggestions as to different ways to do things and cunning logic tricks one might employ.
And so it went. Every time I finished a problem, another feature would be added to my portion of the project. In reality, of course, the main specification already contained all of these details, but if I’d been presented with the full requirements on my first day, my brains would have leaked out of my ears and I would have been reduced to a gibbering wreck.
------ End of trip down memory lane ------
Looking back with hindsight (the one exact science) I realize just how lucky I was. If I had simply been presented with the full-up specification for the shifter/rotator on the first day, I wouldn’t have known where to start. The result could well have been to ruin my self-confidence and to leave me feeling like a failure, which would almost certainly have negatively affected the rest of my career.
So my heart really goes out to the young engineer who sent me the original email. The problem is that I really don’t know what to suggest. There are various online training resources, but there’s nothing as good as having access to someone more experienced with whom you can ask questions and bounce ideas around.
One thought might be to see if there’s a local chapter of the IEEE or ACM and to join it. Maybe one could find a mentor there.
Does anyone else have any suggestions?