September, 2006

Oh for a declarative experience

Want to go on holiday to France. Want to take the car on a ferry. Want to sail to Cherborg, or St. Malo, or Le Harve, or Caen. Flexible about time. Looking for best price. Want to book on-line. These are my goals. Not unreasonable goals, although as soon as I add “I want to have a ticket booked within five minutes” I enter the real of dreams. Currently, it is not possible to realise my goals.

What I want to be able to do is enter my broad travel criteria into a aggregation website and then filter my search. Imagine an excel spreadsheet where I enter my criteria:

Excel sheet, cells empty

The results appear immediately:

Excel sheet, cells filled
And as I change the quantity in my search fields, the results fields immediately update:

Excel sheet, cells changed

That is the declarative paradigm that is conspicuous by its absence on so much of the web. Rather than flexibility, the ferry booking sites send me down an imperative, step driven journey. I cannot adjust my criteria without starting the process again- and that means re-entering all the data I have already provided.

The story doesn’t end there. After fighting with a number of different websites I finally find a ferry crossing that matches my requirements. Condor Ferries. The price is alright – £160.00. I Don’t want to book it there and then, I need to confirm it with my wife. She says “OK” so I return to the site to find that the booking form has timed out. There had been no option to save the quote. I have to start again. I go through the process again to find the price has suddenly jumped from £160.00 to £280.00. Unhappy, I ring the company to be told their system has a real-time flexible pricing engine that changes according to demand. The price lower price is no longer available to me. (At least they didn’t have the cheek to put a premium for the booking over the phone rather than the internet). Indecisiveness gets the better of me so I put off booking till the following day. Once again I go through the pain of step-driven booking wizards. And lo-behold, the price has dropped again to £160.00.

I started with some “wants” and I’ll reiterate them. I want a declarative web experience that meets my expectations and helps me painlessly realise my goals. I want travel booking forms to enable me to push and pull different levers to refine my choices, just like I can change fields on a spreadsheet. Finally, I want to be able to save quotes to return to them later. I don’t want the web to be like a high pressure salesperson who tells me this price is only available if I make a decision now.

My life as a BA

I recently found myself in the role of “BA” on a project. I’m usually involved in “quick starting” projects; driving out high level requirements, developing project / programme roadmaps and helping clients produce tangible visions of where they want to get to. For me, the story lifecycle ceases at the “as a… / I want to… so that…” It is still a placeholder for a conversation – we’ve not yet started to look at the detail. So It’s been good to drill deeper into the anatomy of a story. and so I found myself with the daunting task of writing “acceptance criteria”.

I’m not really a completer-finisher; I’m more into the big picture, so having to get into test detail has the potential to get painful. But this is where I am grateful to Dan North for his Behaviour Driven Development 101 before commencing the gig, and in particular around testing:

Given…
When…
Then…

Inspired. Suddenly the acceptance criteria are in language that I can understand. It becomes a joy to tease out criteria. And it is easier to say when enough is enough – it is after all about diminishing returns (hey Dan?) The value really shone out when a client was explaining complex rules around how some equity trading functionality would work. It was hard to understand what the requirement was. So I asked him to put himself in the shoes of the developers who will build the functionality. How will they know when they are finished? I scribbled out three columns – given / when / then. He then succinctly articulated the scenarios within this framework. What had been hard for him to explain, and even harder for me to comprehend suddenly became clear. Within a couple of minutes we had the story wrapped up were able to move on to the next story on our pile.

Give me results according to my refine

I know there’s a book out there. I know the author’s name begins with M. I know it’s a historical book. So I go to Amazon and for once I don’t search, I browse. I follow the site hierarchy: books> history > general and am presented with 32,5882 results. By default they are ordered by “bestselling” (best selling on Amazon – not always a helpful guide. Today’s number 27 on the list is “IEE on Site Guide (BS 7671: 2001 16th Edition Wiring Regulations Including Amendment 2: 2002)”. Mmmmm. Gripping).

Anyway, so I’ve got 32,5882 results to trawl through. Kindly Amazon provide an ascending / descending alphabetic filter. The intuitive way to return alphabetic results would be by letter. Unfortunatly the technically easy thing is done. Pages are returned by number, with up to ten pages accesibile at a time. That’s not very useful if you’ve got more than thirty thousand results.

Amazon search results

