UI Leaps of Faith

In every software company where I've ever worked, an interesting thing happened whenever a phone call came in to the wrong person. A highly intelligent software engineer would pick up the phone, say “Sorry, you’ve come through to the wrong person, I’ll transfer you,” then stare around the office like a lost sheep.

This person, who could write a million lines of well-structured Java code and, when prompted, pinpoint exactly which class was responsible for a given function, mysteriously failed to “get” the phone’s hardware UI, his immediate nemesis. For all its sleek plastic power, the evil phone device stood in his way and prevented him from simply transferring the call so that he could get on with his programming.

I started out with this article thinking that I would be blaming the phone’s interface for the programmer’s moment of confusion. Given that transferring calls is a fairly major function, there’s nothing on the phone that even hints as to how a call should be transferred. No “transfer” button. But then I realised that other, non-technical people appear to have no problems at all operating the phone.

Receptionists typically put us programmers to shame. They can stack waiting calls, forward to people’s voicemails, instantly get back to caller no.7 (for example) and divert all incoming calls for extension 472 to extension 331, all the while one-handedly operating Windows Solitaire so fast that the screen’s a blur.

There seems to be an impedance mismatch between the software universe that the programmer has grown so used to, and the physical world in which he must visualise an entirely different cognitive model atop any even slightly complex device (office phone, fax machine, photocopier etc), and map the device’s physical constraints into his universe’s virtual parameters; all that just to transfer a phone call, or send a fax, or to bathe the cat in the washing machine.

In case you're interested, I've put a more in-depth version of this article at my website over here: UI Leaps of Faith.

About the Author

Matt Stephens is a senior architect, programmer and project leader based in Central London. He co-wrote Agile Development with ICONIX Process, Extreme Programming Refactored, and Use Case Driven Object Modeling with UML - Theory and Practice.