Andre Torrez takes issue with the excessive carping about products we see on Twitter and in other outlets:

I think making the right choices when you face them is the best way to say how things should be done. Having empathy for people doing what you are doing is as important as having empathy for your own users. Path dependence is as operative in software development as it is anywhere else. Most developers aren’t doing things that seem stupid or wrong because they themselves are stupid, but rather because decisions previously made reduce the options that are available to them. Nearly every developer I know would love to work with better designers and spend more time on design. They’d like to do continuous deployment, spend time writing test suites for their code, do code reviews, and use the latest and greatest tools to get their work done. And yet they are stuck using antiquated tools and processes because that’s what their boss understands, or because their project has been around awhile and it’s too difficult to make time to migrate, or because it’s hard to reach consensus about change on their team. To put it more simply, things rarely suck because nobody has come along and told them that they’re not good.