I’m on page 13 and I’m only up to AC… The letter M is an infinite number of clicks away. I’m off to Waterstones where I can physically browse the shelves, and hopefully find the book that way.

If you give me something, don’t make me work to use it

My Nokia N80 came with a bunch of software including Nokia PC suite and Lifeblog. the former is for syncing up the phone with the PC, whilst Lifeblog looks after all the photos I take on the phone. Now you’d of thought that two peices of software on the same CD from the same supplier, packaged with their phone would be compatible with each other. Think again! I’ve got PC suite open and I try to upload photos from the phone using Lifeblog. And I get the below message…

nokia1.gif

I get a message asking me to restart my computer and try again (which won’t rectify the problem because PC suite loads in the system tray). Sorry Nokia. Poor customer experience. You’ve given me a couple of cool peices of software, but haven’t bothered to ensure they are compatible. Or maybe you did but it was a bug that was discovered too late. Now what if they’d been thinking in terms of behaviour driven design:

Given: I have PC suite and Lifeblog open at the same time

When: I choose to upload photos using Lifeblog

Then: the photos will upload and appear in the Timeline view

Or is that too obvious?

It can be costly to break promises…

Starbucks offered a free coffee in a email. As you’d expect, the email got bounced around and suddenly Starbucks had all and sundry walking into their branches demanding their free drink. They took action and rescinded the offer. And now face the rath of the lawyers with Starbucks now facing a lawsuit for fraud. Doh! No doubt someone in marketing is getting beaten up; it was probably a great idea in the workshop but did anyone stop to question all the eventualities? Sometimes you need a pessimist in your midst, someone with a questioning mind that has a negative slant. Someone who can pick holes in your well thought out scenario. Pass your idea by old grumpy in the corner. You never know, they may just save you a lawsuit.

This agile lark. It’s like build a car right?

It’s great when your client gets it. He gives us the analogy. It’s like a car. Release planning is all about getting the car out on to the test track. It’s gotta have a chasis, four wheels, an engine and a steering wheel. Iteration planning? What order should we build stuff in. Well we don;t need the wheels until we’ve got the chasis. The engine is a high priority and there are a lot of dependencies associated with it. And we don’t really need the sterring wheel if we are happy to test on the straight strip… But remember, just because the wheels come lower down the plan, the release isn’t complete until they are all on… And also remember that this is just the “bare bones” of the car. It drives. We can’t acutally take it to the motor show until it looks good. And we can’t take it to the market until it is comfortable.

Corporate trust in the 2.0 world

A successful relationship is built upon communication and trust. That’s obvious in social interactions – when trust is replaced by suspicion and talking is replaced by arguing, a break-up or divorce is inevitable.As an employee I have a relationship with my employer. At ThoughtWorks the relationship is underpinned by communication and trust. ThoughtWorks understands me as an individual with the power of expression. They let you know this in simple (i.e. non-legalese jargon) disclaimer at the bottom of the page on ThoughtBlogs which takes an RSS feed of this page.

Disclaimer: ThoughtWorks embraces the individuality of the people in the organization and hence the opinions expressed in the blogs may contradict each other and also may not represent the opinions of ThoughtWorks.

Working for TW is more about what I can do rather than what I can’t. (And it is a good reason why I love working for them).

Contrast this with many organisations that are more interested in restricting their employees, where interactions are underpinned with suspicion and threatening language. Corporate policies insist that employees sign-up to intrusive and prescriptive “codes of conduct”. The employee is treated as a threat, who will take advantage of anything that is given to them. “Business matters” are everything:

Access to the internet is provided by The Company for business matters only and is subject to the relevant rules governing employee behaviour and is subject to The Company disciplinary procedures, up to and including termination of employment. The company is entitled at any time to examine and/or monitor any usage of any kind on The Company’s premises or using The Company’s equipment. Mess with the Company and The Company will mess with you.

Hardly the language of a successful relationship. Maybe it is time to start challenging this language. With Web 2.0 concepts creeping into corporate life (corporate blogs, Wikis etc) organisations are going to face the dilemma of either maintaining existing prescriptive policies (“thou shalt not…”) or starting to trust their employees, to allow individual expression (“you can… [but]”). The two cannot co-exist. And once the internet codes of conduct are ripped to pieces, maybe innovation can start to flourish. Isn’t it when employees are doing “non-business matters” that the greatest innovations are born?