1. Development process is led by managers, not developers.
2. Developers frequently work under time / budget pressure.
3. Money is the only stimulus, so the developers try to make software good enough to get paid.
4. Big companies try to make something big.