Monday, October 1, 2007

Hello October, Will You Design My App?

In a painfully ironic... ironically painful? Let's just go with "In one of those twists of fate called life that is both ironic and painful," I find myself coding a feature in our application for the second time. The reason being that the user interface does not match the new user interface which is shortly going to be replaced by the newer user interface. That's not the painful part yet, nor is it the ironic part. The painful part is that while I am working on moving all sorts of HTML around to support the new CSS organization (which actually is an improvement), one of the designers lets slip that the entire feature is going to redesigned in the future, yet again, after the new version that is not even being worked on yet is completed. Ah well, I can only try and tell them to do at least some design up front so many times. The ironic part about all of this is that I just started reading User Interface Design for Programmers.

The reason I bother I suppose is that some day, I imagine myself working at a company where we gather requirements. Where management is smart enough to understand that prototyping an application in HTML or Illustrator or even just using paper allows one to do usability testing a whole lot cheaper than writing all the application code first and putting the product out in front of people. No one ever gets the UI right the first time. Boy does it just not happen that getting it right on the first try thing. Do you really want to pay an expensive developer to write two sets of code, or would it be better to pay an expensive designer to come up with a few refinements to some drawings?

And I've just been talking about usability problems so far. I won't even get into all the logical issues that we've run into due to designers not thinking about what happens when each and every button on the UI is clicked. Sure, there will always be holes in the spec. But, I prefer a spec with a few small holes to a bunch of vapor with just a few main ideas holding it all together.

Will this new project work in the end? Absolutely. We've got a bunch of great developers working on it and a bunch of really smart people supporting it. Will it work as well as it could? Definitely not. That might be a bit harsh. I mean, nothing is perfect after all. Almost nothing is really ever as good as it could be. But I look at all the wasted time. The time wasted rewriting the application time and again because no one did any usability testing with cheap prototypes. All the time wasted fixing logical errors and wrong decisions made because no one though about how the permissions model should behave in a business environment where community features such as tagging and commenting would be so prevalent. My favorite excuse was "not being able to see that far out." All that time that could have been spent completing more and more usable features that would have blown the users away. And I get frustrated that those of us that believe we as a company can do better don't seem to be able to push through new ideas, and it's not for lack of trying.

Another lesson that I recently learned however, is that there is always a way to accomplish your goals. Don't let my little rant get you down too much. If at first you don't fall off your horse, learn how how to pick up that bridge. Or something.