The problem of common sense is more difficult though. I recently attended a review of the software requirements for a particular highly detailed vehicle feature. This feature involved the use of 12 identical temperature sensors. When I reviewed the requirements with the team, I found that they had 12 sets of identical requirements, one for each temperature sensor. I asked why they hadn’t written one set of requirements and then added a requirement that said the original requirements applied to all 12 sensors. I got some vague answer about the test & integration people needing individual requirements for each sensor. When I pointed out that requirements are extremely expensive, that every requirement has to traceable thorough architecture, design, implementation and test, and that compliance must be demonstrated at each stage, etc, I got some very sheepish looks. Duh.
Software is already naturally complicated enough without adding human-induced overcomplexity. Somehow or other these software engineers need learn to apply common sense, to think simply and try to make their software components and systems as simple as possible, but no simpler – to borrow a famous quote. Reduce, constrain, simplify and resist unnecessary complexity of all kinds. A really tough challenge.
Looping back to hubris: how can one possibly be confident about one’s ability to realise autonomous driving and related functions when one doesn’t recognise the challenges of mastering software complexity, let alone have a systematic competence to master it?