<?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>Web Developer 2.0 &#187; Coding</title>
	<atom:link href="http://webdeveloper2.com/tag/coding/feed/" rel="self" type="application/rss+xml" />
	<link>http://webdeveloper2.com</link>
	<description>A blog about web design and development, tools, techniques, products and relevant news.</description>
	<lastBuildDate>Thu, 09 Sep 2010 00:55:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
<cloud domain='webdeveloper2.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>UX Design for Developers</title>
		<link>http://webdeveloper2.com/2009/06/ux-design-for-developers/</link>
		<comments>http://webdeveloper2.com/2009/06/ux-design-for-developers/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 22:30:07 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=1147</guid>
		<description><![CDATA[I&#8217;m currently building a new application and one of the areas that I&#8217;ve been concentrating on is the User Experience (UX) aspects of the build. Often, the UX design is considered to be mainly a creative process, undertaken as part of the graphic or web design phase of the project. It is then down to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently building a new application and one of the areas that I&#8217;ve been concentrating on is the <a href="http://en.wikipedia.org/wiki/User_experience">User Experience (UX)</a> aspects of the build.</p>
<p>Often, the UX design is considered to be mainly a creative process, undertaken as part of the graphic or web design phase of the project. It is then down to the developer to implement the UX as specified.</p>
<p>In this case, I&#8217;m building the back-end functionality first but that doesn&#8217;t mean I don&#8217;t need to think about making using the application a smooth painless experience, regardless of what improvements will be made as part of the front-end design.</p>
<h2>Key Idea &#8211; Remove Barriers</h2>
<p><a href="http://www.flickr.com/photos/b-tal/80728889/"><img src="http://webdeveloper2.com/wp-content/uploads/2009/06/barrier.jpg" alt="Crossing the Line by B Tal" title="Crossing the Line by B Tal" width="600" height="72" class="aligncenter size-full wp-image-1160" /></a></p>
<p>To make interactions as painless as possible, I&#8217;ve sought inspiration from not only web applications but also desktop and mobile apps. </p>
<ul>
<li>Adobe Air has given flash developers the capacity to create and publish desktop applications. These guys are often at the forefront of designing great user experiences and it shows in the slickness of many apps.</li>
<li>Apple&#8217;s iPhone has thousands of applications available and the limited screen size combined with the touch screen interface has resulted in some interesting new application design conventions. The native applications such as e-mail and the iPod interface present examples of functionality honed down to just the most essential interactions.</li>
</ul>
<h2>Example #1: Registration</h2>
<p><a href="http://www.flickr.com/photos/keysofvirtue/87850379/"><img src="http://webdeveloper2.com/wp-content/uploads/2009/06/keys.jpg" alt="keys of virtue" title="keys of virtue" width="600" height="72" class="aligncenter size-full wp-image-1166" /></a></p>
<p>In the conventional scheme, a user would enter their registration details, receive a confirmation e-mail, activate their account and then login to the site. This is often required even for a free trial of the application.</p>
<h3>Automatic Login</h3>
<p>I&#8217;ve built the registration system so it will automatically log the user into the app once their registration has been successfully processed. Rather than wait for an account activation, I&#8217;m doing a simple check to ensure the mailbox for the e-mail address that they entered exists. If I wanted to use an activation code, I could add a grace period during which the user could use the application before requiring an activation code to confirm the account.</p>
<h3>Trial without registration</h3>
<p>I&#8217;ve coded my app so the user can dive straight in and try out the application (in a limited form). All the data that they enter is held in a session cookie so if no further action is taken, it will expire soon after the user leaves the site. If the user decides to go ahead and register, all the data entered in the session is recorded into the database against their new account. This, combined with the automatic login provides a seamless transition from free trial to registered user without having to re-enter any information.</p>
<h2>Example #2: Item Selection</h2>
<p><a href="http://www.flickr.com/photos/pulpolux/28376505/"><img src="http://webdeveloper2.com/wp-content/uploads/2009/06/selection.jpg" alt="selection" title="selection" width="600" height="72" class="aligncenter size-full wp-image-1169" /></a></p>
<p>One part of my app involves selecting an item from a list. It&#8217;s unknown how many items might be in the list so the conventional developer solution would be to create a drop-down list with either an automatic update when  an item is selected or a button to confirm the selected item.<br />
I see problems with each of these approaches, a drop-down list could potentially be quite long, requiring scrolling to navigate. If the user accidentally selects an item while scrolling, an automatic update is unforgiving. The use of a confirm button negates that problem but needs an additional interaction <strong>after</strong> the user has found the item that they were looking for. The confirm button becomes an unnecessary obstacle in the flow of the application.</p>
<h3>One click selection</h3>
<p>My solution is to generate a list of links, each of which can be clicked to make the selection. Initially this looks like a good solution for small numbers of items, but bad for longer lists.<br />
The reason that I&#8217;ve chosen to go this way is that the mechanism is good, a single click once you&#8217;ve found the item. How the list is presented can be tackled as part of the front-end design. In this case I might use something like the <a href="http://www.ihwy.com/Labs/demos/current/jquery-listnav-plugin.aspx">jQuery ListNav plugin</a> from <a href="http://www.ihwy.com">iHwy Inc</a>. </p>
<h2>Some Tips</h2>
<p>While in development mode you can improve user experience by making choices based on mechanisms and functionality, not on presentation. If, like my current project, you don&#8217;t have a specific design to work to, these tips can still make a difference.</p>
<ul>
<li><strong>Look for inspiration</strong> &#8211; A good designer will keep scrapbooks of design elements, textures, colours, shapes etc. similarly, you can make a note of good experiences from any source, not just software applications &#8211; video games, information kiosks, gadgets, DVD players, whatever makes you think &#8220;that was simple/easy/nice&#8221;.</li>
<li><strong>Create a smooth application flow</strong> &#8211; remove unnecessary steps wherever possible. A single click to advance creates momentum rather than an obstacle to overcome.</li>
<li><strong>Don&#8217;t think about presentation</strong> &#8211; provide all the required output for building the front-end design. Strong front-end UX design should build on good application flow rather than try to impose it on to  cumbersome application functionality.</li>
<li><strong>Follow people logic, not application logic</strong> &#8211; Think of the simplest path from one application state to another, regardless of whether it matches your database schema or object methods.</li>
<li><strong>Conventions are compromises</strong> &#8211; tried and tested conventions only became so because most people have come to accept them. At some point in the past, somebody went out on a limb and built them first. Don&#8217;t be afraid to break convention if it makes sense to do so.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/06/ux-design-for-developers/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Status Report 1 &#8211; Productivity 0</title>
		<link>http://webdeveloper2.com/2008/10/status-report-1-productivity-0/</link>
		<comments>http://webdeveloper2.com/2008/10/status-report-1-productivity-0/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 21:38:00 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Interruptions]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://techn0tic.wordpress.com/2008/10/06/status-report-1-productivity-0/</guid>
		<description><![CDATA[Here&#8217;s an interesting thing, how long does an interruption really take? I&#8217;m looking at this primarily from the point of view of a developer. Working on code is generally a hyper-focused task. I usually find that what I&#8217;m doing is writing the code according to a mental model of the program that I&#8217;ve constructed. When [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s an interesting thing, how long does an interruption really take? I&#8217;m looking at this primarily from the point of view of a developer.</p>
<p>Working on code is generally a hyper-focused task. I usually find that what I&#8217;m doing is writing the code according to a mental model of the program that I&#8217;ve constructed. When I get interrupted &#8211; even just to answer a question, that mental model dissolves and I need to spend 15-20 minutes reconstructing it before I&#8217;m back up to the level of productivity I was at prior to the interruption. If interruptions occur within 15 minutes of each other, productivity can drop close to zero &#8211; ever had one of those days when you feel like you&#8217;ve got nowhere?<span id="more-145"></span></p>
<p>For dealing with interruptions there are various techniques you can use. some examples:</p>
<h4>Block everything out</h4>
<p>I like to put my headphones on and play something loud enough to blot out all noise. For people who find music too distracting, I know a developer who wears noise cancelling headphones without playing any music just for the effect of making outside noise indistinguishable.</p>
<h4>Make it clear</h4>
<p>Let people know that you are &#8220;in the zone&#8221;, tell them, put up a sign, wear a special hat or even all three. If somebody is hanging around near my desk then sometimes I have no choice but to try and obviously ignore them &#8211; I don&#8217;t want to be rude but sometimes it just doesn&#8217;t seem worth breaking a good flow of work to look up a password for somebody who can&#8217;t be bothered to search their email inbox.</p>
<h4>Switch off distractions</h4>
<p>If I can get away with it, I close my email client, switch my phone to silent and ignore them until I choose a suitable time to &#8220;come up for air&#8221; e.g. lunchtime and then deal with emails and missed calls all in one go. I had a manager who did a similar thing &#8211; he made it public knowledge that he only dealt with email between 9 and 9:30 in the morning so any email sent after that time wouldn&#8217;t get a reply until the following day. His reasoning was that if something was <em>really</em> important then people would phone him about it.</p>
<h3>What&#8217;s the cost then?</h3>
<p>Given that in my company, we work to estimated timescales, it can be very important to either minimise interruptions or take them into account when estimating development time. I&#8217;ve had fairly basic tasks which should have taken no more than a couple of hours, go on for a couple of days due to ongoing requests for information, opinions, meetings, conference calls etc.</p>
<p>I&#8217;ve also had programming tasks where the time taken to provide ongoing status reports on request actually exceeded the time spent doing the work.</p>
<p>Now I&#8217;m not suggesting that developers should be left entirely alone to get on with tasks as they also have a duty to keep managers informed of progress, I just wonder if anybody has a good method by which developers can schedule their interruptions and not get stuck in zero productivity hell.</p>
<p>Here&#8217;s what a few other people have to say on the subject, following a brief prayer at the altar of <a href="http://www.google.co.uk/search?sourceid=chrome&amp;ie=UTF-8&amp;q=coding+work+interruptions">Goog</a>:</p>
<ul>
<li>Jason Fried &#8211; <a href="http://www.37signals.com/svn/archives2/getting_in_toomuch_touch_interruption_is_not_collaboration.php">Getting in too-much touch (interruption is not collaboration)</a></li>
<li>Brett Kelly &#8211; <a href="http://blog.crankingwidgets.com/2007/01/26/6-ways-to-limit-interruptions-at-work-that-you-can-use-right-now/">6 ways to limit interruptions at work (that you can use right now)</a></li>
<li>Joel Spolsky &#8211; <a href="http://www.joelonsoftware.com/articles/fog0000000068.html">Where do These People Get Their (Unoriginal) Ideas?</a></li>
<li>Stephen Jenkins &#8211; <a href="http://www.computer.org/portal/site/computer/menuitem.5d61c1d591162e4b0ef1bd108bcd45f3/index.jsp?&#038;pName=computer_level1_article&#038;TheCat=1015&#038;path=computer/homepage/1106&#038;file=profession.xml&#038;xsl=article.xsl">Concerning Interruptions</a></li>
</ul>
<p>From the reviews, <a href="http://www.amazon.com/exec/obidos/ASIN/0932633439/">Peopleware: Productive Projects and Teams</a> appears to be a good book with views on this subject and I&#8217;m also going to make time to read some of the research work collected at <a href="http://interruptions.net/literature.htm">interruptions.net</a>.</p>
<p>I&#8217;m interested in hearing anybody else&#8217;s thoughts or findings in this area.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2008/10/status-report-1-productivity-0/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Question everything, including the questions</title>
		<link>http://webdeveloper2.com/2008/03/question-everything-including-the-questions/</link>
		<comments>http://webdeveloper2.com/2008/03/question-everything-including-the-questions/#comments</comments>
		<pubDate>Fri, 28 Mar 2008 00:27:00 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://techn0tic.wordpress.com/2008/03/28/question-everything-including-the-questions/</guid>
		<description><![CDATA[In my recent posts concerning the development of my new blog markup, I&#8217;ve deliberately tried to document my thought processes and the decisions I made along the way. It was a conscious decision not to write up the work in the style of &#8220;this is how it should be done&#8221;, partly because I&#8217;m certain that [...]]]></description>
			<content:encoded><![CDATA[<p><a title="What is the meaning of Life?" href="http://www.flickr.com/photos/86016717@N00/2257739179/"><img style="margin:0 10px 10px 0;" src="http://static.flickr.com/2276/2257739179_0d1a1c9acc_m.jpg" border="0" alt="Question mark" align="left" /></a>In my <a href="http://webdeveloper2.com/2008/03/experiment-2-semantic-blog-template-part-1/">recent posts</a> concerning the <a href="http://webdeveloper2.com/2008/03/experiment-2-semantic-blog-template-part-2/">development of my new blog markup</a>, I&#8217;ve deliberately tried to document my thought processes and the decisions I made along the way. It was a conscious decision not to write up the work in the style of &#8220;this is how it should be done&#8221;, partly because I&#8217;m certain that there are improvements which could be made and I&#8217;m sure that in a few months time, I&#8217;ll look at the code and think &#8220;why on earth did I do that?&#8221;.</p>
<p>In web design, it doesn&#8217;t take a huge amount of time or effort to try things out. We are blessed with an infinite playground in which to let our imaginations run riot, and yet there are still those who would rather crank out the same work time and time again.</p>
<p>It seems to me that doing something in a particular way just because somebody else did it that way is lazy. We can only progress if we question ourselves at every step and then ask ourselves if the question is the right one. At least if we look for alternatives, or at least try and fail to make improvements, we are pushing at the edges of what is possible and one day might find ourselves breaking through into new territory.</p>
<p>Doing things the way <a title="A recognized expert in the field of standards-based web design." href="http://www.simplebits.com">Dan Cederholm</a>, <a title="Co-founder of The Web Standards Project" href="http://www.zeldman.com">Jeffrey Zeldman</a> or <a title="One of the foremost experts in CSS" href="http://meyerweb.com">Eric Meyer</a> do may work as well as anything, but you can&#8217;t be sure that they have discovered the best methods for everything &#8211; why else do they continue to innovate and refine their own techniques? I&#8217;d be surprised if any of those guys had ever put together a web page and then sat back and earnestly declared it to be the best page that had ever been or ever would be created.</p>
<p>Just as it seems to be something of a sport to <a href="http://usability.typepad.com/confusability/2005/06/is_jakob_nielse.html">pick apart anything said by Jakob Nielsen</a> concerning usability, I refuse to blindly accept any web design technique from somebody else (even a self-appointed emperor guru like Nielsen). I have an in-built need to test and tweak until I&#8217;m satisfied that it will do the job &#8211; at least for the time being.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2008/03/question-everything-including-the-questions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: webdeveloper2.com @ 2010-09-10 20:24:28 by W3 Total Cache -->