I think there is an additional reason here too. Software development work is (too often) seen as heads-down, anti-social work. Large corporations often bridge communication between software developers and the business/end-users via third-parties, such as product owners/manager, architects, and business analysts. Remember the "telephone" game we all played in kindergarten, where a message whispered between participants becomes comically unrecognizable by the time it reaches the last person? That is BigCorp software development in a nutshell.<p>Solving this communication problem is uncomfortable. Connecting software developers with end-users is hard. It means software developers have to have courage to ask "dumb questions" when the end-users explains something too quickly in jargon-laden terms. It means that end-users have to be patient, with the time to teach and explain enough about the problem domain. People with strong communication *and* technical skills are hard to find, and creating ongoing mutual respect and cooperation between end-users and the oft-hated IT department is only possible when employee attrition is low enough to create long-standing relationships.<p>Software development is fun when it is a high-momentum, self-contained exercise. So we direct our energy to complexity, because its fun and safe. We don't need to stop and engage with end-users who speak a language we barely understand. We don't need to create consensus among disagreeing end-users representatives. We just need put on some good music, drink some coffee, and solve clean technical problems, rather than messy people problems. I'd guess most software developers would say "you don't pay me enough to deal with people", and walk away.