Engineering is impossible, given enough resources

12th March 2024

Bikeshedding is the phenomenon where everyone’s got an opinion on a relatively inconsequential but accessible conversation, e.g. designing the bikesheds for a new site plan.

An embedded bikeshed is GPIO drivers, which seem to be the most over-engineered part of any embedded codebase; with the most flags, features, layers, and pull-requests.

Another bikeshed is LEDs, just generally. These get the most attention during design reviews, requirements reviews, in drivers, example code, debugging features, you name it. This isn’t even unique to embedded, it’s a favourite of mainframe designers from time immemorial; when you see some of the impressive blinkenlights of yore you just know that many expensive development hours were gladly spent on them.

And inevitably bikesheds suffer from too many cooks, the phenomenon where more people involved causes worse outcomes.

GPIO drivers get overengineered to the point that GPIO is a headache, and people lose track of the basics, like whether pins are configured as open-drain or push/pull. It turns out that nothing is more important, as the difference can damage components.

You think that’s bad? I’ve seen people spend so much time talking about an LED they forget to ever check which colour it was.


Unfortunately, engineering is impossible, given enough resources.

Copyright © 2024 Chris Leonard