The failures of technology are always people, without exception.
Windows sucks. It sucks because MSFT is a business, and as such packs every tiny suggestion from every focus group full of fools into their interface - the One Big Giant Executable that is Windows.
Software fails because programmers don't understand code at an abstract level. They write as though "magic" happens - as it seems that way when you program by dragging and dropping and mousing around. So who can blame them? There's no system. No design. No architecture. No specifications. And more than half the projects undertaken are never used in production anyway, by anyone.
Programmers almost invariably fail to realize this though because they are being paid WAY too much for their crapy work by employers who can only evaluate whether the final result looks pretty and doesn't crash. They can't even evaluate by usability.
Employers have no way to know if the coder did a good job. The result of this is huge egos, turf battles and pointless debates about pointless issues where no one actually knows what they're talking about.
But no matter, toss another phone book (learn may latest magic bullet in 24 hours), turn brains off, create a half-assed GUI, no design document, and everyone gets another big raise.
The entire industry is a fraud. And who can blame Indian software sweatshops for laughing at us all the way to the bank.