<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Designing for the future</title>
	<atom:link href="http://conal.net/blog/posts/designing-for-the-future/feed/" rel="self" type="application/rss+xml" />
	<link>http://conal.net/blog/posts/designing-for-the-future/</link>
	<description>Inspirations &#38; experiments, mainly about functional programming in Haskell</description>
	<pubDate>Thu, 20 Nov 2008 13:59:04 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
		<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/designing-for-the-future/#comment-11386</link>
		<dc:creator>conal</dc:creator>
		<pubDate>Fri, 14 Nov 2008 15:50:10 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=52#comment-11386</guid>
		<description>&lt;p&gt;A reader asked:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Then what do you design for? 95%? 99%?  [...]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Even 100% would not satisfy my goal of supporting creativity.
I don't design for preconceived use cases.
I design a coherent world that captures the uses I can think of while being a simple/general as possible.
(I measure simplicity in a particular way, by describing a precise math model.)
The anticipated uses serve to give me &lt;em&gt;hints&lt;/em&gt; about that world, rather than defining it.&lt;/p&gt;

&lt;p&gt;If a design meets my expected uses &lt;em&gt;and&lt;/em&gt; is very simple, then I'm confident about it handing my unanticipated needs as well.
If it uses complexity (special cases) to address my expected uses, then I expect it will need more complexity thrown in to handle unexpected uses.&lt;/p&gt;

&lt;p&gt;As &lt;a href="http://scifac.ru.ac.za/cspt/hoare.htm" rel="nofollow"&gt;Tony Hoare said&lt;/a&gt; in his Turing Award lecture,&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is make it so complicated that there are no obvious deficiencies.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
		<content:encoded><![CDATA[<p>A reader asked:</p>

<blockquote>
  <p>Then what do you design for? 95%? 99%?  [&#8230;]</p>
</blockquote>

<p>Even 100% would not satisfy my goal of supporting creativity.
I don&#8217;t design for preconceived use cases.
I design a coherent world that captures the uses I can think of while being a simple/general as possible.
(I measure simplicity in a particular way, by describing a precise math model.)
The anticipated uses serve to give me <em>hints</em> about that world, rather than defining it.</p>

<p>If a design meets my expected uses <em>and</em> is very simple, then I&#8217;m confident about it handing my unanticipated needs as well.
If it uses complexity (special cases) to address my expected uses, then I expect it will need more complexity thrown in to handle unexpected uses.</p>

<p>As <a href="http://scifac.ru.ac.za/cspt/hoare.htm" rel="nofollow">Tony Hoare said</a> in his Turing Award lecture,</p>

<blockquote>
  <p>I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is make it so complicated that there are no obvious deficiencies.</p>
</blockquote>]]></content:encoded>
	</item>
</channel>
</rss>
