This led middle managers to over promise and under deliver. One middle manager told us that “you can get resources by promising something earlier, or promising a lot. It’s sales work.” This was made worse by the lack of technical competence among top managers, which influenced how they could assess technological limitations during goal setting.
As one middle manager pointed out to us, at Apple the top managers are engineers. “We make everything into a business case and use figures to prove what’s good, whereas Apple is engineer-driven.” Top managers acknowledged to us that “there was no real software competence in the top management team”.
Who knows if that notion about Apple is true or if it causes their success. The broader point of needing to understand the unpredictable nature of software is still important. As more organizations start using and making custom written software (if only to make mobile “store fronts” to their business), knowledge of the chaotic nature of software development needs to spread more beyond IT. Even IT people get it dreadfully wrong often.
So far the best tactic we have is to redefine what “success is”: it’s not delivering everything you promised on time, but being predictable about delivering something on regular intervals. That’s a vague way of saying delivering smaller batches of code into production more often. We sort of predict/hope that this results in more useful, better software overall. We’ll see.
Now, of course, part of this process is being honest about reality. The analysis of Nokia’s failures because “management” would not accept “real talk” from their employees will kill any innovation-driven business. As the company (and RIM and countless others) shows: tech companies are never so secure that they can afford to be confident in their market position.