My take away from this is you need to ask 'why' as often as 'what' and 'how' when developing software.
In my experience many software developers completely fail to challenge the 'why' of what they're being asked to do, and jump right to design/coding.
To be fair though, not all software developers work in an environment where they can, or feel they can, ask or challenge the 'why', but the software will only benefit if they do.