<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.0.4" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: A Hierarchy of Needs for Code</title>
	<link>http://dubroy.com/blog/2008/02/27/a-hierarchy-of-needs-for-code/</link>
	<description>on programming, usability, and design; by Patrick Dubroy</description>
	<pubDate>Wed, 20 Aug 2008 13:36:25 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>

	<item>
		<title>by: Patrick</title>
		<link>http://dubroy.com/blog/2008/02/27/a-hierarchy-of-needs-for-code/#comment-10306</link>
		<pubDate>Sun, 30 Mar 2008 01:25:08 +0000</pubDate>
		<guid>http://dubroy.com/blog/2008/02/27/a-hierarchy-of-needs-for-code/#comment-10306</guid>
					<description>&lt;p&gt;@Nick:&lt;/p&gt;

&lt;p&gt;You think that efficiency and elegance is more important than maintainability and extensibility? If it's maintainable and extensible, then you can always fix it to make it faster. I think it's better to have a well-written and well-documented library in Python than to have a blazing-fast assembly language implementation.&lt;/p&gt;

&lt;p&gt;As for elegance, I think that if code is maintainable and extensible, it has no need to be "elegant".&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>@Nick:</p>
<p>You think that efficiency and elegance is more important than maintainability and extensibility? If it&#8217;s maintainable and extensible, then you can always fix it to make it faster. I think it&#8217;s better to have a well-written and well-documented library in Python than to have a blazing-fast assembly language implementation.</p>
<p>As for elegance, I think that if code is maintainable and extensible, it has no need to be &#8220;elegant&#8221;.</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Nick</title>
		<link>http://dubroy.com/blog/2008/02/27/a-hierarchy-of-needs-for-code/#comment-10305</link>
		<pubDate>Sun, 30 Mar 2008 00:42:10 +0000</pubDate>
		<guid>http://dubroy.com/blog/2008/02/27/a-hierarchy-of-needs-for-code/#comment-10305</guid>
					<description>&lt;p&gt;Although the program itself needs to have the lower part of the hierarchy to work, the algorithm behind it needs to be elegant and efficient, especially if it cannot be changed after the program is written. I would put elegance and efficiency below maintainability and extensibility.&lt;/p&gt;

&lt;p&gt;It really should be looked at where each aspect is as dependent as possible on the ones below it. You need it to function above all, then you need it to function well (reliability/efficiency), then you need it to be useful and flexible to others (maintainable and extensible).&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Although the program itself needs to have the lower part of the hierarchy to work, the algorithm behind it needs to be elegant and efficient, especially if it cannot be changed after the program is written. I would put elegance and efficiency below maintainability and extensibility.</p>
<p>It really should be looked at where each aspect is as dependent as possible on the ones below it. You need it to function above all, then you need it to function well (reliability/efficiency), then you need it to be useful and flexible to others (maintainable and extensible).</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Mark</title>
		<link>http://dubroy.com/blog/2008/02/27/a-hierarchy-of-needs-for-code/#comment-9713</link>
		<pubDate>Fri, 07 Mar 2008 01:34:03 +0000</pubDate>
		<guid>http://dubroy.com/blog/2008/02/27/a-hierarchy-of-needs-for-code/#comment-9713</guid>
					<description>&lt;p&gt;I think depending on the application that any of maintainability, extensibility and efficiency could be in a different order.  eg. A lot of games programming is barely extensible but highly efficient.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I think depending on the application that any of maintainability, extensibility and efficiency could be in a different order.  eg. A lot of games programming is barely extensible but highly efficient.</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Patrick</title>
		<link>http://dubroy.com/blog/2008/02/27/a-hierarchy-of-needs-for-code/#comment-9455</link>
		<pubDate>Fri, 29 Feb 2008 04:24:37 +0000</pubDate>
		<guid>http://dubroy.com/blog/2008/02/27/a-hierarchy-of-needs-for-code/#comment-9455</guid>
					<description>&lt;p&gt;e:&lt;/p&gt;

