Triple-Triple Redundant 777 Primary Flight Computer (1996) [pdf]
citemaster.net
citemaster.net
[1] https://en.wikipedia.org/wiki/Modified_condition/decision_co...
Lately I've been flying a lot and even now, after hundreds of flights, each time the plane takes off I think about how amazing it is that this whole air-travel system works so reliably and safely. Kudos to Boeing and Airbus engineers.
I've worked in nuclear energy, surgical medical imaging devices, and in the auto industry - and it really gets me in a tizzy when a fresh "agile MBA manager" expects a "quick hack" solution to some of these problems. There just isn't always one when quality/reliability are requirements, not nice-to-haves.
Sounds like you company is clearly hiring the wrong MBAs, maybe the problem is your company :)
Agile is designed to get a product to a customer, rapidly and adaptively. But this is mostly useful for software that stands alone; you can't always rapidly adapt microcontrollers, bone drill burrs, heavy turbines and optical sensors. Even if you could make a 'quick hack' to one, there's 50 standards to reassess, and if one fails, you have to go back and re-do your change.
The OP is right. There are problems that require longer term, complicated solutions that have to be designed first, approved second, and implemented third. An agile MBA is not dumb; they just don't all work on the same problems.
It goes back to hiring the right people, not to the people themselves :)
I think the difference is that most engineers understand when high reliability is necessary, even if they can't deal with the pressure of implementation. An MBA whose job is to "move the ship faster" simply isn't going to understand the distinction between parts of the system that can be thrown together, and parts that absolutely can't.
Hard to hire the right people when the majority of MBA's aren't engineering undergrads.
Each PFC channel contains three dissimilar processor lanes, and software from Ada source code using three different Ada compilers to provide triple dissimilarity.
Surely if three different implementations in three different languages agree, then the problem is with the fourth, disagreeing implementation! However, the second team annoyingly pointed out that they had automated tests that covered the official test vectors. Well, maybe the tests were coded wrongly too! Well, could the first team implement the tests that include the official test vectors? What a waste of time! There are automated tests that check that the first three implementations all calculate the same results for many random inputs!
It turns out that the very first implementation, in Javascript, had a bug, and that bug was transliterated into two other implementations. But since the second team hated reading Javascript code, and because that team consisted 100% of annoying (but good-looking) pedants, they implemented the algorithm by reading the spec. instead of by copying the first implementation, and so they got it right.
Incidentally, the bug was that the key and value in an HMAC calculation were swapped. HKDF uses HMAC in a counterintuitive way, where the key isn't (necessarily) a secret, but the value is.
http://www.inf.pucrs.br/~zorzo/cs/n-versionprogramming.pdf
https://en.wikipedia.org/wiki/N-version_programming
This is an excellent overview http://www.adelard.com/papers/divchap.pdf in regards to https://appsrv.cse.cuhk.edu.hk/~lyu/book/sft/