I was thinking about how much I enjoy working in the embedded systems world and I thought that today I should do some counterexamples, I asked myself, what are the worst, most boring, most terrifying or simply annoying things that we embedded developers sometimes have to do, so here it is, the top 10 most terrible things (according to me) in embedded systems:
10. Finding a terrible bug that needs to be solved hours before the release has to be deployed: testing teams can be very sneaky!
9. Code merge screw-ups in the code management system of your choice: you’ve done your part, submitted your code changes to the code database, your getting ready to leave and then someone calls you and asks why your part is not working. Someone screwed up with the code management system and now you have to do a manual merge. Extra points if everyone else has left except you and your boss.
8. Documenting after the project has been finished: is there even a point to that?
7. Having to debug or add new features to old, forgotten and/or undocumented code: it’s one of my worst nightmares. Extra points if the code is in assembly, if it’s an old and obscure processor or if the development system won’t run on a current computer (I’ve seen all three happen at the same time, good times).
6. Patching hardware screw-ups with software: I’ve seen too many of these, hardware has electrical problems and there is no chance of redesigning it, so you have to come up with some obscure algorithm that defies all logic to fix it.
5. Patching bugs with other bugs: you find out something is wrong in your code, you devise a “clever” way to solve the problem. Three months later a problem is found with that code, your solution turns out to have caused a better hidden and possibly more devastating bug than the original one. You sob quietly in the bathroom*.
4. Filling up weeks of forgotten or denied administrative overhead (weekly reports, project management tasks, expense reports, etc.): I have nothing against proper project management…expect when I have to spend a couple of days catching up with it.
3. Useless meetings: I think Dilbert comics pretty much cover this subject.
2. Explaining bugs or screw-ups to a customer on-site: you or someone in your team screwed up and the customer lost, money, time or something worse…you get the pleasure of explaining to the customer and very possibly an angry mob of employees what happened. Extra points if you get to do it with you boss, boss’s boss, CEO, etc. watching.
And the number 1 most terrible thing to do in embedded systems:
1. Get a call at 11 p.m. from your boss requesting (or shouting) for your presence immediately because a major problem occured (in my case, while on a date)**
Who can relate to these? Have I missed something that’s worse?
* Not based on a personal or actual experience.
** Based on personal experience.