Everything would be a lot easier if every problem had a root cause. Fix X and you'll have better software. Fix Y and your favorite sports team will become a winner. Just change Z to solve the gender imbalance in the tech industry. But that's not reality. Big problems have multiple causes, and those causes interact with each other.
For instance, David Simon argues that societies flourish only when capital and labor balance each other out. "Labour doesn't get to win all its arguments, capital doesn't get to. But it's in the tension, it's in the actual fight between the two, that capitalism actually becomes functional, that it becomes something that every stratum in society has a stake in, that they all share."
We wrestle with similar problems in software development. As the leader of an engineering team, my job isn't to find a magical root cause of greatness and to address it. My job is to enable a productive tension in a system that I don't completely control. We must move quickly, but we can't let speed win out over quality. We can't become so paranoid about quality, though, that we stop taking prudent risks. User focus matters, except when it's at odds with making money, which is great, except when it conflicts with our reasons for writing software in the first place. We must listen to our customers, but we must not let them enslave us into building "faster horses."
Getting the tension just right is hard. For instance, I've struggled before with how to balance risk management with the other responsibilities on a team. In a past job, we became too conservative. Our specs, reviews, approvals and tests made it hard to screw up, but those same processes overwhelmed our other responsibilities. We slowed down and locked ourselves into a cycle of hill climbing. At GameChanger, however, risk management processes have made us faster and more confident. And greater confidence has enabled us us to take bolder risks.
It concerns me when we try to reduce a big problem down to a single root cause. It's happening right now with this weekend's storm over Paul Graham's comments on female startup founders. Does a gender imbalance exist in the tech industry because investors like Paul Graham aren't pulling their weight? Or, as Taylor Rose argues, is Graham correct in identifying middle school as the time to get girls interested in computer science? Or is the locker room mentality that surfaced at PyCon to blame?
Yes and no. All of the above and none of the above. Big problems lack root causes. They arise from many forces that interact. Addressing big problems requires creating just the right tension between just the right forces.
Updated 12/30 to fix a typo at the end of the third paragraph.