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.
Conclusion
Unfortunately, engineering is impossible, given enough resources.