&lt;p&gt;Code that behaves as expected is obviously important, as is documentation. I think this falls outside of this hierarchy though; the library code should also be built according to the hierarchy, and the "honesty" you're talking about is really the &lt;em&gt;functionality&lt;/em&gt; of the library. And documentation doesn't really seem to have a spot in this hierarchy...not sure where it should go.&lt;/p&gt;

&lt;p&gt;I agree that the line between functionality and reliability is a fuzzy one, but certainly there is software that "works" while not being especially reliable. For example, I don't think it's correct to say that Windows 95 wasn't functional -- it just wasn't particularly reliable. Likewise, I've tried lots of programs that do the job they were intended to do, but choke on any unexpected input.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>e:</p>
<p>Code that behaves as expected is obviously important, as is documentation. I think this falls outside of this hierarchy though; the library code should also be built according to the hierarchy, and the &#8220;honesty&#8221; you&#8217;re talking about is really the <em>functionality</em> of the library. And documentation doesn&#8217;t really seem to have a spot in this hierarchy&#8230;not sure where it should go.</p>
<p>I agree that the line between functionality and reliability is a fuzzy one, but certainly there is software that &#8220;works&#8221; while not being especially reliable. For example, I don&#8217;t think it&#8217;s correct to say that Windows 95 wasn&#8217;t functional &#8212; it just wasn&#8217;t particularly reliable. Likewise, I&#8217;ve tried lots of programs that do the job they were intended to do, but choke on any unexpected input.</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: سردال &#187; ملخص 28 فبراير</title>
		<link>http://dubroy.com/blog/2008/02/27/a-hierarchy-of-needs-for-code/#comment-9445</link>
		<pubDate>Thu, 28 Feb 2008 19:43:30 +0000</pubDate>
		<guid>http://dubroy.com/blog/2008/02/27/a-hierarchy-of-needs-for-code/#comment-9445</guid>
					<description>&lt;p&gt;[...] إذا كان هناك هرم لاحتياجات الإنسان النفسية فهل هناك هرم للبرمجة؟ [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[&#8230;] إذا كان هناك هرم لاحتياجات الإنسان النفسية فهل هناك هرم للبرمجة؟ [&#8230;]</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: e</title>
		<link>http://dubroy.com/blog/2008/02/27/a-hierarchy-of-needs-for-code/#comment-9442</link>
		<pubDate>Thu, 28 Feb 2008 18:23:38 +0000</pubDate>
		<guid>http://dubroy.com/blog/2008/02/27/a-hierarchy-of-needs-for-code/#comment-9442</guid>
					<description>&lt;p&gt;I would add a layer below functionality, titled "Honest Libraries."&lt;/p&gt;

&lt;p&gt;Code has to behave the way you expect it to. There are very few scenarios where a programmer is building from the metal up. If you're relying on anyone else's machinery, that machinery has to behave the way you expect it to. If code is too complex to understand quickly, it needs documentation. If there is documentation then it has to be accurate, and provide a rough idea of what the code actually does. &lt;/p&gt;

&lt;p&gt;I wouldn't separate functionality and reliability. If there are (say) threading issues in code, but it works well 95% of the time, it isn't functional.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I would add a layer below functionality, titled &#8220;Honest Libraries.&#8221;</p>
<p>Code has to behave the way you expect it to. There are very few scenarios where a programmer is building from the metal up. If you&#8217;re relying on anyone else&#8217;s machinery, that machinery has to behave the way you expect it to. If code is too complex to understand quickly, it needs documentation. If there is documentation then it has to be accurate, and provide a rough idea of what the code actually does. </p>
<p>I wouldn&#8217;t separate functionality and reliability. If there are (say) threading issues in code, but it works well 95% of the time, it isn&#8217;t functional.</p>
]]></content:encoded>
				</item>
</channel>
</rss>
