<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: What every beginning programmer should learn</title>
	<atom:link href="http://pythonconquerstheuniverse.wordpress.com/2011/01/04/what-every-beginning-programmer-should-learn/feed/" rel="self" type="application/rss+xml" />
	<link>http://pythonconquerstheuniverse.wordpress.com/2011/01/04/what-every-beginning-programmer-should-learn/</link>
	<description>Adventures across space and time with the Python programming language</description>
	<lastBuildDate>Sat, 04 May 2013 20:54:54 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Richard E. Adams</title>
		<link>http://pythonconquerstheuniverse.wordpress.com/2011/01/04/what-every-beginning-programmer-should-learn/#comment-1169</link>
		<dc:creator><![CDATA[Richard E. Adams]]></dc:creator>
		<pubDate>Wed, 07 Dec 2011 17:32:06 +0000</pubDate>
		<guid isPermaLink="false">http://pythonconquerstheuniverse.wordpress.com/?p=708#comment-1169</guid>
		<description><![CDATA[Terry Halpin, &quot;Information Modeling and Relational Databases&quot;, Second Edition, Morgan Kaufmann

Read everything you can about Haskell (an advanced, purely functional programming language; http://www.haskell.org); there are many good books and papers on Haskell.

Bo Sanden, &quot;Systems Programming with JSP&quot;, Studentlitteratur AB, Chartwell-Bratt Ltd.  (Here, JSP abbreviates &quot;Jackson Structured Programming&quot;)

Rabhi and Lapalme, &quot;Algorithms: A Functional Programming Approach&quot;, Addison-Wesley

Michael Jackson, &quot;Software Requirements &amp; Specifications&quot;, Addison-Wesley

Michael Jackson, &quot;Problem Frames&quot;, Addison-Wesley

Daniael I. A. Cohen, &quot;Introduction to Computer Theory&quot;, Wiley

John Cameron, &quot;JSP &amp; JSD: The Jackson Approach to Software Development&quot;, 2nd Ed., IEEE Computer Society Press

Various books on discrete mathematics]]></description>
		<content:encoded><![CDATA[<p>Terry Halpin, &#8220;Information Modeling and Relational Databases&#8221;, Second Edition, Morgan Kaufmann</p>
<p>Read everything you can about Haskell (an advanced, purely functional programming language; <a href="http://www.haskell.org" rel="nofollow">http://www.haskell.org</a>); there are many good books and papers on Haskell.</p>
<p>Bo Sanden, &#8220;Systems Programming with JSP&#8221;, Studentlitteratur AB, Chartwell-Bratt Ltd.  (Here, JSP abbreviates &#8220;Jackson Structured Programming&#8221;)</p>
<p>Rabhi and Lapalme, &#8220;Algorithms: A Functional Programming Approach&#8221;, Addison-Wesley</p>
<p>Michael Jackson, &#8220;Software Requirements &amp; Specifications&#8221;, Addison-Wesley</p>
<p>Michael Jackson, &#8220;Problem Frames&#8221;, Addison-Wesley</p>
<p>Daniael I. A. Cohen, &#8220;Introduction to Computer Theory&#8221;, Wiley</p>
<p>John Cameron, &#8220;JSP &amp; JSD: The Jackson Approach to Software Development&#8221;, 2nd Ed., IEEE Computer Society Press</p>
<p>Various books on discrete mathematics</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Ferg</title>
		<link>http://pythonconquerstheuniverse.wordpress.com/2011/01/04/what-every-beginning-programmer-should-learn/#comment-725</link>
		<dc:creator><![CDATA[Steve Ferg]]></dc:creator>
		<pubDate>Sat, 26 Mar 2011 03:17:09 +0000</pubDate>
		<guid isPermaLink="false">http://pythonconquerstheuniverse.wordpress.com/?p=708#comment-725</guid>
		<description><![CDATA[Interesting book: &lt;a href=&quot;http://techbus.safaribooksonline.com/book/programming/9780596809515&quot; rel=&quot;nofollow&quot;&gt;97 Things Every Programmer Should Know&lt;/a&gt;]]></description>
		<content:encoded><![CDATA[<p>Interesting book: <a href="http://techbus.safaribooksonline.com/book/programming/9780596809515" rel="nofollow">97 Things Every Programmer Should Know</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Morgan</title>
		<link>http://pythonconquerstheuniverse.wordpress.com/2011/01/04/what-every-beginning-programmer-should-learn/#comment-663</link>
		<dc:creator><![CDATA[Morgan]]></dc:creator>
		<pubDate>Mon, 28 Feb 2011 20:52:50 +0000</pubDate>
		<guid isPermaLink="false">http://pythonconquerstheuniverse.wordpress.com/?p=708#comment-663</guid>
		<description><![CDATA[A new book covering the basics: Programming From Scratch by Gary Crandall available here http://www.perfscipress.com/programming-from-scratch/]]></description>
		<content:encoded><![CDATA[<p>A new book covering the basics: Programming From Scratch by Gary Crandall available here <a href="http://www.perfscipress.com/programming-from-scratch/" rel="nofollow">http://www.perfscipress.com/programming-from-scratch/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rich</title>
		<link>http://pythonconquerstheuniverse.wordpress.com/2011/01/04/what-every-beginning-programmer-should-learn/#comment-627</link>
		<dc:creator><![CDATA[Rich]]></dc:creator>
		<pubDate>Wed, 19 Jan 2011 23:18:31 +0000</pubDate>
		<guid isPermaLink="false">http://pythonconquerstheuniverse.wordpress.com/?p=708#comment-627</guid>
		<description><![CDATA[Scott Meyers, &quot;Effective C++.&quot;  This is *the* book to read to learn C++, and OO generally.]]></description>
		<content:encoded><![CDATA[<p>Scott Meyers, &#8220;Effective C++.&#8221;  This is *the* book to read to learn C++, and OO generally.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paddy3118</title>
		<link>http://pythonconquerstheuniverse.wordpress.com/2011/01/04/what-every-beginning-programmer-should-learn/#comment-626</link>
		<dc:creator><![CDATA[Paddy3118]]></dc:creator>
		<pubDate>Tue, 11 Jan 2011 21:30:55 +0000</pubDate>
		<guid isPermaLink="false">http://pythonconquerstheuniverse.wordpress.com/?p=708#comment-626</guid>
		<description><![CDATA[No books, just tell them to spend some time in program maintenance then write every program like you have to maintain it!

- Paddy.]]></description>
		<content:encoded><![CDATA[<p>No books, just tell them to spend some time in program maintenance then write every program like you have to maintain it!</p>
<p>- Paddy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brendan Kidwell</title>
		<link>http://pythonconquerstheuniverse.wordpress.com/2011/01/04/what-every-beginning-programmer-should-learn/#comment-625</link>
		<dc:creator><![CDATA[Brendan Kidwell]]></dc:creator>
		<pubDate>Mon, 10 Jan 2011 20:05:56 +0000</pubDate>
		<guid isPermaLink="false">http://pythonconquerstheuniverse.wordpress.com/?p=708#comment-625</guid>
		<description><![CDATA[&lt;b&gt;Regular Expressions&lt;/b&gt;! If you ever deal with text, you&#039;re going to need to know how to find and replace stuff with concise maintainable code.

&lt;b&gt;XML&lt;/b&gt; -- I&#039;m not a big fan but it&#039;s hear to stay. Know how to serialize and deserialize objects to and from XML, and how to query an in-memory representation of XML.]]></description>
		<content:encoded><![CDATA[<p><b>Regular Expressions</b>! If you ever deal with text, you&#8217;re going to need to know how to find and replace stuff with concise maintainable code.</p>
<p><b>XML</b> &#8212; I&#8217;m not a big fan but it&#8217;s hear to stay. Know how to serialize and deserialize objects to and from XML, and how to query an in-memory representation of XML.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark</title>
		<link>http://pythonconquerstheuniverse.wordpress.com/2011/01/04/what-every-beginning-programmer-should-learn/#comment-624</link>
		<dc:creator><![CDATA[Mark]]></dc:creator>
		<pubDate>Mon, 10 Jan 2011 13:06:38 +0000</pubDate>
		<guid isPermaLink="false">http://pythonconquerstheuniverse.wordpress.com/?p=708#comment-624</guid>
		<description><![CDATA[Good stuff. I&#039;m saving that Pragmatic Programmer list.]]></description>
		<content:encoded><![CDATA[<p>Good stuff. I&#8217;m saving that Pragmatic Programmer list.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ville</title>
		<link>http://pythonconquerstheuniverse.wordpress.com/2011/01/04/what-every-beginning-programmer-should-learn/#comment-622</link>
		<dc:creator><![CDATA[Ville]]></dc:creator>
		<pubDate>Wed, 05 Jan 2011 22:26:39 +0000</pubDate>
		<guid isPermaLink="false">http://pythonconquerstheuniverse.wordpress.com/?p=708#comment-622</guid>
		<description><![CDATA[Write code, carry water.]]></description>
		<content:encoded><![CDATA[<p>Write code, carry water.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Ferg</title>
		<link>http://pythonconquerstheuniverse.wordpress.com/2011/01/04/what-every-beginning-programmer-should-learn/#comment-621</link>
		<dc:creator><![CDATA[Steve Ferg]]></dc:creator>
		<pubDate>Wed, 05 Jan 2011 18:05:20 +0000</pubDate>
		<guid isPermaLink="false">http://pythonconquerstheuniverse.wordpress.com/?p=708#comment-621</guid>
		<description><![CDATA[&lt;em&gt;A colleague sent me this email.  I thought it was worth posting as a comment.&lt;/em&gt;

The comment about &lt;strong&gt;The Pragmatic Programmer &lt;/strong&gt;is spot-on. This book, (the success of which launched a publishing company) is twelve years old (!) yet still provides the best advice (in my opinion) for a young programmer. 

The reason why it remains current is that it doesn&#039;t focus on technologies, but instead on the &lt;strong&gt;craft &lt;/strong&gt;of software development. This is the important stuff they &lt;em&gt;don&#039;t&lt;/em&gt; teach you in school, which I can attest to, having interviewed many fresh-out-of-college candidates.

Some of my favorite pearls of wisdom from the book (the book elaborates more on each topic):

&lt;strong&gt;Care About Your Craft&lt;/strong&gt;
Why spend your life developing software unless you care about doing it well?

&lt;strong&gt;DRY—Don’t Repeat Yourself&lt;/strong&gt; 
Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

&lt;strong&gt;Program Close to the Problem Domain&lt;/strong&gt; 
Design and code in your user’s language.

&lt;strong&gt;Always Use Source Code Control&lt;/strong&gt;
Source code control is a time machine for your work—you can go back.

&lt;strong&gt;Don’t Panic When Debugging&lt;/strong&gt; 
Take a deep breath and THINK! about what could be causing the bug.

&lt;strong&gt;Refactor Early, Refactor Often&lt;/strong&gt;
Just as you might weed and rearrange a garden, rewrite, rework, and re-architect code when it needs it. Fix the root of the problem.

&lt;strong&gt;Test Your Software, or Your Users Will&lt;/strong&gt;
Test ruthlessly. Don’t make your users find bugs for you.

&lt;strong&gt;Don’t Gather Requirements—Dig for Them&lt;/strong&gt;
Requirements rarely lie on the surface. They’re buried deep beneath layers of assumptions, misconceptions, and politics.

&lt;strong&gt;Abstractions Live Longer than Details&lt;/strong&gt;
Invest in the abstraction, not the implementation. Abstractions can survive the barrage of changes from different implementations and new technologies.

&lt;strong&gt;Don’t Think Outside the Box—Find the Box&lt;/strong&gt;
When faced with an impossible problem, identify the real constraints. Ask yourself: &quot;Does it have to be done this way? Does it have to be done at all?&quot;

&lt;strong&gt;Don’t Live with Broken Windows&lt;/strong&gt;
Fix bad designs, wrong decisions, and poor code when you see them.

&lt;strong&gt;Design Using Services&lt;/strong&gt;
Design in terms of services—independent, concurrent objects behind well-defined, consistent interfaces.

&lt;strong&gt;Test Early. Test Often. Test Automatically.&lt;/strong&gt;
Tests that run with every build are much more effective than test plans that sit on a shelf.

&lt;strong&gt;Find Bugs Once&lt;/strong&gt;
Once a human tester finds a bug, it should be the last time a human tester finds that bug. Automatic tests should check for it from then on.
]]></description>
		<content:encoded><![CDATA[<p><em>A colleague sent me this email.  I thought it was worth posting as a comment.</em></p>
<p>The comment about <strong>The Pragmatic Programmer </strong>is spot-on. This book, (the success of which launched a publishing company) is twelve years old (!) yet still provides the best advice (in my opinion) for a young programmer. </p>
<p>The reason why it remains current is that it doesn&#8217;t focus on technologies, but instead on the <strong>craft </strong>of software development. This is the important stuff they <em>don&#8217;t</em> teach you in school, which I can attest to, having interviewed many fresh-out-of-college candidates.</p>
<p>Some of my favorite pearls of wisdom from the book (the book elaborates more on each topic):</p>
<p><strong>Care About Your Craft</strong><br />
Why spend your life developing software unless you care about doing it well?</p>
<p><strong>DRY—Don’t Repeat Yourself</strong><br />
Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.</p>
<p><strong>Program Close to the Problem Domain</strong><br />
Design and code in your user’s language.</p>
<p><strong>Always Use Source Code Control</strong><br />
Source code control is a time machine for your work—you can go back.</p>
<p><strong>Don’t Panic When Debugging</strong><br />
Take a deep breath and THINK! about what could be causing the bug.</p>
<p><strong>Refactor Early, Refactor Often</strong><br />
Just as you might weed and rearrange a garden, rewrite, rework, and re-architect code when it needs it. Fix the root of the problem.</p>
<p><strong>Test Your Software, or Your Users Will</strong><br />
Test ruthlessly. Don’t make your users find bugs for you.</p>
<p><strong>Don’t Gather Requirements—Dig for Them</strong><br />
Requirements rarely lie on the surface. They’re buried deep beneath layers of assumptions, misconceptions, and politics.</p>
<p><strong>Abstractions Live Longer than Details</strong><br />
Invest in the abstraction, not the implementation. Abstractions can survive the barrage of changes from different implementations and new technologies.</p>
<p><strong>Don’t Think Outside the Box—Find the Box</strong><br />
When faced with an impossible problem, identify the real constraints. Ask yourself: &#8220;Does it have to be done this way? Does it have to be done at all?&#8221;</p>
<p><strong>Don’t Live with Broken Windows</strong><br />
Fix bad designs, wrong decisions, and poor code when you see them.</p>
<p><strong>Design Using Services</strong><br />
Design in terms of services—independent, concurrent objects behind well-defined, consistent interfaces.</p>
<p><strong>Test Early. Test Often. Test Automatically.</strong><br />
Tests that run with every build are much more effective than test plans that sit on a shelf.</p>
<p><strong>Find Bugs Once</strong><br />
Once a human tester finds a bug, it should be the last time a human tester finds that bug. Automatic tests should check for it from then on.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian K. Jones</title>
		<link>http://pythonconquerstheuniverse.wordpress.com/2011/01/04/what-every-beginning-programmer-should-learn/#comment-620</link>
		<dc:creator><![CDATA[Brian K. Jones]]></dc:creator>
		<pubDate>Wed, 05 Jan 2011 17:29:12 +0000</pubDate>
		<guid isPermaLink="false">http://pythonconquerstheuniverse.wordpress.com/?p=708#comment-620</guid>
		<description><![CDATA[I&#039;d tell them to make writing code their priority, not reading books. I read lots and lots of books, but I spend more time coding than reading. Participation in open source projects is highly recommended. Reading code is highly recommended. Learning to ask smart questions is highly recommended. Most everything else is about time/experience. You can get a heads up on some things from books, but you can&#039;t really internalize and fully absorb things without experience.]]></description>
		<content:encoded><![CDATA[<p>I&#8217;d tell them to make writing code their priority, not reading books. I read lots and lots of books, but I spend more time coding than reading. Participation in open source projects is highly recommended. Reading code is highly recommended. Learning to ask smart questions is highly recommended. Most everything else is about time/experience. You can get a heads up on some things from books, but you can&#8217;t really internalize and fully absorb things without experience.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
