Can Vs. Should

Recently a support request for WordPress came up on the wp-hackers email list I subscribe to that reminded me of one of the big delimas of programming (and frankly much of life): If you can do something, should you do it? There is a big, and valuable, movement in web design called contingency design. This design approach says, “Given Murphy’s Law of things going wrong, what can we do to prevent that from happening?” In general this is a good principle. However, it is not a law. You need to find areas that are useful for your time, things that help where 90% of the people will need it. In programming misconfigured machines can cause ‘bugs’ that are really just the result of a misconfiguration. In design it is possible to spend extra hours working on things that do not help the end user because only 1 person in 10,000 will ever do what it is you’re working on and they don’t need to do it.

This is basically an issue of prioritization and evaluation of what is vital and what is extraneous. Sometimes in interface design choices are made that make the development process quick, however, the end user is not thought of. In this case usability is so bad users might not use the feature at all. In other cases users might misconfigure the software simply because the interface is poor. Make priority judgments based on:

  • Quality
  • Cost
  • Time

Note:Thanks David O’Hara for showing me this ‘triangle of evaluation’
Realize that you usually can’t have something that is of the the utmost quality in a very small amount of time, or that if you design something that takes more time to develop because of quality needs, the cost will go up.

Just because you can do something doesn’t mean you should do something.

Firefox 1.03 and Web-FX’s Internet Explorer Emulation Code

If you use the Web-FX IE emulation code and users hit your site with Firefox 1.03… it’s not going to work. I don’t fully know what happened in the Firefox code but you can replace all instances of ‘this.[javascript object or parameter]‘ within the extendEventObject function. Due to not being certain of legalities that are involved in posting corrections of others work I’m not going to include the corrected file. This library of code is also used in the coolbars2 code so you’ll need these changes for that as well. By my testing the changes are backward compatible to older versions of Firefox and Mozilla.

Hope this helps others, because it freaked me out :)

Getting Real… Most of the Time

In Getting Real: Ignore details early on Dan Boland of 37Signals, a reputable design and usability company that is breaking into the developer services market, shares about how important it is to rough out the details first and to not get bogged down by details. This is critical in most design and development situations. I’m going to warn of this one caveat: know your clients. If you’re going to build your own application, which is generally the focus of Dan’s article, you can work on the roughing out, and then get down to particulars and this would be a smart choice. However, I recently made the mistake of doing this on a client project and it did not get me any favor with the client. Because as we got closer to the release date they saw lots of features that were rough rather than fewer pretty features. We ended up nailing all of the needed features and they’re pretty polished, but it did not go how the client had expected. I learned a lesson in this and thought that others just might benenefit as well.