I'm going to share a quote from this mailing list from this developer:
No ... maintainability is the third thing to consider. The first isutility. Does the code perform it's intended function? The second isperformance. Does it get the job done quickly and efficiently, ordoes it bring down the machine? Now you get to maintainability ...and believe me, if you did the first two jobs right, nobody'll give adamn till you leave.
My response was that I was shocked that usability didn't enter into his top three. His reply?
There's a programming language designed specifically for people who
are concerned with usability. It's called Visual Basic.
This is not the attitude of a developer. This is the attitude of the "L33T." So I replied:
And anyone who ignores usability is a liability.
I don't care as much if a program is usable for a developer, but I do care greatly whether or not an end user can use the program that is created.
Back at the city, we would often handle things under the hood in a very different manner than it was presented to the end user. While it may have led to increased complexity in the UI, it allowed us to concentrate on making the user experience as easy and straightforward as possible.
If you aren't developing with your users in mind, your coding is merely mental masturbation. Sure, it's fun, but it's not something you'll want to show off.
It was then mentioned that not every program is an end-user interactive program. That's true, but even if that's the case, something is going to be using it. If you are making someone or something jump through hoops just to use you, are you really doing anyone any favors?