<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: What&#8217;s Wrong With Computers</title>
	<atom:link href="http://www.codesimplicity.com/post/whats-wrong-with-computers/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codesimplicity.com/post/whats-wrong-with-computers/</link>
	<description></description>
	<lastBuildDate>Tue, 27 Dec 2011 03:40:15 -0600</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Max Kanat-Alexander</title>
		<link>http://www.codesimplicity.com/post/whats-wrong-with-computers/comment-page-1/#comment-2368</link>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		<pubDate>Wed, 23 Feb 2011 23:15:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesimplicity.com/archives/4#comment-2368</guid>
		<description>Hey Ben. Wow, those are all such good points. Yes, those are exactly the sorts of things that I tend to start fixing as soon as I&#039;m put on a system--the numerous strange complexities that people have added.

I love your point about there not being an infinite number of ways to write a simple program, too, that&#039;s so true. :-)

As far as programming being a market for the lowest bidder, I think that may be fading away as people come to see the ineffectiveness of hiring a large number of incompetent programmers. The modern trend of the most successful companies has been to hire a small number of extremely competent engineers, instead. (For example, the average size of an engineering team at Google is four people.)

-Max</description>
		<content:encoded><![CDATA[<p>Hey Ben. Wow, those are all such good points. Yes, those are exactly the sorts of things that I tend to start fixing as soon as I&#8217;m put on a system&#8211;the numerous strange complexities that people have added.</p>
<p>I love your point about there not being an infinite number of ways to write a simple program, too, that&#8217;s so true. <img src='http://www.codesimplicity.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>As far as programming being a market for the lowest bidder, I think that may be fading away as people come to see the ineffectiveness of hiring a large number of incompetent programmers. The modern trend of the most successful companies has been to hire a small number of extremely competent engineers, instead. (For example, the average size of an engineering team at Google is four people.)</p>
<p>-Max</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben</title>
		<link>http://www.codesimplicity.com/post/whats-wrong-with-computers/comment-page-1/#comment-2366</link>
		<dc:creator>Ben</dc:creator>
		<pubDate>Wed, 23 Feb 2011 22:01:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesimplicity.com/archives/4#comment-2366</guid>
		<description>Okay.  So I&#039;m posting three years after the original post.  Nevertheless, Max makes an excellent point. 

Let me begin by saying I used to be a programmer.  Then I realized that programming was getting taken over by people whose greatest value was that they were always willing to cheaper than I would.  I did not want to be a winner in some kind of &quot;race-to-the-bottom,&quot; so I moved on.   

Good programming is an art.  While there are an infinite number of ways to write a program, there are NOT an infinite number of ways to write a simple program, or an &quot;easy-to-maintain&quot; program, or an &quot;easy-to-understand&quot; program.  

A lot of what makes programs simple is, 1) having some rational standards.  Take for example variable names.  Calling a variable &quot;x&quot; makes debugging a helluva lot harder than calling it &quot;LOAN_PRINCIPAL&quot; or something.  

2) Separating DATA and CODE.  Can I tell you how many programs are out there where some variable is HARDCODED in the code?  Too many.  

3)  making code MODULAR.  How hard is it to repair code when you have a 3000 (or 300000) lines of code to read.  It&#039;s easier (though not easy) if each &quot;function&quot; (say calculating a price) is set off in it&#039;s own little module of 100 lines.

4)  not using global variables.  Yeah.  Enough said.

5)  having rudimentary error handling.  Has anyone every found Microsofts &quot;fatal exception  has occurred at ZZ&quot; even remotely helpful?  No.  

6)  Having even rudimentary documentation.  

7)  Clear APIs.  Write your modules with clear instructions about what they will do, what inputs they take, and what outputs they export.

  
8) Basic input validation.  If you are going to require input, and it has to be a number, make your program check that the input IS IN FACT A NUMBER.  

 I could go on....but as I said....I have moved on from programming.  Now I just write bad requirements....kidding...just kidding.

 - B.</description>
		<content:encoded><![CDATA[<p>Okay.  So I&#8217;m posting three years after the original post.  Nevertheless, Max makes an excellent point. </p>
<p>Let me begin by saying I used to be a programmer.  Then I realized that programming was getting taken over by people whose greatest value was that they were always willing to cheaper than I would.  I did not want to be a winner in some kind of &#8220;race-to-the-bottom,&#8221; so I moved on.   </p>
<p>Good programming is an art.  While there are an infinite number of ways to write a program, there are NOT an infinite number of ways to write a simple program, or an &#8220;easy-to-maintain&#8221; program, or an &#8220;easy-to-understand&#8221; program.  </p>
<p>A lot of what makes programs simple is, 1) having some rational standards.  Take for example variable names.  Calling a variable &#8220;x&#8221; makes debugging a helluva lot harder than calling it &#8220;LOAN_PRINCIPAL&#8221; or something.  </p>
<p>2) Separating DATA and CODE.  Can I tell you how many programs are out there where some variable is HARDCODED in the code?  Too many.  </p>
<p>3)  making code MODULAR.  How hard is it to repair code when you have a 3000 (or 300000) lines of code to read.  It&#8217;s easier (though not easy) if each &#8220;function&#8221; (say calculating a price) is set off in it&#8217;s own little module of 100 lines.</p>
<p>4)  not using global variables.  Yeah.  Enough said.</p>
<p>5)  having rudimentary error handling.  Has anyone every found Microsofts &#8220;fatal exception  has occurred at ZZ&#8221; even remotely helpful?  No.  </p>
<p>6)  Having even rudimentary documentation.  </p>
<p>7)  Clear APIs.  Write your modules with clear instructions about what they will do, what inputs they take, and what outputs they export.</p>
<p> <img src='http://www.codesimplicity.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> Basic input validation.  If you are going to require input, and it has to be a number, make your program check that the input IS IN FACT A NUMBER.  </p>
<p> I could go on&#8230;.but as I said&#8230;.I have moved on from programming.  Now I just write bad requirements&#8230;.kidding&#8230;just kidding.</p>
<p> &#8211; B.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Max Kanat-Alexander</title>
		<link>http://www.codesimplicity.com/post/whats-wrong-with-computers/comment-page-1/#comment-10</link>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		<pubDate>Mon, 14 Jan 2008 04:33:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesimplicity.com/archives/4#comment-10</guid>
		<description>Okay. It&#039;s true that project management has an effect on programmers, and demands that they sometimes do things the wrong way. However, I tend to look at it on a larger scale:

