<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>distributedlife &#187; user experience</title>
	<atom:link href="http://distributedlife.com/blog/category/user-experience/feed" rel="self" type="application/rss+xml" />
	<link>http://distributedlife.com/blog</link>
	<description>passionate about everything</description>
	<lastBuildDate>Sun, 31 Jul 2011 03:32:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>UX Addendum</title>
		<link>http://distributedlife.com/blog/2010/03/ux-addendum.html</link>
		<comments>http://distributedlife.com/blog/2010/03/ux-addendum.html#comments</comments>
		<pubDate>Wed, 10 Mar 2010 13:55:20 +0000</pubDate>
		<dc:creator>Ryan Boucher</dc:creator>
				<category><![CDATA[user experience]]></category>
		<category><![CDATA[distributedlife]]></category>
		<category><![CDATA[ryan bocuher]]></category>
		<category><![CDATA[rybo]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://distributedlife.com/blog/?p=474</guid>
		<description><![CDATA[One thing that I forgot to mention yesterday with my post about UX and intersections is that the orange line helps reinforce positive behaviour. The approach of using traffic lights punishes those who err rather than teaching people how to make the correct decision more frequently.
When we are designing user interfaces we should be mindful [...]]]></description>
			<content:encoded><![CDATA[<p>One thing that I forgot to mention <a href="http://distributedlife.com/blog/2010/03/ux-for-intersections.html">yesterday with my post about UX and intersections</a> is that the orange line helps reinforce positive behaviour. The approach of using traffic lights punishes those who err rather than teaching people how to make the correct decision more frequently.</p>
<p>When we are designing user interfaces we should be mindful of this and help the user make the correct decision rather than punishing them when they make the wrong one.</p>
]]></content:encoded>
			<wfw:commentRss>http://distributedlife.com/blog/2010/03/ux-addendum.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UX for Intersections</title>
		<link>http://distributedlife.com/blog/2010/03/ux-for-intersections.html</link>
		<comments>http://distributedlife.com/blog/2010/03/ux-for-intersections.html#comments</comments>
		<pubDate>Tue, 09 Mar 2010 13:55:43 +0000</pubDate>
		<dc:creator>Ryan Boucher</dc:creator>
				<category><![CDATA[user experience]]></category>
		<category><![CDATA[decision]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[intersection]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[red light]]></category>
		<category><![CDATA[road]]></category>
		<category><![CDATA[ryan boucher]]></category>
		<category><![CDATA[rybo]]></category>
		<category><![CDATA[spending]]></category>
		<category><![CDATA[traffic]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://distributedlife.com/blog/?p=469</guid>
		<description><![CDATA[You’re driving along the road and you’re approaching an intersection. You’re at the point where if the light goes orange you’re unsure whether you should stop or continue through the intersection1. We are making the assumption that you’re generally law abiding. The light turns orange and you’re still in this no-man’s-land.
If you leave it too [...]]]></description>
			<content:encoded><![CDATA[<p>You’re driving along the road and you’re approaching an intersection. You’re at the point where if the light goes orange you’re unsure whether you should stop or continue through the intersection<sup>1</sup>. We are making the assumption that you’re generally law abiding. The light turns orange and you’re still in this no-man’s-land.</p>
<p>If you leave it too late you could end up in the intersection; if you keep going then you may run the red-light.</p>
<p>To make it more interesting there is a red-light and speed camera; so you can’t speed up and you get fined if you don’t make it.</p>
<p>What do you do?</p>
<p>The issue is uncertainty there are too many variables to make an easy judgement call. Not all intersections are the same length, not all roads are at the same speed, you are not always going exactly the speed limit, you’re not always the same distance from the intersection when the light changes.</p>
<p>If you add additional factors like poor vision from eyesight, poor vision from bad weather or poor spatial skills it becomes even harder.</p>
<p>If you look at this problem as “should I keep going?” we can make a simple change that I think would remove the issue.</p>
<p>If you’re travelling at the speed limit there is a finite distance you can travel in the five seconds from when the light goes orange to when the light goes red.</p>
<p>If you travelling 80km/h then are moving at 22.2metres per second and if you’re travelling at 60km/h then you are moving at 16.6m/s.</p>
<p>If you have 5 seconds to cross the intersection then you are going to travel 111.1 or 83.3 metres respectively.</p>
<p>Now consider the example story and add a single orange line drawn across the lane at 110m from the far end of the intersection. If the light goes orange and you haven’t crossed the orange line then you are never going to make it. The decision is made for you. If you’ve crossed the line then you will make it and can continue at the speed limit.</p>
<p>The caveat is that all of these equations are based on the maximum speed of the road. If you’re travelling slower than the speed limit or there are poor conditions and you are outside the line you have more time to stop. If you’re inside the line then it comes back to the judgement call.</p>
<p>Some may argue that because it doesn’t solve the problem for all scenarios it won’t work or the government would get sued. The judgement call is the backup and is the current process. The orange line solves the problem in all scenarios where the driver is travelling at speed. In rainy or icy conditions it may even help drivers who are unsure whether their car will stop in time.</p>
<p>To me; all of this relates back to designing the User Experience and challenging the assumptions about what we think the user knows at the decision point. I feel we are often too focused on the outcome of a decision (user invokes behaviour) rather than the decision process.</p>
<p>If we’re in the mindset of “if the user wants to do X they can click here and if they want to do Y they can click there” or “if the driver wants to make it through they keep driving and if they want to stop they slow down” we need to take a step back and make sure the user can make the decision in time.</p>
<p>When you are next giving a user choice consider why and how the decision is made. It may be possible to better plan the flow so that no decision is ever necessary.</p>
<ol class="footnotes"><li id="footnote_0_469" class="footnote">if you&#8217;re turning left you will be travelling at a lower speed and better able to stop</li></ol>]]></content:encoded>
			<wfw:commentRss>http://distributedlife.com/blog/2010/03/ux-for-intersections.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Process Improvements</title>
		<link>http://distributedlife.com/blog/2010/02/process-improvements.html</link>
		<comments>http://distributedlife.com/blog/2010/02/process-improvements.html#comments</comments>
		<pubDate>Tue, 16 Feb 2010 13:55:05 +0000</pubDate>
		<dc:creator>Ryan Boucher</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[business language]]></category>
		<category><![CDATA[distributedlife]]></category>
		<category><![CDATA[ryan boucher]]></category>
		<category><![CDATA[rybo]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[user acceptance testing]]></category>
		<category><![CDATA[vanilla c]]></category>

		<guid isPermaLink="false">http://distributedlife.com/blog/?p=296</guid>
		<description><![CDATA[As a service tester I am constantly flabbergasted by what passes as design by developers. Most of the time my flabbergast is directed at their continuing refusal to learn from their mistakes. Just recently though I had the pleasuring of growing myself.
Service tests where I work are written in Vanilla C. We’re talking 80’s C [...]]]></description>
			<content:encoded><![CDATA[<p>As a service tester I am constantly flabbergasted by what passes as design by developers. Most of the time my flabbergast is directed at their continuing refusal to learn from their mistakes. Just recently though I had the pleasuring of growing myself.</p>
<p>Service tests where I work are written in Vanilla C. We’re talking 80’s C with the big hair, neon and everything. One of the things Vanilla C doesn’t have is the concept of a Boolean. Integers are used.</p>
<p>When we execute tests we leave cross cutting concern validation off when testing functionality and then enable it when are specifically testing that particular cross cutting concern. An example is ‘Exception Reporting’. We do this to reduce the time it takes to execute the tests and to stop Exception Reporting failures from failing the functional tests. Restricting the focus of testing is very important to me.</p>
<p>So we would have code that looks like this:</p>
<pre><code class="cplusplus">EnableCheckForExceptions (0) ;</code></pre>
<p>I was explaining this to my junior service tester and she asked why it couldn’t just be a Yes or a No.</p>
<p>I didn’t have a good answer especially because I knew it was entirely possible to have just a yes or a no; in a newer language I would have coded something like this:</p>
<pre><code class="cplusplus">ExceptionValidation.Enable () ;</code></pre>
<p>But in C we don’t get such extravagances as classes. Luxury!</p>
<p>What I did and what I will do in future is define an enumeration like so:</p>
<pre><code class="cplusplus">enum EnabledOptions {No, Yes} ;</code></pre>
<p>and then changed the signature to this:</p>
<pre><code class="cplusplus">
void EnableCheckForExceptions (enum EnabledOptions ExceptionValidationEnabled)
{
     //...
}</code></pre>
<p>This isn’t mind blowing software architecture but anything that increases friction or is a barrier to learning makes it more difficult to learn. Right now my primary job is establishing an autonomous service testing team from people who are not software developers. This is a combination of teaching them various programming languages and writing an API layer that encapsulates the existing HP Service Test functions and gives it a more realistic testing terminology and structure. <strong>This enables the testers to use their language to write service tests.</strong></p>
<p>To me this is where HP’s Service Test fails most of its users. It’s designed for the people who <strong>wrote </strong>Load Runner and not those who are service testers or those that lack in depth programming knowledge.</p>
<p>I fell into the same boat but thankfully I was saved by taking my implementation to the users and asked if made sense. User acceptance testing for APIs!</p>
]]></content:encoded>
			<wfw:commentRss>http://distributedlife.com/blog/2010/02/process-improvements.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quality Assured</title>
		<link>http://distributedlife.com/blog/2010/02/quality-assured.html</link>
		<comments>http://distributedlife.com/blog/2010/02/quality-assured.html#comments</comments>
		<pubDate>Mon, 15 Feb 2010 10:32:30 +0000</pubDate>
		<dc:creator>Ryan Boucher</dc:creator>
				<category><![CDATA[testing]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[Buzz]]></category>
		<category><![CDATA[confidentiality]]></category>
		<category><![CDATA[distributedlife]]></category>
		<category><![CDATA[Gbuzz]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[quality assurance]]></category>
		<category><![CDATA[ryan boucher]]></category>
		<category><![CDATA[rybo]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[social networking]]></category>

		<guid isPermaLink="false">http://distributedlife.com/blog/?p=309</guid>
		<description><![CDATA[One of the problems I see facing testers is their own lack of knowledge about what can and needs to be tested. The second problem is that not enough people in power include testers in the entire development process.
Many of you are probably aware of the issues surrounding Google Buzz and the publication of private [...]]]></description>
			<content:encoded><![CDATA[<p>One of the problems I see facing testers is their own lack of knowledge about what can and needs to be tested. The second problem is that not enough people in power include testers in the entire development process.</p>
<p>Many of you are probably aware of the issues surrounding Google Buzz and the publication of private information. One of the ones that caught my attention, second hand I might add as the original post is now private. Here is the article that I read. <a href="http://www.guardian.co.uk/technology/blog/2010/feb/12/google-buzz-stalker-privacy-problems">Click here for article.</a></p>
<p>Based on the article it would be easy and foolish to say that Buzz and the rollout of Buzz weren’t tested properly. I would say that there is a lot of testing going on here and my guess is that almost none of it is defective or underdone.</p>
<p>As I did with the “<a href="http://distributedlife.com/blog/2010/01/the-great-australian-internet-blackout.html">Great Australian Internet Blackout</a>” I am going to talk about testing and how that relates to the issue at hand rather than the actual issue at hand.</p>
<p>Firstly let’s get to the obvious testing that was probably done on Buzz. There are some basic concepts of information security; Confidentiality, Integrity, Authentication, Authorisation, Availability and Non-Repudiation. <a href="http://en.wikipedia.org/wiki/Information_security">Here is a Wikipedia article about Information Security.</a></p>
<p>When it comes to testing I call these testing aspects and add a seventh called Penetration testing.</p>
<ul>
<li>Confidentiality – testing to ensure the correct disclosure of information</li>
<li>Integrity – testing that ensures that a receiver of a message can determine whether or not the message has been altered since initial transmission.</li>
<li>Authentication – testing to ensure that sender and receiver are who they say they are.</li>
<li>Authorisation – ensuring that only authorised parties can request a message</li>
<li>Availability – testing to ensure the system supports its uptime requirements (must be available 23 hours a day, etc) and the staleness of data. An example of stale data is that when a piece of information gets changed there will be a requirement that all copies of that data are updated within a time frame (maybe 24 hours)</li>
<li>Non-Repudiation – testing to ensure that an action undertaken by an authorised party is recorded such that they cannot deny the action took place. This is commonly implemented to as auditing.</li>
<li>Penetration – A penetration test is a method of evaluating the security of a computer system or network by simulating an attack from a malicious source<sup>1</sup></li>
</ul>
<p>You may already be looking at the confidentiality tests and thinking that Google didn’t test that. It’s not that simple because what is correct disclosure?</p>
<p>When they (Google People) were designing Buzz they probably had some meaningful and great requirements, user stories, use cases or feature lists. These probably specified the automatic following of most frequent contacts, sharing of information between contacts, etc, etc. The underlying concept is that my most frequent contacts are my friends or family.</p>
<p>If I had a Gmail account then that is how my contact would look; friends and family. As you’ve seen from the aforementioned article (link again); that is not always the case.</p>
<p>This leads me back to the confidentiality; there was probably tests run to ensure that people who are not on your follow list cannot see your confidential data. There were also probably tests run that ensure that the follow list was created correctly, etc, etc.  These were all based on the requirements and no doubt all these tests passed.</p>
<p>It is my belief that this problem was caused by not engaging testers early on in the process. A good tester involved in the process has the job of questioning everything and coming up with scenarios well before testing that will highlight potential concerns.</p>
<p>Consider this:</p>
<p>A social network relationship is one that is formed between two people. These relationships can be one way or bi-directional. The direction relates to the flow of information.</p>
<p>Example: In twitter I may follow you; this is a by default a one way relationship whilst in Facebook we are friends and that is a bi-directional relationship.</p>
<p>Can you see the problem with the above statement?</p>
<p>The problem is that assuming that the relationship involves people. In terms of the business language in the problem domain you have people in the relationship but in the implementation; what do you really have?</p>
<p>In the sense of Buzz the relationship is actually just a Gmail email address. And an email address is something that is very easy to create.</p>
<p>How is any of this a problem?</p>
<p>Consider a piece of functionality that features often in social network tools; the ability to block a person who you do not want to give access to your information. This leads off the use case: “how do I stop someone following me and seeing my information?”<sup>2</sup><sup>3</sup> The answer is to “block” them.</p>
<p>What does it really mean though? If a person is just an email address and email address are easy to create how does the ability to block an email address going to solve the problem. If one gets blocked you create another, if you hadn’t already.</p>
<p>This is an example of logically correct rules that are implemented and tested without issue but fail because whilst it is a solution it isn’t a good solution in terms of the user experience.</p>
<p>How does all this relate to a problem facing testers? In my experience there are not enough testers out there that can adequately test the aspects of security and I don’t just mean penetration testers; as there are even fewer of them. I’m not qualified to do penetration testing and I’m the most experienced in the topic amongst the testers where I currently work.</p>
<p>Secondly there are not enough testers that when they are involved early in the project do they sufficiently analyse the system and raise the necessary concerns. Most of them focus on whether the requirements are testable; a worthy goal but nothing in comparison to focussing on whether the requirements are correct.</p>
<p>Finally in my experience the other area that I see testers have the least amount of experience and knowledge is the user experience. Interestingly enough that was the other talked about flaw in the Buzz release (<a href="http://www.scripting.com/stories/2010/02/14/googleDidSomethingSeriousl.html">see this article by Dave Winer</a>); automatically signing everyone up. Ironically it was probably done to make the system easier to use; reducing friction and the barriers to participation, etc.</p>
<p>Testing isn&#8217;t just about proving the requirements have been implemented correctly. If you&#8217;re just doing that then you need to skill up or get out of the game. It&#8217;s about challenging assumptions and asking the question why. If we don&#8217;t do that then we are nothing more than checkbox in the development life cycle. Quality has been assured. Then again the people who think we are just about assuring quality, including testers, have probably never asked the question; whose quality?</p>
<ol class="footnotes"><li id="footnote_0_309" class="footnote">http://en.wikipedia.org/wiki/Penetration_test</li><li id="footnote_1_309" class="footnote">If you want a user story “as a user I want to be able to block people from following me”</li><li id="footnote_2_309" class="footnote">Or a requirement “A user must be able to block another user from following them.”</li></ol>]]></content:encoded>
			<wfw:commentRss>http://distributedlife.com/blog/2010/02/quality-assured.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

