There are few books I think every developer should have in their library and David Platt's epic titled Why Software Sucks is one of them. It was first published 12 years ago in 2006, so long ago it is not available for kindle, but trust me it is worth the space on your office shelf.
If you care about your software quality or how successful your software users and customers are you need to reaed this book.
I think the main thesis of the book can be summarized by stating software is about the user and developers almost never consider this. David Platt recently stated this in an article:
Know thy user, for he is not thee. No matter what you build it with or what platforms you target�desktop or Web, mobile, IoT, or quantum�your software will always suck, cannot fail to suck, if you don�t actively study who your users are. More important, you need to stop falsely thinking that your users resemble your geeky selves.
Even though it has been a long time since I snuggled up with Platt's book, but it had the effect he intended. No matter what sort of software I build I always consider the end user. How can I make their experience better than the competition? What are their goals, how can I reduce the friction to success.
You should not only interview your users, you must observe them. They will only tell you what they remember they do. They wont tell you why they do some of the things they do or even some steps they take.
I can't tell you how often customers or line of business employees forge their own paths, efficient or not, because they find a way to get their work done or simply abandon the task.
The basic premise I took from the book is that we as software developers have gotten to the point that we know how to make some pretty awesome applications, it is just that the way the typical user will interact with our creations may not be right.
We do a pretty lousy job in many cases making our software intuitive to the actual user, who while they may know how to use a computer don�t think like us.
Developers tend to be very analytical and in control of the situation and have the natural ability to seek out how to manipulate a piece of code. He points out many classic problems with typical software, including the introduction of Clippy (I knew that was a bad idea the day I saw it).
He then takes us through the typical process that Microsoft and many other shops take in the development process. Giving us an objective insider�s view, he changes the point of view to the eyes of a typical end user. He also takes some time to explore what it is like to be part of a major technology conference.
I think many of us, engineers at least have heard the joke:
'If the automobile industry had developed like the software industry, we would all be driving $25 cars that get 1,000 miles to the gallon'. Which triggers an automotive executive to retort, 'if cars were like software, they would crash twice a day for no reason, and when you called for service, they�d tell you to reinstall the engine.'
The point is software engineers think they build amazing tools. But the reality is our customer's don't. This is why the average web page takes over 15 seconds to load on a typical phone. You have 3 seconds or less to engage. At that point you only frustrate the user and typically cause them to look for another solution.
Why Software Sucks should cause you to take some pride in your work and hopefully look at the end product in a much different light.
I really enjoyed this book and I highly recommend it to any software developer to read, including everything from a DBA to the graphic artist. Remember, Progressive Web Apps are about delivering amazing user experiences, those experiences put the user first, which this book puts first and foremost.