For novel ideas about building embedded systems (both hardware and firmware), join the 35,000 engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype and no vendor PR. Click here to subscribe.
By Jack Ganssle
I just graduated from college with an EE degree, and have managed to snag a job in the embedded industry. I bought a new car and one of those big-screen TVs, and am planning a vacation in Monaco. My dad is really furious with me and wants me to stuff all of the cash in the bank rather than have a good time. Now he's talking about kicking me out of the house. After 4 years of college, don't I deserve all of the goodies?
Still Living Off The Hog
If you think college was stressful, life is going to hit you over the head with a baseball bat. Things will be far more difficult - and far more rewarding - than mastering differential equations or acing a final exam.
Your dad is right. Most stress in life comes from financial problems; money issues tear at marriages and lead to ulcers and early aging.
Abbey has two words for you to take to heart: Compound Interest. It's the most constant and powerful financial tool you have, unless you were lucky enough to be born with a silver spoon in your mouth.
The stock market traditionally returns about 12% per year over the long-term. Sure, lately the market is the pits. But it will turn up; this slump will not last forever. Investing over the course of years is a sure way to achieve wealth and independence.
Do the math: you're probably making $50k or so, with few responsibilities or expenses. Invest $10k per year. The power of compound interest means you'll be a millionaire in two decades. Retire at 40 or so. That age probably sounds ancient to you right now (Abbey fondly recalls her wild partying life when she was 40), but some of your high school buddies are already playing this game. They'll put in their 20 in the military, and retire at 38 with a modest pension.
Buy a house via a 15 year mortgage. Interest rates are so low today you'd be a fool not to lock into a fixed-rate loan. When you retire the house will be yours, you'll have that million in the bank and a rent-free place to live. Sure, the authorities will take their share in property taxes, but that's a pittance compared to the massive mortgages most people assume and never manage to pay off.
Resist the temptation to "move up"; when the realities of life demand a change in housing, buy modestly and use the equity you're accumulated with the short-term loan wisely. As time goes buy and your wealth increases it's natural to consider buying a very expensive home. But that puts the power of compound interest in the bankers' hands, not yours. Those interest payments drain your coffers and do nothing positive for you.
Avoid home equity loans. They're the quickest route to losing the capital you've built in the house.
Consume little, take pleasure in people and ideas, not shopping and things. When marriage and children arrive continue to make wise financial decisions. Stick to a long-term plan.
Money in the bank gives you options and freedom; massive credit card balances insures you'll be a wage slave forever. Design your life; don't just drift towards old age.
My boss is a good guy and does his best to help us create reasonable schedules. But the Big Boss could care less about engineering realities. He'll make any promise needed to placate a customer. We're left saddled with impossible schedules. What can I do?
Sick Of Stupid Schedules
Frankly - nothing. Live with it. Big Bosses are intrinsically tied to customers, and almost always view the engineering team as just an expense center used to satisfy his promises. Abbey has worked with many Big Bosses over the years. Most claim to understand the realities of development, but immediately lose interest in scheduling problems when seduced by potential profits from the next impossible dream.
It's true that small companies can have pretty functional relationships between the workers and the chiefs. But when projects get big, when many managerial layers divide the decision-makers and the doers, then the interests of these groups diverge.
Sometimes that's healthy. Remember Apollo? JFK committed the nation to an arbitrary and capricious schedule to put Americans on the moon before 1970. It was a political move, a date selected without the benefit of engineering input. A half million people were mobilized, and despite huge and at
I'll present my Better Firmware Faster seminar in Melbourne, Australia February 20. All are invited. More info here.
Abbey recently read in Telephone: the First Hundred Years (by John Brooks, Harper and Row, 1976) that the president of AT&T in 1909 flatly promised that telephone service between the two coasts would be available by 1914. Yet a workable telephone repeater didn't exist. Even the vacuum tube was mostly a dream. It was a bold gamble, one that anticipated invention. He said to his engineers, in effect, "we've promised it, now you find a way to do it.". The engineers struggled with inadequate technology, but in 1912 Harold Arnold realized that De Forest's triode, which barely worked, had too little vacuum; he perfected a high-vacuum triode that made the repeater possible. They delivered on time.
Again, a bold vision, one unachievable when first voiced, with the help of massive resources and very smart people, led to the first coast-to-coast telephone service. Abbey suspects that a schedule created by the engineering group would have demanded many more years or decades since whole new technologies had to be invented.
Years ago Abbey naively thought that capricious schedules would disappear as engineers grayed. With time many of these smart and experienced developers would find roles in management, and some would win coveted positions at the top of the heap, becoming the Big Bosses of today. Though that has indeed happened, few remember the lessons of their pasts. Today they're faced with demanding shareholders, customers wanting more, and fiercely aggressive competitors. Abbey wishes these ex-developers could understand the errors of their ways, but she recognizes that they must respond to pressures that most of their engineers simply cannot understand. She wonders if the nature of corporations is flawed, since workers and Bosses pursue divergent and conflicting goals.
My colleagues all want to adopt eXtreme Programming (XP). It sounds pretty good to me because I get to code a lot more. Design is boring, and the boss sure is happy to see us crank code. We build autopilots for commercial jets. What do you think?
Code Requires All Sorts of Help,
Abbey had the chance to share a number of beers with some of the XP advocates. She herself, of course, remained perfectly in control and hardly slobbered at all. When in their cups they claimed "a design will arise from the code." Abbey supposes this is fine for business software, but shudders to think about a safety critical system built so casually.
Yet the XP folks do have some valuable insights. Their test first, test often and validate all changes via tests, while hardly a new concept, is profoundly important and neglected by nearly every development team. The automated tests XP requires are tougher to implement on embedded systems than for desktop apps. But Abbey feels the cost of extra test jigs is worthwhile to insure high quality code. She notes that one of the contributing factors to the $400 million Ariane 5 failure was management's unwillingness to spend $100k on a test platform for the inertial navigation system.
She does wonder if the pair programming XP mandates might be too intimate for many, especially for so many socially inept developers who can't sustain a relationship with a significant other, let alone a kibitzing colleague. But such an activity does at least put two pairs of eyes on every line of code. She feels that's not as powerful as formal code inspections! but that it's much better than the current model of writing software no one ever audits.
But, please dear CRASH, do let me know if you adopt XP on your autopilots! and tell me the model numbers of planes using this technology. Abbey travels often and has no wish to entrust her safety to code built without a careful design and failure mode analysis.
I read the Aug 15, 2001 Journal of the American Medical Association and was shocked to see how many pacemakers and implanted defibrillators have problems. Did you know that in the last decade over a half million of these have been recalled! almost half for firmware errors?
Abbey did read that article, and was most dismayed to see the rate of recalls increase during the period 1995-2000 versus the previous 5 years. She's sure the code got more complex due to creeping featuritus, but worries that the firmware is apparently getting worse rather than better with time.
But Abbey most of all wants to know: how do you recall one of these, anyway?
I find myself unable to commit to just one computer. There's a hot little ARM9 model that is fast and exciting, but the old Pentium number has been with me forever and is reliable if not so thrilling anymore. After exchanging unprotected disks I'm afraid I've infected both with a virus. What should I do?
On The Fence
Dear On The Fence,
It's fine to have divided loyalties between two very different machines. This is the '00s, after all! Even the most devoted PC person can't resist a run on the wild side with a Mac once in a while. But please, practice safe C.
Check out Les Hatton's "Safer C: Developing Software for High-Integrity and Safety-Critical Systems" which is published by McGraw-Hill UK. Also, if you want to be more conservative, get the MISRA standard (www.misra.org.uk).
(Abigail van Turing writes about matters of interest to all embedded developers.)