I'd say it is due to incompetence, but not as much the individual engineer's as failures of the organization, though I have seen plenty of people not doing the job they're qualified for. These failures stem from plain mis-management, political turf wars, and misaligned incentives -- cost-cutting being the most obnoxious driver, causing a landscape of balkanized teams to fight for resources and engineering concerns becoming an aftertought.