I sometimes feel that I spend so much energy hacking together products. I have a set of requirements steeped in usability, user experience, and content consumption, but in the end I don’t have products that meet those demands. The products available to me are too generic that they don’t support such advanced functionality, are inferior by design, or just don’t exist.
I sometimes have good luck hacking together a solution. Perhaps there is an API allowing a set of business processes to be performed outside of the system in a more efficient, user-friendly way.
My biggest pet peeve is when a solution is great in theory, but when I’m bringing it to the user it seems cumbersome to them. It is no fault of theirs, the design is flawed. There are too many steps, too many options, too many things to think about. The user just wants to get their job done. They want to get past the boring tasks and memorizing steps and procedures is boring.
Technology is supposed to help get things done and unless you are designing something for your own purposes you are left to the mass marketed design choices of others.
Yes, it is very important to ask yourself why. “Why does it need to be in that format?” “Why has it always been done that way?” “Can it be done a different way?” I’m open to all that, I preach the benefits of change myself, but when it takes over a year to adjust to a new method, something is broken. Something is flawed.
As a developer you can’t please everyone all the time. You can’t put in every feature request suggested by your users. But you can find commonalities. Perhaps the trending topic in your support forum is “it’s too slow” or “I can’t find out how to do X” or “Why do I need to do X before Y when most of the time I don’t know X?”
My common gripe is that generally there are too many steps and my users eyes start glazing over. Usually this is the result of systems that don’t talk to each other or a design that was not user centered.