<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Stefano Ricciardi &#187; software craftsmanship</title>
	<atom:link href="http://stefanoricciardi.com/tag/software-craftsmanship/feed/" rel="self" type="application/rss+xml" />
	<link>http://stefanoricciardi.com</link>
	<description>On Software Development and Thereabouts</description>
	<lastBuildDate>Tue, 15 Nov 2011 07:57:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Book Review: The Pragmatic Programmer</title>
		<link>http://stefanoricciardi.com/2009/11/09/book-review-the-pragmatic-programmer/</link>
		<comments>http://stefanoricciardi.com/2009/11/09/book-review-the-pragmatic-programmer/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 11:05:26 +0000</pubDate>
		<dc:creator>stefanoricciardi</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[software craftsmanship]]></category>

		<guid isPermaLink="false">http://stefanoricciardi.wordpress.com/?p=530</guid>
		<description><![CDATA[I recently embarked on a journey to read (or re-read) all the great classic books in the software literature. The Pragmatic Programmer is one of those books which is usually included in the recommended readings for a software developer, and deservedly so. The book, released in 1999, has been so successful that the two authors, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fstefanoricciardi.com%2F2009%2F11%2F09%2Fbook-review-the-pragmatic-programmer%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fstefanoricciardi.com%2F2009%2F11%2F09%2Fbook-review-the-pragmatic-programmer%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<h1><a title="The Pragmatic Programmer" href="http://www.amazon.co.uk/Pragmatic-Programmer-Andrew-Hunt/dp/020161622X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1256673093&amp;sr=8-1"><img style="display:inline;border-width:0;margin:0 5px 0 0;" title="thepragrmaticprogrammer" src="http://69.175.59.226/~stefano3/blog/wp-content/uploads/2009/10/thepragrmaticprogrammer.jpg" border="0" alt="The Pragmatic Programmer" width="244" height="244" align="left" /></a></h1>
<p>I recently embarked on a journey to read (or re-read) all the great classic books in the software literature.</p>
<p>The <a title="The Pragmatic Programmer" href="http://www.amazon.co.uk/Pragmatic-Programmer-Andrew-Hunt/dp/020161622X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1256673093&amp;sr=8-1">Pragmatic Programmer</a> is one of those books which is usually included in the recommended readings for a software developer, and deservedly so. The book, released in 1999, has been so successful that the two authors, <a href="http://pragprog.com/about">Andrew Hunt</a> and <a href="http://pragprog.com/about">David Thomas</a>, have since created their own publishing company, the <a href="http://pragprog.com/">Pragmatic Bookshelf</a> (with titles spanning a broad range of programming topics).</p>
<p>This book must really  have been a breakthrough when it hit the bookstores about 10 years ago. 1999 is one year before Kent Beck released his seminal book <a href="http://www.amazon.co.uk/Extreme-Programming-Explained-Embrace-Change/dp/0321278658/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1257536953&amp;sr=8-1"><em>Extreme Programming Explained: Embrace Change</em></a><em> </em>which exposed the agile software process to the masses<strong>.</strong> Both Andrew Hunt and David Thomas originally signed the <a href="http://agilemanifesto.org/">Agile Manifesto</a>, together with Kent Beck himself and a few others, and it shows. But it would be dismissive to describe this as a book on agile since it’s much more.</p>
<p>The book is structured as a series short 46 sections. Each section has challenges and even exercises where appropriate. It touches on <strong>design</strong> concepts such as orthogonality, decoupling, <a href="http://en.wikipedia.org/wiki/DRY">DRY</a> (which it coined), <a href="http://en.wikipedia.org/wiki/Domain_Specific_Languages">Domain Specific Languages</a>, <a href="http://en.wikipedia.org/wiki/Design_By_Contract">Design By Contract</a>, <a href="http://en.wikipedia.org/wiki/Metaprogramming">Metaprogramming</a>, <a href="http://en.wikipedia.org/wiki/Refactoring">Refactoring</a>; it has pages on <strong>process</strong> topics like build automation, “design to test”, test automation, estimation, requirements collection.</p>
<p>But where the book really shines is where it shows you how to “<em>become a better programmer</em>” (today we might say a <em>software</em> <em>craftsman</em>) and to take pride from it.</p>
<p>The <strong>pragmatic programmer</strong> is an early adopter, is inquisitive and realistic, and tries to be &#8220;f<em>amiliar with a broad range of technologies and environments</em>&#8220;.</p>
<p>The pragmatic programmer takes responsibility, values quality but recognizes when the software is “<em>good enough</em>”. The pragmatic programmer is a continuous learner (the “<em>learn at least one new language every year</em>” advice is often quoted), thinks critically about what he reads and hear, and knows how to communicate. The books explains how you can build these qualities.</p>
<p>The sections that I enjoyed the most is when the authors discuss about <em>tools</em>: the pragmatic programmer prefers working with plain text (the book itself it’s been written from XML transformed into TeX), masters a shell (command line) which he/she can program, knows at least one text manipulation language (e.g. Perl) and how to generate code from metadata.</p>
<p>Even though the recent reprints have links to later tools like JUnit, Ant, etc… still a few parts of the book begin to show its age. For example the authors suggest to pick <em>one</em> text editor (e.g. Emacs or VI) and become a power user (not just know the keyboard shortcuts but also how to extend it to suit your needs). There used to be a time when you could spend your whole working day inside Emacs: you could edit and build your programs, open a shell, handle emails and browse newsgroups, edit text documents (with LaTeX for example), even play games. As much as I love Emacs, I believe today it’s virtually impossible to beat the productivity gains you can get with specialized IDEs like Visual Studio or Eclipse, with their intellisense and plug-in ecosystems.</p>
<p>All in all, the Pragmatic Programmer is easily one of the best book on software development I have ever read. It has really inspired me to continue my journey to become a <em>“better programmer”</em>. Thanks to this book, I have now in my action list: learn a scripting language (Ruby?); learn a functional language (F#?); learn how to use a shell in the Windows environment (PowerShell?); read a book on usability; read a book on the human side of software development (“Peopleware&#8221;?). A lot of things. A lot of fun ahead.</p>
<p><!-- Kick it BEGIN --><br />
<a href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fstefanoricciardi.net%2F2009%2F11%2F09%2Fbook-review-th%E2%80%A6tic-programmer%2F"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3A%2F%2Fstefanoricciardi.net%2F2009%2F11%2F09%2Fbook-review-th%E2%80%A6tic-programmer%2F" border="0" alt="kick it on DotNetKicks.com" /></a><br />
<!-- Kick it END --></p>
<p><a rev="vote-for" href="http://dotnetshoutout.com/Book-Review-The-Pragmatic-Programmer"><img src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fstefanoricciardi.net%2F2009%2F11%2F09%2Fbook-review-the-pragmatic-programmer%2F" alt="Shout it" /></a></p>
<p><!-- AddThis Button BEGIN --></p>
<p><a href="http://www.addthis.com/bookmark.php?v=250"><img style="border:0 none;" src="http://s7.addthis.com/static/btn/lg-share-en.gif" alt="Bookmark and Share" width="125" height="16" /></a></p>
<p><!-- AddThis Button END --></p>
<div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e6ceeafa-fe5c-4bd6-a48d-325da43e5abc" style="display:inline;float:none;margin:0;padding:0;">Technorati Tags: <a rel="tag" href="http://technorati.com/tags/Programming">Programming</a>, <a rel="tag" href="http://technorati.com/tags/review">Review</a>, <a rel="tag" href="http://technorati.com/tags/ood">OOD</a></div>

]]></content:encoded>
			<wfw:commentRss>http://stefanoricciardi.com/2009/11/09/book-review-the-pragmatic-programmer/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

