The root cause of bad software has less to do with specific engineering choices, and more to do with how development projects are managed.