<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Violently Mild</title>
	
	<link>http://violentlymild.com</link>
	<description>The digital home of Kushal Pisavadia</description>
	<lastBuildDate>Mon, 22 Feb 2010 07:09:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ViolentlyMild" /><feedburner:info uri="violentlymild" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Just a few more tweaks</title>
		<link>http://feedproxy.google.com/~r/ViolentlyMild/~3/oxR5Om1phk4/</link>
		<comments>http://violentlymild.com/just-a-few-more-tweaks/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 10:00:05 +0000</pubDate>
		<dc:creator>Kushal</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[refactor]]></category>
		<category><![CDATA[tweaks]]></category>

		<guid isPermaLink="false">http://violentlymild.com/?p=90</guid>
		<description><![CDATA[Whether you&#8217;re a designer or developer, tweaks can become the bane of your existence or the fastest way to ship that feature. When you&#8217;re working to a deadline or budget it&#8217;s not always possible to be as thorough as you&#8217;d like, so when should you be doing those tweaks?
Solving usability problems
In a previous post I [...]]]></description>
			<content:encoded><![CDATA[<p>Whether you&#8217;re a designer or developer, tweaks can become the bane of your existence or the fastest way to ship that feature. When you&#8217;re working to a deadline or budget it&#8217;s not always possible to be as thorough as you&#8217;d like, so when should you be doing those tweaks?</p>
<h3>Solving usability problems</h3>
<p>In a previous post I explained <a href="http://violentlymild.com/why-you-should-do-usability-testing/">why you should do usability testing</a>. Something that I neglected to explain is that doing usability testing shouldn&#8217;t trigger mass rewrites of code or entire redesigns of functionality. Once you&#8217;ve got your results and have them prioritised you should: fix the biggest problems, with the least effort, that can be solved for most people. After these issues have been fixed, try testing the system once more and you&#8217;ll be able to gain better feedback on what you might be missing.</p>
<h3>Tweak or Redesign</h3>
<p>The most obvious benefits of tweaking include: reduced cost, less work and faster completion time. However, from a project management perspective, tweaks are much more likely to happen as they don&#8217;t require as much planning, client meetings or questioning to get signed off compared to big overhauls. In addition to this, most people aren&#8217;t too fond of entire redesigns, so a tweak might mean less of the user&#8217;s time needs to be spent on understanding what&#8217;s changed.</p>
<p>On the other hand, too many tweaks can make for a confusing system. By adding too many tweaks at the same time you may sacrifice the navigation or continuity of the system, leading to long-term issues. Sometimes a well thought out implementation can produce better results than a bundle of tweaks that are poorly executed.</p>
<h3>Tweak and then refactor</h3>
<p>You&#8217;re never going to end up with perfect solution on the first try (maybe you do, I don&#8217;t know), but it&#8217;s always best to iterate and then clean up. Personally, after every five tweaks that I implement I tend to try and clean them up where possible. My thinking behind this is that five tweaks aren&#8217;t so many to cause issues down the line, but  any more may give you problems when adding functionality at a later date.</p>
<p>In conclusion, while tweaks tend to be frowned upon they are a necessary evil. As long as you clean up what you&#8217;ve done on a regular basis, you won&#8217;t cause yourself too many major issues.</p>
<img src="http://feeds.feedburner.com/~r/ViolentlyMild/~4/oxR5Om1phk4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://violentlymild.com/just-a-few-more-tweaks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://violentlymild.com/just-a-few-more-tweaks/</feedburner:origLink></item>
		<item>
		<title>Can you teach me how to make computer games?</title>
		<link>http://feedproxy.google.com/~r/ViolentlyMild/~3/sRVuzN89gb0/</link>
		<comments>http://violentlymild.com/learning-how-to-program-was-a-secondary-aim/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 09:00:21 +0000</pubDate>
		<dc:creator>Kushal</dc:creator>
				<category><![CDATA[Teaching]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://violentlymild.com/?p=79</guid>
		<description><![CDATA[I was asked recently by a friend to teach his son — we&#8217;ll call him Marcus — how to program. Like many children (and many to follow) Marcus just wanted to make games. In this instance, I thought of Python and the PyGame library for it&#8217;s breadth and quality of documentation. Sadly, I still needed to [...]]]></description>
			<content:encoded><![CDATA[<p>I was asked recently by a friend to teach his son — we&#8217;ll call him Marcus — how to program. Like many children (and many to follow) Marcus <em>just wanted to make games</em>. In this instance, I thought of Python and the <a href="http://www.pygame.org/">PyGame</a> library for it&#8217;s breadth and quality of documentation. Sadly, I still needed to teach him the basics of programming and Python isn&#8217;t as forgiving to beginners as I&#8217;d like.</p>
<p>My challenge was trying to keep things fun, while still learning how to program. Over the years I&#8217;ve read numerous technical books, but none compare to the accessibility of <a href="http://mislav.uniqpath.com/poignant-guide/">Why&#8217;s (poignant) Guide to Ruby</a> when it comes to understanding the mindset of a language. The bonus of this would be that a lot of the knowledge learnt would be transferable to Python as well.</p>
<h3>Learning to program was a secondary aim</h3>
<p>When I learn a new programming language I tend to read a book or a set of tutorials end-to-end, completing every exercise and example until I understand it. In comparison, the poignant guide reads like a story rather than sticking to technical examples. You&#8217;re taken through different landscapes with bacon-craving foxes, granny bombers and floating whales. While you&#8217;re laughing at chunky bacon jokes you&#8217;ve already learnt the basics of instance variables, class methods and method arguments. The beauty of the poignant guide starts to shine through when you see the beautiful comics. At first they seem messy, but the style adds to the stories making for a much more compelling learning experience.</p>
<p>As a side not, while I find the comics endearing I can understand why many programmers would be put off. If you&#8217;d like to get started with Ruby quickly and are confident in your core computer science knowledge this might not be the book for you, but if you&#8217;re a beginner or are about to teach someone the basics this might be a great choice. As an alternative, you might be better off trying the <a href="http://www.pragprog.com/titles/ruby/programming-ruby">pick-axe book for Ruby</a>.</p>
<h3>Hello World!</h3>
<p>We both breezed through the poignant guide within a day, allowing enough time (another day) for me to try and apply some of the knowledge to Ruby and gaming. We both sat down and started to build a basic text adventure game and began by typing out some of the common features of the game. It&#8217;s a puzzle game where a <em>player</em> moves through different <em>rooms</em> fighting <em>demons</em> by <strong>farting on them</strong>. I initially spent an hour building out the classes for each of the objects in the game explaining why this is useful, after which we switched seats and I helped with any unknowns. Some of the programmers out there might call this <strong>pair programming</strong>.</p>
<p>Marcus was a great student and was able to get the game finished in less time than I expected. Probably the most enjoyable part of using the poignant guide to teach programming was that I didn&#8217;t have to state &#8220;use an array&#8221; and get a confused look back. Instead I would refer to the different components as they were laid out in the stories, such as caterpillars (arrays) and loud words (destructive methods).</p>
<h3>Where do we go from here?</h3>
<p>It looks like I&#8217;ll be heading back next weekend to add to the core Ruby knowledge. My aim is for Marcus to be using Python and PyGame by March and I&#8217;ll start teaching some simple habits to make the switch as smooth as possible — whitespace is probably going to be the first of these.</p>
<p>If you&#8217;re ever asked to teach someone how to program I can&#8217;t emphasise enough how useful the poignant guide will prove to be. In addition, using Ruby meant that the usual traps that most new programmers fall into — forgetting semi-colons, curly braces and brackets — never see the light of the day.</p>
<p>If possible, I&#8217;ll try to follow this blog post up and track Marcus&#8217;s progress. Should he also consent I might put some of the source code up should you wish to get a better idea of how a text adventure game could be laid out in Ruby. <a href="http://mislav.uniqpath.com/poignant-guide/book/chapter-3.html#section2">Chunky Bacon!</a></p>
<img src="http://feeds.feedburner.com/~r/ViolentlyMild/~4/sRVuzN89gb0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://violentlymild.com/learning-how-to-program-was-a-secondary-aim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://violentlymild.com/learning-how-to-program-was-a-secondary-aim/</feedburner:origLink></item>
		<item>
		<title>Why you should do usability testing</title>
		<link>http://feedproxy.google.com/~r/ViolentlyMild/~3/fSfdduY9bB0/</link>
		<comments>http://violentlymild.com/why-you-should-do-usability-testing/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 23:26:35 +0000</pubDate>
		<dc:creator>Kushal</dc:creator>
				<category><![CDATA[Usability]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://violentlymild.com/?p=68</guid>
		<description><![CDATA[I recently completed my first usability test and while it wasn&#8217;t very rigorous, it definitely opened up my eyes to how much feedback can be gained in such a short period of time. This became even more evident when showing results to the clients (designer team) who were over-confident in their ability to produce easy [...]]]></description>
			<content:encoded><![CDATA[<p>I recently completed my first usability test and while it wasn&#8217;t very rigorous, it definitely opened up my eyes to how much feedback can be gained in such a short period of time. This became even more evident when showing results to the clients (designer team) who were over-confident in their ability to produce easy to use products.</p>
<p>I feel the process of usability testing can be summed up in these <del datetime="2010-01-28T14:46:56+00:00">four</del> five steps:</p>
<ol>
<li>Watch someone use your product</li>
<li>Take note of any issues they have</li>
<li>Reward/de-brief the participant for their time</li>
<li>Fix the usability problems encountered</li>
<li>Go to step 1</li>
</ol>
<p>While usability testing has been defined and re-defined numerous times, the basic principle is simple: you watch people <em>use</em> your product. Coming from a development background I found this hard to swallow as I was of the opinion that people should use (and test) the product when it&#8217;s finished. I was regularly doing app-based unit testing to make sure that the core logic was always working as expected, but I didn&#8217;t think that giving an incomplete experience would at all benefit the final outcome.</p>
<h3>Testing on a budget</h3>
<p>Having recently read Steve Krug&#8217;s <a href="http://www.sensible.com/dmmt.html">Don&#8217;t Make Me Think</a>, I opted for a DIY approach to testing. The project was around mid-way through design and implementation and due to the overall complexity involved in the product I felt that a usability test would be wise before moving forwards. Being a member of the development team I found it easy enough to take notes and explain them to the relevant team members for improvement.</p>
<p>The test format was fairly simple. Three individuals were gathered who had no previous history or knowledge of the product. They were each (separately) sat down in a room with myself infront of a computer. They would use the product (an application) and would be asked to complete a series of tasks and give a play-by-play commentary on what they&#8217;re doing and thinking. For the purposes of this test, a set of ten common tasks were set as the base-line to make testing fair amongst the different participants. In case you were wondering, <a href="http://silverbackapp.com/">Silverback</a> was used as the recorder.</p>
<h3>Why was it useful?</h3>
<p>After voicing my concerns about possible difficulties in using the UI, my opinions were shot down as I <em>wasn&#8217;t the target audience</em>. Having completed the usability test one thing was made blindingly clear to the design team: their core concepts weren&#8217;t easy to understand. Despite some features being unexpectedly beneficial to the test participants the core of the design had basic problems, which luckily could be dealt with this early on.</p>
<p>Initial reaction was frustration and anger, given the shear amount of time that was spent on this app, however within a short while it became a competition to see who could spot further issues to do with speed and sight when going back over the test videos.</p>
<p>I can happily confirm that the team I worked with in creating this application have been more than happy with my thoughts and findings on usability testing. So much so in fact, that they&#8217;ve made it a weekly occurrence! Participants are dragged in from all areas and rewarded with vouchers and free food. The money spent on them clearly outweighs the lost sales and man hours that would occur when attempting to do changes last minute or after release.</p>
<p>If you haven&#8217;t done any usability test yet, what are you waiting for? The cost incurred for the above was around £30 total (Silverback was used while still on a trial license) and the benefits to the business were a great deal more than that. Happy testing.</p>
<img src="http://feeds.feedburner.com/~r/ViolentlyMild/~4/fSfdduY9bB0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://violentlymild.com/why-you-should-do-usability-testing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://violentlymild.com/why-you-should-do-usability-testing/</feedburner:origLink></item>
		<item>
		<title>Working to constraints</title>
		<link>http://feedproxy.google.com/~r/ViolentlyMild/~3/-Ck3hZm2xVQ/</link>
		<comments>http://violentlymild.com/working-to-constraints/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 08:51:44 +0000</pubDate>
		<dc:creator>Kushal</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[contraints]]></category>

		<guid isPermaLink="false">http://violentlymild.com/?p=51</guid>
		<description><![CDATA[I&#8217;ve been reading the 37signals SVN blog for a while now, but a recent talk by DHH really got me thinking. In it he speaks to a group of Stanford students and explains why they need to Unlearn their MBA. In this post I take some of the topics that he discusses and throw in [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been reading the 37signals <a href="http://37signals.com/svn/">SVN blog</a> for a while now, but a <a href="http://ecorner.stanford.edu/authorMaterialInfo.html?mid=2334">recent talk</a> by <abbr title="David Heinemeier Hansson">DHH</abbr> really got me thinking. In it he speaks to a group of Stanford students and explains why they need to <em>Unlearn their MBA</em>. In this post I take some of the topics that he discusses and throw in my own opinion.</p>
<p>As a side note: It&#8217;s interesting to consider how many people&#8217;s professional lives have been shaped by the software framework that DHH released to the world. While many argue that 37signals needs to be more open about their business figures and research methods, it&#8217;s impossible to negate how they&#8217;ve created jobs (growing the industry?) without ever dilluting their revenue.</p>
<p>I recently graduated (June 2009) from University and luckily it hasn&#8217;t been very difficult to find work – either full-time or freelance. The tech industry seems to be one of the few that saw a boost during the recession. Whilst many were being laid off from work, those same companies sought expertise in building systems to automate and streamline as many tasks as possible. As a result, there are much more tech jobs than a few years ago and many of my friends who work in recruitment can attest to this. Gone (hopefully) are the days where candidates have to outright lie on their job applications and instead are chosen on their ability to create. Whether it be open-source projects, personal websites or even public repositories, there are a number of ways that a new computer science graduate can show their worth.</p>
<p>DHH takes this one step further and claims that it&#8217;s an opportune time for any new start-up (business) to gain traction. The reason given is that when the economy is steady, consumers are more likely to go with the tried and tested (read: expensive) option, but when they&#8217;re in a recession there&#8217;s a greater chance of trying out new products and services. With this in mind, should any graduate have difficulty finding a job, perhaps it&#8217;s time to start on that business idea they&#8217;ve had for some time? Rather than plan out how they&#8217;re going to run this new business, they should just <strong>do it</strong>.</p>
<p>Planning out the next five years of a small business is clearly just harmful guessing. A significant change will happen when the business starts to <strong>get things done</strong>, not by planning for them. Spending time procrastinating and pretending to work is never going to help anyone and is going to be especially detrimental to any employees of the small business. Small business owners need to stop relying on fancy projections to save them from their bank managers. Instead an emphasis on completing tasks and helping employees needs to be made. &lt;/rant&gt;</p>
<p>It&#8217;s very rare that a company is an overnight success and in a few cases, the business may have just been working it&#8217;s way up to release for some time. However, unlimited time and money never lead to great products. By limiting the amount of time you have to go live, it&#8217;s likely that you can strip out any extra noise from the product/service and produce early iterations that will be indicative to it&#8217;s core features and/or functionality. In short: great, simple products!</p>
<p>Personally, I&#8217;ve found limiting the amount of time I spend learning new languages has forced me to concentrate more in that short period of time and has accelerated my learning to no end. In addition to this, I recommend anyone learning a new programming language to combine their progress with the problems at <a href="http://projecteuler.net/">Project Euler</a>. I&#8217;ve found it interesting learning how different languages treat the same set of problems and am indebted to that community for their comprehensive break-downs of elegant solutions.</p>
<img src="http://feeds.feedburner.com/~r/ViolentlyMild/~4/-Ck3hZm2xVQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://violentlymild.com/working-to-constraints/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://violentlymild.com/working-to-constraints/</feedburner:origLink></item>
		<item>
		<title>Removable storage is just for the spec sheets</title>
		<link>http://feedproxy.google.com/~r/ViolentlyMild/~3/8xMXFnAewhI/</link>
		<comments>http://violentlymild.com/removable-storage-is-just-for-the-spec-sheets/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 22:30:07 +0000</pubDate>
		<dc:creator>Kushal</dc:creator>
				<category><![CDATA[UX]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://violentlymild.com/?p=28</guid>
		<description><![CDATA[Google released their official phone early last week: the Nexus One. Putting aside the fact that they&#8217;ve completely shafted all of their technology partners, I&#8217;d like to discuss how spec sheets are ruining the user experience of mobile devices. Many users (myself included) may plead the case for expandable storarge, but there is strong resistance when users are forced [...]]]></description>
			<content:encoded><![CDATA[<p>Google released their <em>official phone</em> early last week: the <a href="http://www.google.com/phone">Nexus One</a>. Putting aside the fact that they&#8217;ve completely <a href="http://www.theregister.co.uk/2010/01/08/google_nexus_partner_friendly/">shafted</a> all of their technology partners, I&#8217;d like to discuss how spec sheets are ruining the user experience of mobile devices. Many users (myself included) may plead the case for expandable storarge, but there is strong resistance when users are forced to manage their own files. Bad UI of file browsers and locks preventing data from being moved make using removable storage on phones a drain.</p>
<p>A prime example of this is my current phone — <a href="http://www.nokia.co.uk/find-products/all-phones/nokia-n73">Nokia N73</a> — which comes with 32MB of built-in storage but is expandable using the provided miniSD slot. I thought this would be brilliant! I could store applications, images, messages and contacts all on the miniSD card and never have to worry about transferring any of this data, phone to phone, ever again. As always, there&#8217;s a catch. I&#8217;m limited to storing just media files on the miniSD card and all other data is stored on the phone&#8217;s paltry memory. The reasoning provided is for security, but surely I — as the user — should be able to choose where my own personal files are stored?</p>
<p>In much a similar way, Google is failing to understand the same issues that are plaguing my three year old phone. While the Nexus One has an expandable Micro SD card, the on-board memory is just 512MB. This wouldn&#8217;t be too bad until you take into account that the Nexus One is a smart phone targeted towards users who will take advantage of it&#8217;s many applications. Sadly, a limit has been placed on how much storage can be used for applications to 190mb:</p>
<blockquote><p>The Nexus can accommodate memory cards up to 32 gigabytes (a 4 gigabyte card comes with it) — and yet, inexplicably, the Nexus allots only the tiniest sliver of that (190 megabytes) for downloaded apps. <a href="http://www.nytimes.com/2010/01/06/technology/personaltech/06pogue.html?hp">Source</a>.</p></blockquote>
<p>Why are Google so insistent on messing up the storage situation on Android phones? The N1 had 512mB memory built-in, which Android will only use for storing the OS, applications and any relevant application data. Similarly, the earlier G1 went through the same issues having just 256MB built-in memory, which wasn&#8217;t even enough to install any official OS updates! Instead of learning their lesson, Google has just taken it up one notch. Rather than learn from these mistakes and become a real competitor to Apple, they&#8217;ve failed miserably.</p>
<p>Considering the cost of physical memory these days, it doesn&#8217;t make sense when companies aren&#8217;t willing to increase built-in storage sizes. These days 4GB storage should be seen as a minimum, while allowing room for premium <abbr title="Stock-Keeping Unit">SKUs</abbr> with 32GB+ to pile on markup without anyone complaining. Apple&#8217;s abhorrence towards removable storage isn&#8217;t just because Jobs&#8217; saying is final, or compromise on form factor, but simply because it&#8217;s a usability nightmare.</p>
<p>Modded firmware has been released for most phones, allowing users to bend the will of their mobile device&#8217;s storage. However, allowing all photos, music and applications on the removable media will mean that it has to be unmounted on the device, removing the use of any applications in the process. I understand that an easy way around this may be to expose a samba share, e.g. Archos, rather than give direct access to the storage media, but what&#8217;s to prevent a user from just ejecting the media and doing so anyway?</p>
<p>As a result of this fatal flaw, I have no plans on buying the new Nexus One in the immediate future. If I were to purchase a new phone based purely on usability of storage, it would probably be an iPhone. Alternatively, I could just stick with my current N73 and save myself a lot of <em>wasted</em> money on applications.</p>
<img src="http://feeds.feedburner.com/~r/ViolentlyMild/~4/8xMXFnAewhI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://violentlymild.com/removable-storage-is-just-for-the-spec-sheets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://violentlymild.com/removable-storage-is-just-for-the-spec-sheets/</feedburner:origLink></item>
		<item>
		<title>Designing an interface to create interfaces</title>
		<link>http://feedproxy.google.com/~r/ViolentlyMild/~3/Tha8qvtuvRY/</link>
		<comments>http://violentlymild.com/designing-an-interface-to-create-interfaces/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 22:20:17 +0000</pubDate>
		<dc:creator>Kushal</dc:creator>
				<category><![CDATA[Usability]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://violentlymild.com/?p=4</guid>
		<description><![CDATA[I&#8217;ve been reading Coders at Work recently and this blog post is spawned from a point made by Simon Peyton Jones in the book  &#8212; Page 252, Paragraph 3 &#8212; about creating usable programming languages.
When the field of HCI was established in the early 1980s, learnability was the research focus. By the late 1980s [...]]]></description>
			<content:encoded><![CDATA[<p><em>I&#8217;ve been reading </em><a href="http://www.codersatwork.com/"><em>Coders at Work</em></a><em> recently and this blog post is spawned from a point made by </em><a href="http://research.microsoft.com/en-us/people/simonpj/"><em>Simon Peyton Jones</em></a><em> in the book  &#8212; Page 252, Paragraph 3 &#8212; about creating usable programming languages.</em></p>
<p>When the field of <abbr title="Human Computer Interaction">HCI</abbr> was established in the early 1980s, learnability was the research focus. By the late 1980s we had a handle on how to design for the novice user, demonstrating that even the best commercially available personal computer was much harder to learn than claimed by it&#8217;s manufacturer.</p>
<p>We created computers because our ability to think using rigorous logic is limited in terms of speed, capacity and accuracy. Given these limitations, shouldn&#8217;t any interfaces we create play to our strengths without demanding too much from our weaknesses?</p>
<p>Programming languages go through rapid development to fit formal (hardware) specifications and have meant that usability best practices have fallen by the way-side. However, usability is holistic and something that has to be intentionally designed in from the beginning rather than slapped on at the end.</p>
<p>Usability studies in this area are lacking, but there are <a title="Evaluating a new programming language, by Steven Clarke" href="http://www.ppig.org/papers/13th-clarke.pdf">some</a> that have managed to have an effect on the final product. More recently though, full on <a href="http://www.cs.cmu.edu/~NatProg/">task forces</a> have been springing up and providing good information on <strong>designing the interface that creates the interface</strong>.</p>
<h3>Testing products with a steep learning curve</h3>
<p>As stated by Jakob Nielson in his <a href="http://www.useit.com/papers/iterative_design/">Iterative User Interface Design</a> paper:</p>
<blockquote><p>For some user interfaces, full expertise may take several years to acquire, and even for simpler interfaces, one would normally need to train users for several weeks or months before their performance plateaued out at the expert level</p></blockquote>
<p>Sadly, by the time you&#8217;ve learnt how to use the product effectively, you&#8217;re too biased to comment on it&#8217;s usability fairly. This is just one of the fundamental limits on usability testing of complicated products. Despite this, there is still knowledge to be gained from testing programming languages at a novice or intermediate level.</p>
<p>A simple programming test could be held, with people who have the same amount of training &#8212; university students? &#8212; in different languages and then measure factors ranging from the number of errors along the way, to overall performance. A simple task may involve scraping data from a set of web pages such as <a href="http://www.last.fm/">last.fm</a> and organising them into a searchable data structure. The user could attempt to use any programming language but a time-limit would need to be set to keep the test fair.</p>
<h3>Libraries vs. Languages</h3>
<p>Being a programmer, I tend to look for solutions by dissecting the problem into smaller chunks and in many cases that makes me lean towards libraries. It&#8217;s likely that any seasoned developer would do the same, opting for the <em>best tools</em> for the job rather than any one single language. Does this fulfil the <em>efficient use</em> category of usability? No.</p>
<p>Most of these libraries are built by software developers to facilitate their work, increasing the need for usability in this particular area. <strong>If something is too time-consuming, a developer will automate it. <span style="font-weight: normal;">However it does then raise the question of whether the flaws lie in the language, where the expert knowledge is needed to understand how to automate a given task in the first place.</span></strong></p>
<h3>Can we have a yardstick?</h3>
<p>There is ample evidence to support the notion that experts behave differently from novices, but that should never mean we pick one of these two groups and design specifically for them. Program designers should understand the context of use, set appropriate goals, and measure that we are achieving those goals. The myriad of different programming paradigms mean that we can&#8217;t effectively compare the usability of different languages, but that shouldn&#8217;t hinder the process of increasing usability for the lowest common denominator.</p>
<p>The lack of cross-over between Funtional, Procedural or even Event-based programming languages makes formalising a test harness extremely difficult. Attempting to test all of the different kinds of programming languages may produce a clear winner in terms of usability, but are likely to fail large proportions of the development community.</p>
<p><em>Disclaimer: I would never pretend to be an expert in this area, so I&#8217;m sure there is a lot of good material that I&#8217;m not aware of yet. Please let me know if you have any further useful information.</em></p>
<img src="http://feeds.feedburner.com/~r/ViolentlyMild/~4/Tha8qvtuvRY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://violentlymild.com/designing-an-interface-to-create-interfaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://violentlymild.com/designing-an-interface-to-create-interfaces/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.164 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-02-22 07:09:09 -->
