"Developer Mode"
Jeff Atwood wrote a post on passing the “Elevator Test”. He says,
Software developers think their job is writing code. But it’s not.* Their job is to solve the customer’s problem. Sure, our preferred medium for solving problems is software, and that does involve writing code. But let’s keep this squarely in context: writing code is something you have to do to deliver a solution. It is not an end in and of itself.
A good software developer thinks logically and in both the abstract and the concrete. But a better software developer takes those abilities and forces them to bow down to the big picture, and to those that have to use the software to achieve that picture. Good algorithms alone won’t make good software. Software has to be built for the people who use it to solve their problem.
But here’s the thing about developers, we can’t help ourselves. We have to think “logically”. A while ago I found myself responding to feedback on a user interface with an explanation about why fields were “logically” the same or different, and the reason why we displayed things a certain way. About halfway through my explanation I realized that the very fact that I was explaining meant I already lost my own argument. Bottom line, our users expected something, and the UI didn’t deliver. The user interface was logically correct and made sense if a user had a deep understanding of our system, but the only users that meet that criteria are people that work for our company.
I stopped my explanation mid-stream and said “yep, you’re right – that should change to be more clear.” But it was really hard to do that, because of my stupid thought process. I’m going to call that “developer mode”. I don’t care how much we work to write applications from a user-centric viewpoint, and we do, we all slip back into “developer mode” at one point or another. It’s often subconscious, in my experience.
Or am I alone? Do you ever find yourself arguing for something that’s “correct” in the face of what’s “usable”? Do share!