People ask what I do, and when I tell them "Firmware Bringup," they nod politely until I ask if they know what firmware is, or what "bringup" might be. This is an excerpt from a talk I gave to IEEE OU last month...
Just what is it that I do?
- I don't do Calculus, but I can convert from base-10 to base-16 reasonably well.
- I don't design logic, but I do know enough about VHDL to understand some of the issues our design team deals with.
- I don't do DSP, mostly because I don't enjoy it. ;-) However I know enough about nyquist rates, overshoot, undershoot, system response, etc. to be able to converse (admittedly for only a few minutes) with a controls systems engineer.
- I don't do analog work, against partly because I don't enjoy it, but I did design enough circuits in the lab to be able to verify boards, and if they gave me a solder iron, actually change stuff on them without breaking anything. Probably.
- I do work with assembly, but not for the board I was taught in school. I printed the Hitachi H8 HW Reference Manual (all 800+ pages of it) and started writing. Since I learned it once, all I had to figure out was the little "quirks" of this particular instantiation.
- I don't do any computer architecture work, mostly because I think it's impossible to understand all of the P6 processor without being there from Day 1. However, I do understand in general how a CPU works. There are only so many ways you can fetch, decode, and execute an instruction.
- I do code, but the most complicated program I've written is a shell script with perhaps three while() loops (though it was several hundred lines long, and talked to a server via the network). However, on a daily basis I have to dive in to someone else's code, written for an embedded microsystem and figure out just what's going on, what broke, and how we might fix it.
Overall, I solve problems. I work on the firmware for the embedded service processor for IBM's midrange servers, known collectively as IBM System p5. In a nutshell, my team works at the first point where hardware, firmware, and hypervisor come together in a working engineering test system. It's neat because, generally after we're delivered hardware, we're the first to actually start it up and boot it up to an operating system.
On top of finding and closing issues in my own area, I support the greater "Bringup" team, helping them when they encounter problems in my component, and asking for help when I encounter problems in one of theirs. This is where I think I have the most value; I try to make sure I explain something once -- "give a man a fish and he'll eat for a day..." If I can make myself 100% redundant, my mission is accomplished. Judging by the number of times I get called or IM'd during the day, that's a little way's off... :-) My current assignment in firmware should end around June just in time for my 1-year anniversary with the company, and we'll see where I go in STG from there!
I don't work on Websphere, Rational, or DB2. I'm not a computer science guy, and don't work for any of the Software Group products. I work very closely with hardware engineers in Systems and Technology Group. I don't do PC Tech Support, I don't work on Windows, and I don't work on AIX. I don't sit at a desk, or in a cube. I spend my days in the lab prodding, poking, and sometimes kicking hardware like this thing's baby brother with a team of other like-minded individuals. I do dabble in Linux a bit, but don't work on any particular Linux project itself. Chances are good you'll never actually see my work, but it's in those big black boxes, somewhere...
Update: Expanded a few things. I'll post more of the speech later. I might actually try writing up a series of essays around recruiting time in the fall. Several people have asked my opinion on recruiting stuff, so I may as well give it before I lose the "shiny new college recruit" polish.