Involve the users Last updated:21 March 2010

Some usersIn the very first paid job I did, as a fresh-faced 18 year old, I was on the receiving end of some new technology. It was an interesting experience.

The technology in question was a complex piece of machinery which automated the process of splitting up multiple carbon copies of orders for distribution to different sections (shows how long ago it was…). This had previously been done by hand. The order packs came in batches of 48 at a time, and needed to be threaded through this machine before the process could be run. This was rather fiddly.

Now, once it was installed, we had lots of senior visitors who came from the top floor to see this wonderful machine and marvel at how much time was saved. Except, it didn’t really save that much time, if any, because the total time taken was pretty much the same as before for a set of 48 packs, and actually rather longer if there was less than 48 – this happened quite often because urgent orders had to be printed off as soon as they were entered.

The clerical people that actually did the job knew all this, but nobody had asked them… I managed to put my foot in it by saying this to one of the more senior people and was told “You’re not paid to think”. Ouch!

This is especially critical in a contact centre/CRM environment where usability is so critical to the success of an application. On one occasion I commented about the lack of involvement from users in design, and was told it was OK as the Director of Customer Service was involved. But they’re not going to use the system on a call with a customer, are they?

Make sure the real grass roots/coal face/sharp end users are involved in design. They will be the harshest critics of anything that isn’t quite right – and what seems like an acceptable compromise in a design workshop may be the end of the world in a busy contact centre.

The joys of IE6 Last updated:20 March 2010

IE6 logo Find myself in an interesting situation at the moment – enforced usage of IE6 at work. Good reasons for this of course, one application used in this organisation will only work with IE6. Quite a common situation.

What’s interesting is what doesn’t work in IE6 – including two websites for web design agencies I was looking at last week. One of these actually said that their site didn’t work in IE6 and told me to upgrade my browser (I can’t), and the other one just broke (badly) in IE6. Another different site I viewed on the same day used transparent pngs, which aren’t natively supported by IE6. Update: Found another two web design agencies whose pages break in IE6 this week – and these were New Media Age Top 100 agencies as well.

Although I use IE6 at home, I use it exclusively for testing websites I’ve built to make sure they’re OK, so don’t normally come across so many issues.

Personally, at the moment, much as I’d like to ignore IE6, I don’t think it’s acceptable to do so. Excluding people using IE6 from using your website is equivalent to saying, in UK terms, that it’s unavailable in Scotland and Northern Ireland. Or, in US terms, unavailable to most of the people in California.

Consultant buzzwords Last updated:20 March 2010

Some builders propping up a collapsing building Consultant-speak buzzwords have been around for a while, of course, but the one that really gets up my nose is “underpinned”. Often used when announcing some new development or innovation, it is somehow (deemed) far more impressive to say that it’s underpinned by this, that or the other. I thought that was what you did to a building that’s in danger of falling down. What on earth’s wrong with “supported”?

Equally bad, the use of “architected” instead of “designed”. Particularly prevalent in software ITTs.

It’s not big, and it’s not certainly not clever…

Feel free to offer your own personal favourites.

Blackberrys, naval signalling and thinking for yourself Last updated:20 March 2010

Scott of the Antarctic - David Crane I’m reading this book about Scott’s expeditions to the Antarctic at the moment.

A bit of background information about the Royal Navy particularly interested me. It talks about communication between naval vessels in action. In Nelson’s time in the early 1800s it was very difficult, with the result that each captain had to rely on his own judgement and initiative. By the mid to late 1800s, however, improvements in naval signalling meant that captains relied far more heavily on orders from superior officers, with the result that initiative and individual thought was largely stifled, and the quality of naval leadership suffered badly as a result.

It struck me that there are parallels with today’s “always in touch” culture via mobile phones, emails, Blackberrys and the like, all of which discourage people from using their initiative and making a decision, because there’s always someone else to refer the decision upwards.

Maybe one day a week should be declared “trust your own judgement” day…

Loading a webpage in stages Last updated:1 March 2010

I reworked my homepage this weekend and wanted to display the latest Wordpress blog post on it. No problem there. However, the initial response times for my blog are sometimes quite slow, and this then meant that the whole of my homepage was slow to display, because the page was waiting for the blog to respond before displaying anything.

So what I wanted to do was display the home page immediately, and then load the blog post when it’s available. The solution was to use AJAX, which turned out to be very straightforward. More information on AJAX here, but essentially it allows a page to communicate with a server without refreshing the whole page. First things first – here’s the php code to retrieve the latest post from Wordpress as follows (I originally had this on the homepage itself):

<?php require($_SERVER['DOCUMENT_ROOT']."/blog/wp-blog-header.php");
query_posts('showposts=1');
while (have_posts()): the_post();?> 
<h2><a href="<?php the_permalink(); ?>" title="Blog">
Latest blog: <?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>
<?php endwhile;?>

I saved this code separately into a file called latest_post.php (stored in my “includes” folder).

In my homepage file I added some “placeholder” code where I want the blog post to appear. This will be displayed until the data comes back from Wordpress:

<div id="latest_post">
<h2>Latest blog: loading...</h2>
</div>

Note the id of latest_post assigned to the div. Then I added the following javascript code to the <head> section of the homepage

<script type="text/javascript">
window.onload = new Function("loadXMLDoc('/includes/latest_post.php');");
function loadXMLDoc(url)
  {
  if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
  else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.open("GET",url,false);
  xmlhttp.send(null);
  document.getElementById('latest_post').innerHTML=xmlhttp.responseText;
  }
</script>

The function loadXMLDoc retrieves the php file I’ve created above (latest_post.php) and then the last line replaces the text within the element with id “latest_post” with whatever is retrieved. This is standard ajax code which can be used for any purpose. Only the last line is specific to my page.

The code window.onload... calls this function when the page is loaded.

So, when the page is requested the php and html that’s on the page display the page with the placeholder text, but without the blog post, so the page loads nice and quickly. Once the page loads, the javascript is fired which calls the AJAX function to retrieve the blog post, and this loads on the page when it’s available.

This was the first time I’ve used AJAX, and it seemed quite a neat little solution, so I thought I’d post it here. This is the basic solution which could be further enhanced with some error handling.