Figuring out HCI

I've been reading "The inmates are running the asylum" lately, and wow, is this book blowing my mind. I was amazed straight from the foreword, where the author states that the problems with the current software development process are due to accountancy, and then actually manages to explain it in a way that makes sense. I had never thought about the issues that way. The first chapter starts with examples of terrible software design in modern systems or appliances, and no matter your background you're forced to agree that this is all pretty crap. As a software developer I find myself often squirming in embarrassment at many of those failings, especially as some of them resonate so true to me (e.g. caring about the hierarchical file system when really, users would rather not have to worry about this ever...) This is a book I'm reading slowly to reflect on mistakes made, consider things under new perspectives, and hopefully do better next time.

I'm in a lucky position at my day job, in that in addition to my software development duties I get to interact with our stakeholders and customers. I love the opportunity to understand how my software is used and make it more useful, therefore I keep trying to improve the way I help refine requirements so that both parties end up happy. The book is helping me already by reshaping the way I go through that process. I was, and still am, guilty of figuring out what I'm supposed to do by making lists of features and of tasks to accomplish. Now I try to do this by thinking in terms of interactions, and what information would be helpful for the user to have on-screen. That I discovered Balsamiq's Mockups around the same time is lucky (and I shall write up a review of this awesome piece of software soon), as it's been helping me put together potential UI mockups in seconds instead of minutes -- drag and drop vs. somewhat realistic HTML.

Making and discussing quick mockups before writing the first line of code has been highlighting how, when design emerges only from coding, one is more likely to tweak things a bit to reduce/remove difficulties in the underlying code, and that's exactly the kind of small, mindless decisions that slowly take over a product until you end up with something that's not intuitive, sort of unpleasant to use and that would star brilliantly with all the terrible examples from Chapter 1 of the "inmates" book. It works but it's hard to use and makes the user feel stupid.

Unfortunately things are not just that simple. I've been trying to apply this new process, talking to my users and asking questions slanted toward understanding what sort of interaction they would find most useful and pleasant to use... but it takes a bit more to change a process. No matter what I ask, the answer tends to be, "whatever is fastest for you to build." There's probably a lot of factors mixed up in there. Needing the feature ASAP, dependence on the developers, self-knowledge that they are power users and can learn, awareness of the backlog size, wanting the dev freed up to work on the next feature/defect...

And they might not be wrong. In my fancy mockups from the last session, there are some elements that, now that I've started coding them in, I'm realising are not as simple as they look, and although of course it is possible to add them in, there will be a cost attached to it both in code complexity and time. I see the interaction cost of simply removing the feature ; I see the cost of keeping it in. This is going to be a balancing act rather than a process overhaul, especially since speed of development always matters so much. I still want to get better at making software that's enjoyable to use, though I can't let my productivity drop significantly to do that.

I'm enjoying a lot learning more about HCI. If  anyone has additional resources to recommend, please do share!


< Back to main >

I saw this post earlier, and thought I wouldn't have much to say (because my idea of good HCI -- emacs -- is so different from what most people want that I usually don't even try to explain) but I've just been banging my head against a railway booking website (eastcoast.co.uk), and my plea to web developers generally is "Explain every error, with an exact explanation of what the site found unacceptable and what it will accept. Allow the users to continue past errors if at all possible." The particular example I hit was that the site (UK-based) wouldn't take my VISA card (a UK bank but an Irish address on the account), but there was nothing to say what else I could do. Eventually I gave up, and rather than forgoing their online booking discount and booking the same journey by phone, I booked a flight direct from Dublin instead -- although the whole journey will cost me more this way, I wasn't going to give them my trade after they'd mucked me around!

So, that's at a less detailed level than "HCI" usually means, but is the most significant thing I can say about making (web) software more pleasant to use!
#1. Posted by John (Website) on Sun 23 May 2010, 14:29

Hello! This text is normally hidden with CSS. If you can see this, you'll also see two additional fields with no label on the form. Leave them as is, as those are aimed at catching form-filling spam bots. Thank you!

    Name: (or OpenID Sign in with OpenID)
      Email: (Not published)
        Website:
          Comment:
           

          < Back to main | Up >