BT DiamondIP is live!

BT DiamondIP WebsiteA whopper of a project!

I was able to set a good direction on the information architecture, and to keep everyone committed to a more-or-less standard navigation scheme. There was little I could do to influence the tone and tenor of the copy, but I did help cut down the marketese to a manageable level. In terms of the visual design and branding, I got to work again with my good friend Peter Alexander, who took in the strict constraints that I was imposing and provided me with just the clean look and photo-graphics I was looking for.

I was committed to building a good modern website, with as little compromise as possible in the quality of the code, design, and trying to stick close to semantic HTML. Noble goals. But I didn’t get a choice in CMS packages. EktronCMS it would be. Ektron is an ASP.NET CMS package with all the features you could want. Smell a rat yet?

It was a constant struggle to get it to work, to get it to work as it should, to get it to work well with clean code. I based the site’s HTML structure on the BluePrint CSS Framework, but that got partially butchered by the junk code ASP.NET wants to inject, and the spaghetti code that Ektron gleefully injects everywhere.

Of course, as a CMS package, Ektron fails as many do: by making GUI editing as complex and counter-intuitive, if not more, than HTML itself. Which means, of course, that the webmaster will have to do the updates anyway… and I could do them faster in Notepad! Also, as a typical ASP.NET application, it breaks all the time. And as a typical enterprise application, it’s also very slow, and ugly as a pig farmer in a cocktail dress.

Nevertheless, I soldiered on through. I used an XML sitemap to drive the navigation dynamically, Ektron collection controls and content placeholders and other god-awful components to put together a site that looks good and doesn’t suck. And custom-coded a bunch of tools and forms. I worked through my Christmas vacation in Paris to get it done. And now it’s done.

I’m proud of the result, yet I can’t say that the process made a lot of sense. I’m an excellent swimmer, but I don’t like to be forced to swim with a backpack full of rocks, especially when nobody needs the rocks or the backpack.

Default to Worst Practices

I’m currently taking a training class on K2.Net, a .NET-based workflow system. It’s an interesting tool, quite powerful and usable, and the training is also of high quality. Still, it has me shaking my head, because it teaches worst practices.

The lab section of the training has us building a sample workflow, and it is riddled with bad choices. For a start, the approval step in the workflow is captured by an “Approval” variable which is a string, not a boolean. Okay, that’s minor, and I can see that it makes the lab easier. But then other fields are mis-named, or mis-used, as the lab progresses.

Also, the basic form we build to initiate workflow asks the user for a name and email, even though this is an authenticated, registered user, whose name and email we already know from context.What is worst: We later send notifications to the authenticated user, not to the email address they provided in the form.

It’s like death by a thousand cuts. A slow accumulation of slight design errors and inconsistencies, which eventually amount to the wrong way to design a workflow. Okay, I understand that the training is not about workflow best practices… But shouldn’t it be?

The way I see it, this training will result in a dozen people having the ability to use this product, but no idea how to do it right. Builders with a flawed approach to design. And I see the same problem cropping up everywhere. For instance, on a recent article about Atlas (Microsoft’s upcoming implementation of AJAX), a sample showed how to dynamically change the label on a form button to the current time, when the user clicks it. With Atlas, you can do it without a page refresh. Yeah, but WHY? Why would you ever want to put the current date and time on a button label? I know this is a technology demo, but why demonstrate how to do the wrong thing?

This problem is pervasive in developer training, code samples, programming classes. Developers, who often end up having to make design decisions without extensive training in interaction design, get bombarded with examples of bad design. Why do we keep training bad habits into them?