3 ms·
When is the last time anyone ever saw a project that was “under-engineered”? And aren’t those projects easier to fix…because they are so simple?
by kwertyoowiyop 5y ago
When is the last time anyone ever saw a project that was “under-engineered”?
And aren’t those projects easier to fix…because they are so simple?
- magicalhippo 5y ago> And aren’t those projects easier to fix…because they are so simple? In my experience it can be just as difficult to fix, at least if constrained by backwards compatibility. Under-abstracted code for example often introduce cross-dependencies which can be hard to break in a backwards compatible manner.
- convolvatron 5y agoquite a bit. under engineered as in 'never really tested, is known in general not to work'. usually, yes in theory it should be easy to fix - but since the parent organization doesn't value getting a handle on what's really going on, it never does.
- oriolid 5y agoOver the last years I've been working with an audio library that makes several simplifying assumptions, like - Audio interfaces are never added or removed over the app's lifetime - Audio is never rerouted between interfaces, or at least the app doesn't need to know about it - The details of an audio interface, like number of channels or supported sample rates, do not change while the interface is running - Audio latency never changes and callback timing is always precise, so timestamps are not really needed and a single number is enough Of course, none of these are really true and adding support for some of them would require rewriting a few APIs and many, many implementations. On the overengineering side, of course it has its own smart pointers, string class, thread implementation etc just in case someone needs to build for a target that doesn't support C++11.
- dTal 5y agoIn the world of hardware, which I realize is a parallel universe to the one in this thread where "product" apparently means "app", the answers are "all the time" and "no", respectively. If someone didn't take the time to do actual "engineering" - which is to say, using mathematics to formalize design requirements (again, possibly a foreign concept to the app-building class) and just YOLOed the design based on intuition, you can end up with something so fundamentally broken in concept that "fixing" it requires a bottom-up redesign starting from fundamentals. A child's drawing of an airplane is not progress towards a blueprint of one!