Somewhat recently, Dan Abramov wrote this interesting piece on his approach to learning about UI engineering.
The article’s key takeaway is this:
“My biggest learning breakthroughs weren’t about a particular technology. [ … ] It’s this combination of understanding the problems, experimenting with the solutions, and applying different strategies that led to the most rewarding learning experiences in my life.”
In keeping with this wholistic, problem- rather than technology-oriented approach Dan starts with outlining the problems and challenges he has encountered repeatedly when developing user interfaces.
Subsumed under categories such as consistency, responsiveness and resilience he describes common user experience challenges and questions UX designers and developers routinely see themselves confronted with.
Being aware of that kind of user-centric considerations is not just conducive to solving UX problems but required if you want to deliver software that not only works from a technical point of view but that actually works from the user’s perspective. Only software that achieves the latter creates actual value! Software that technically works but fails to deliver an at least adequate – preferably delightful – user experience doesn’t work at all because it fails to achieve the goal it was created for in the first place: Making the user’s life easier!
Such software must be considered broken, which is why it’s vital to not just take UX into account when creating software but to make it the prime consideration and outcome of any kind of software development.