>The only thing that matters in software is the experience of the user.
That is true, but the experience of the people developing the software matters too, as it informs the care that will be put into creating a better user experience.
Let's say you're creating an application and you're the sole developer and designer of that application. When you have a predictable and reliable development environment that emphasizes good, well defined practices, you reach a state of flow with more ease when you're coding, and your project gets developed faster. Faster development allows you to iterate quickly and better test your assumptions about the user interface and the overall user experience. It gives you more time to design the application. All in all, with a better development experience, the developer gets more time to create a better experience for the user.
I bet Ryan's frustrations—all the abstractions and crappy interfaces—come from years of legacy technologies and the need for compatibility and integration with other systems, and sometimes as preemptive measures to avoid security issues. When they were made, there was a reason for their existence.
Consider systems like the GDS infrastructure backing the travel industry. These systems are long-lived (50y+) and are the backbone of all travel booking and scheduling. The only thing that matters for them is not the end user experience, it's the stability of the system, and society's reliance upon its operation. It's robust and it was produced at the right time to carry an industry into the efficient monster it needed to be to succeed. A whole industry was built on it layer by layer, and what we now have is a complex beast composed of ancient IBM hardware, crazy nested and disparate schemas, greenscreen scrapers, and probably more than a few dashes of COBOL. One can't expect the system to stop evolving while we take a 5 year breather to rewrite it all.
That is true, but the experience of the people developing the software matters too, as it informs the care that will be put into creating a better user experience.
Let's say you're creating an application and you're the sole developer and designer of that application. When you have a predictable and reliable development environment that emphasizes good, well defined practices, you reach a state of flow with more ease when you're coding, and your project gets developed faster. Faster development allows you to iterate quickly and better test your assumptions about the user interface and the overall user experience. It gives you more time to design the application. All in all, with a better development experience, the developer gets more time to create a better experience for the user.
I bet Ryan's frustrations—all the abstractions and crappy interfaces—come from years of legacy technologies and the need for compatibility and integration with other systems, and sometimes as preemptive measures to avoid security issues. When they were made, there was a reason for their existence.