1) Who told the project manager than an impossible schedule could be met? (Now, granted, if the project manager didn&#039;t even ask anybody whether or not the schedule could be met, that&#039;s something that needs to be fixed.)

2) Who caved in when project management demanded bad code to meet the impossible schedule?

A &lt;em&gt;whole program&lt;/em&gt; can&#039;t go wrong just because of some last-minute hacks that have to be made in order to ship the product. You don&#039;t get something like Windows ME because of last-minute hacks. You get something like that because of consistent, long-term bad design.

So yes, project management &lt;em&gt;definitely&lt;/em&gt; has its place in the hierarchy of responsibility. And I&#039;m not saying bad management never ruined a project--in fact, it&#039;s probably extremely common. But most of the bad software that I&#039;ve had the chance to read the code of is just &lt;em&gt;way too complex&lt;/em&gt; from the ground up.

Even under pressure, sometimes a developer needs to step back and say, &quot;Okay, pressure like this is going to happen in the future. How can I make things simpler &lt;em&gt;now&lt;/em&gt; to avoid things like that in the future?&quot;

You&#039;re right also that technically, I do mean &lt;em&gt;bad programming&lt;/em&gt;. But I&#039;ve encountered a ridiculous number of programmers (the vast majority I&#039;ve known) who had &lt;em&gt;no real concept&lt;/em&gt; of simplicity, and I tend to think that the vast majority of problems are caused by these programmers (since they comprise the majority of programmers I&#039;ve met), not by good programmers under pressure who do bad.

-Max</description>
		<content:encoded><![CDATA[<p>Okay. It&#8217;s true that project management has an effect on programmers, and demands that they sometimes do things the wrong way. However, I tend to look at it on a larger scale:</p>
<p>1) Who told the project manager than an impossible schedule could be met? (Now, granted, if the project manager didn&#8217;t even ask anybody whether or not the schedule could be met, that&#8217;s something that needs to be fixed.)</p>
<p>2) Who caved in when project management demanded bad code to meet the impossible schedule?</p>
<p>A <em>whole program</em> can&#8217;t go wrong just because of some last-minute hacks that have to be made in order to ship the product. You don&#8217;t get something like Windows ME because of last-minute hacks. You get something like that because of consistent, long-term bad design.</p>
<p>So yes, project management <em>definitely</em> has its place in the hierarchy of responsibility. And I&#8217;m not saying bad management never ruined a project&#8211;in fact, it&#8217;s probably extremely common. But most of the bad software that I&#8217;ve had the chance to read the code of is just <em>way too complex</em> from the ground up.</p>
<p>Even under pressure, sometimes a developer needs to step back and say, &#8220;Okay, pressure like this is going to happen in the future. How can I make things simpler <em>now</em> to avoid things like that in the future?&#8221;</p>
<p>You&#8217;re right also that technically, I do mean <em>bad programming</em>. But I&#8217;ve encountered a ridiculous number of programmers (the vast majority I&#8217;ve known) who had <em>no real concept</em> of simplicity, and I tend to think that the vast majority of problems are caused by these programmers (since they comprise the majority of programmers I&#8217;ve met), not by good programmers under pressure who do bad.</p>
<p>-Max</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jessica</title>
		<link>http://www.codesimplicity.com/post/whats-wrong-with-computers/comment-page-1/#comment-9</link>
		<dc:creator>Jessica</dc:creator>
		<pubDate>Sun, 13 Jan 2008 22:41:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesimplicity.com/archives/4#comment-9</guid>
		<description>What? You blame entirely &quot;bad programmers&quot;, but fail to even mention the contribution of project management? Even the best of programmers, given certain real world constraints like insufficient time, may be working to satisfy their manager&#039;s desire to patch up existing stuff like its an old leaky tire rather than take the added expense to fix things properly...

Perhaps &quot;good programming&quot; is really what you meant by &quot;good programmer&quot;--it may or may not be the fault of the person who actually types out the code, there&#039;s a lot of other people that go into the development process of complex software who may contribute just as much to the problems of the process ;-)</description>
		<content:encoded><![CDATA[<p>What? You blame entirely &#8220;bad programmers&#8221;, but fail to even mention the contribution of project management? Even the best of programmers, given certain real world constraints like insufficient time, may be working to satisfy their manager&#8217;s desire to patch up existing stuff like its an old leaky tire rather than take the added expense to fix things properly&#8230;</p>
<p>Perhaps &#8220;good programming&#8221; is really what you meant by &#8220;good programmer&#8221;&#8211;it may or may not be the fault of the person who actually types out the code, there&#8217;s a lot of other people that go into the development process of complex software who may contribute just as much to the problems of the process <img src='http://www.codesimplicity.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>

