In the span of 3 weeks this month we got more snow than we did all last winter. This meant that the route I take from the train to the office was a maze of caution tape and ‘beware of snow and ice’ signs. These are necessary of course to place the fault on the pedestrian if a chunk of snow or ice fell off the building and hurt them. What amazes me the most however is that a number of the buildings seem to have been designed in such a way that they collect the most snow possible on their various ledges and jetties. Hellloooo. This is Canada. We get snow here. This is an established fact. You would think that architects would take this into account when designing their buildings. Instead it appears that when you spent many-millions on a building you also get a couple yellow standards with the title tenant’s name on it pointing out that while it might look nice, it is a bad design for a section of the year.

Aside from a bit of a rant, how does this fit in with testing? Enter rant part 2.

Much like buildings which should interact with their surroundings in a sane manner, so too much software. Rather than the environment being ‘downtown Toronto’, software’s environment is the OS. This means that software should know how to interact with the host OS. On windows this means being able to handle paths with spaces in them (care to guess how I spent part of my afternoon?) and no unix file and directory names that begin with a ‘.’. If your product cannot be

  • built
  • installed
  • configured
  • run
  • removed

on a Windows platform with a space in a path somewhere then it is a bug. I would argue it is one of the highest priority as well since the default install location for user applications on Windows is ‘c:\program files’.

I’ve rattled off this list to a couple people before and the common belief seems to be that I am on the right track except for the built aspect. I’m keeping it on the list though. To me, a smell of whether a product is going to be fragile or not is how easily it can be built. If I have to reproduce the exact state and configuration of the build machine in order to make a working copy of the software there is something seriously amiss.