<?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; book</title>
	<atom:link href="http://stefanoricciardi.com/tag/book/feed/" rel="self" type="application/rss+xml" />
	<link>http://stefanoricciardi.com</link>
	<description>On Software Development and Thereabouts</description>
	<lastBuildDate>Thu, 02 Sep 2010 15:01:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Best Resources to Learn F#</title>
		<link>http://stefanoricciardi.com/2010/05/31/best-resources-to-learn-f/</link>
		<comments>http://stefanoricciardi.com/2010/05/31/best-resources-to-learn-f/#comments</comments>
		<pubDate>Mon, 31 May 2010 11:56:31 +0000</pubDate>
		<dc:creator>stefanoricciardi</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[F#]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[functional]]></category>

		<guid isPermaLink="false">http://stefanoricciardi.com/?p=903</guid>
		<description><![CDATA[Have been hit by the functional programming bug yet? If you read around the blogsphere and listen to podcasts lately, you&#8217;ve surely been exposed to the revamp of functional programming languages all over the place. Haskell, Erlang, Clojure, F# will likely gain a fair share from the usual suspects (Java, C# in primis) at least [...]]]></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%2F2010%2F05%2F31%2Fbest-resources-to-learn-f%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fstefanoricciardi.com%2F2010%2F05%2F31%2Fbest-resources-to-learn-f%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Have been hit by the <a href="http://en.wikipedia.org/wiki/Functional_programming">functional programming</a> bug yet? If you read around the blogsphere and listen to podcasts lately, you&#8217;ve surely been exposed to the revamp of functional programming languages all over the place. Haskell, Erlang, Clojure, F# will likely gain a fair share from the usual suspects (Java, C# in primis) at least in some well defined areas of the business logic.</p>
<p>There are countless posts around highlighting what&#8217;s great (and not so great) about functional programming, so I won&#8217;t repeat those arguments here. What I am offering is just a few pointers to F# resources that might help you getting familiar with .NET way to functional programming.</p>
<h2>Screencasts</h2>
<p>Screencasts are a good way to get a feeling of what functional programming (and F# in particular) look like and why they should matter to you.</p>
<ul>
<li><a href="http://channel9.msdn.com/pdc2008/TL11/">An Introduction to Microsoft F#</a> by Luca Bolognese (PDC 2008). Excellent video, it takes a bit more than one hour.</li>
<li><a href="http://channel9.msdn.com/posts/martinesmann/Don-Syme-FSharp-and-functional-programming-in-NET/">F# and Functional Programming in .NET</a> (2009) by Don Syme (one of the fathers of the language). Another great video from the mind behind F#.</li>
</ul>
<h2>Free Documentation (Books, White Papers)</h2>
<p>When you are ready to get your feet wet with the languages, there are a few free resources that are great to get you started:</p>
<ul>
<li><a href="http://www.ctocorner.com/fsharp/book/">The F# Survival Guide</a>:</li>
<li><a href="http://en.wikibooks.org/wiki/Programming%3aF_Sharp">F# Programming</a>: from Wikibooks</li>
</ul>
<h2>Commercial Books</h2>
<p>Once I am ready to get serious about a language I feel a need a real book to get deeper into the details. Here are a few titles that seem to get great feedback from the community. A search with Google will reveal more and new titles are expected to be published shortly as the language is starting to get traction.</p>
<ul>
<li><a href="http://www.amazon.co.uk/gp/product/1590598504?ie=UTF8&amp;tag=stefaricci-21&amp;linkCode=as2&amp;camp=1634&amp;creative=6738&amp;creativeASIN=1590598504">Expert F# Hardback (Expert&#8217;s Voice in .Net)</a><img style="margin: 0px; border-style: none !important;" src="http://www.assoc-amazon.co.uk/e/ir?t=stefaricci-21&amp;l=as2&amp;o=2&amp;a=1590598504" border="0" alt="" width="1" height="1" />: This is the book I am using right now after going through the (shorter) free books above. <a href="http://blogs.msdn.com/b/dsyme/archive/2010/05/27/quot-expert-f-2-0-quot-on-its-way.aspx">A new version is about to be released</a>.</li>
<li><a href="http://www.amazon.co.uk/gp/product/1430223898?ie=UTF8&amp;tag=stefaricci-21&amp;linkCode=as2&amp;camp=1634&amp;creative=6738&amp;creativeASIN=1430223898">Beginning F#</a><img style="margin: 0px; border-style: none !important;" src="http://www.assoc-amazon.co.uk/e/ir?t=stefaricci-21&amp;l=as2&amp;o=2&amp;a=1430223898" border="0" alt="" width="1" height="1" /></li>
<li><a href="http://www.amazon.co.uk/gp/product/1933988924?ie=UTF8&amp;tag=stefaricci-21&amp;linkCode=as2&amp;camp=1634&amp;creative=6738&amp;creativeASIN=1933988924">Real World Functional Programming: With Examples in F# and C#</a><img style="margin: 0px; border-style: none !important;" src="http://www.assoc-amazon.co.uk/e/ir?t=stefaricci-21&amp;l=as2&amp;o=2&amp;a=1933988924" border="0" alt="" width="1" height="1" /></li>
</ul>
<h2>Other Web sites and Blogs</h2>
<ul>
<li><a href="http://http://msdn.microsoft.com/en-us/fsharp/default.aspx">Microsoft F# Developer Center</a>: Microsoft home page for all things F#, with tons of links and resources. That’s the place you want to go to download the tools and add-ins for Visual Studio 2008 if you, like me, haven’t switched to Visual 2010 yet.</li>
<li><a href="http://cs.hubfs.net/">Hubfs</a>: News, blogs and forums dedicated to the language.</li>
<li><a href="http://strangelights.com/FSharp/Wiki/Default.aspx">The FSharp Wiki</a>: Great collection of links to online resources.</li>
</ul>
<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fstefanoricciardi.com%2f2010%2f05%2f31%2fbest-resources-to-learn-f%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fstefanoricciardi.com%2f2010%2f05%2f31%2fbest-resources-to-learn-f%2f" border="0" alt="kick it on DotNetKicks.com" /></a></p>
<p><a rev="vote-for" href="http://dotnetshoutout.com/Best-Resources-to-Learn-F-Stefano-Ricciardi"><img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fstefanoricciardi.com%2F2010%2F05%2F31%2Fbest-resources-to-learn-f%2F" style="border:0px"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://stefanoricciardi.com/2010/05/31/best-resources-to-learn-f/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Book Review: Pragmatic Thinking And Learning</title>
		<link>http://stefanoricciardi.com/2010/04/05/book-review-pragmatic-thinking-and-learning/</link>
		<comments>http://stefanoricciardi.com/2010/04/05/book-review-pragmatic-thinking-and-learning/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 20:55:06 +0000</pubDate>
		<dc:creator>stefanoricciardi</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://stefanoricciardi.com/?p=875</guid>
		<description><![CDATA[Since you are reading this blog I assume that you are a software developer, or more in general a &#8220;knowledge worker&#8221; as Peter Drucker refers to the person “who puts to work what he has between his hears rather than the brawn of his muscles or the skill of his hands” in his excellent book [...]]]></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%2F2010%2F04%2F05%2Fbook-review-pragmatic-thinking-and-learning%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fstefanoricciardi.com%2F2010%2F04%2F05%2Fbook-review-pragmatic-thinking-and-learning%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.amazon.co.uk/Pragmatic-Thinking-Learning-Refactor-Programmers/dp/1934356050%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Dstefaricci-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1934356050"><img style="margin: 0px 5px 0px 0px; display: inline;" src="http://ecx.images-amazon.com/images/I/51xArZnegaL._SL160_.jpg" alt="" align="left" /></a></p>
<p>Since you are reading this blog I assume that you are a software developer, or more in general a <em>&#8220;knowledge worker&#8221;</em> as <a href="http://en.wikipedia.org/wiki/Peter_Drucker">Peter Drucker</a> refers to the person <em>“who puts to work what he has between his hears rather than the brawn of his muscles or the skill of his hands”</em> in his excellent book <a href="http://www.amazon.co.uk/Effective-Executive-Peter-F-Drucker/dp/0434209503%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Dstefaricci-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0434209503">Effective Executive</a>.</p>
<p>And if you try to keep up to date by reading books, blogs, listening to podcasts, etc&#8230; I sure don&#8217;t have to tell you how difficult it is staying on top of new technologies, frameworks, languages which come out quicker and quicker. It’s sure impossible to keep up with everything.</p>
<p>Trying to come up with some new ideas on how tackle this issue, I have picked up the book <a href="http://www.amazon.co.uk/Pragmatic-Thinking-Learning-Refactor-Programmers/dp/1934356050%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Dstefaricci-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1934356050">Pragmatic Thinking and Learning: Refactor Your Wetware</a> by <a class="zem_slink" title="Andy Hunt (author)" rel="wikipedia" href="http://en.wikipedia.org/wiki/Andy_Hunt_%28author%29">Andy Hunt</a> with high expectations, having loved <a href="http://www.amazon.co.uk/Pragmatic-Programmer-Andrew-Hunt/dp/020161622X%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Dstefaricci-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D020161622X">The Pragmatic Programmer</a> (see my review of that book <a href="http://stefanoricciardi.com/2009/11/09/book-review-the-pragmatic-programmer/">here</a>) where Andy Hunt was one of the two authors. And I must say that I have not been disappointed: Pragmatic Thinking and Learning is another great book.</p>
<p>Let’s have a quick look to the contents.</p>
<h2>From Novice To Expert</h2>
<p>The book first focuses on describing a few phases one goes through in his learning journey. The Dreyfus brothers have tried to formalize the steps to reach the expert status on a given skill (like practicing a sport or programming using a particular language) in the following way:</p>
<ul>
<li><strong>Novice</strong>: you start from here and for basically everything you have to do you need a &#8220;recipe&#8221;.</li>
<li><strong>Advance Beginner</strong>: you now start trying things on your own, and need <em>reference</em> documentation (think of a list of API)</li>
<li><strong>Competent</strong>: you have more <em>initiative</em>, can troubleshoot existing problems and solve new ones.</li>
<li><strong>Proficient</strong>: at this stage you are more self-conscious of your own skill and want to understand the larger picture. This feedback is vital for your continuous improvement.</li>
<li><strong>Expert</strong>: at this stage you keep looking for better ways of doing things. You tend to work from <em>intuition</em> as opposed to a fixed set of rules and reason: you just ten to &#8220;feel&#8221; what&#8217;s right in any given situation.</li>
</ul>
<h2>How Your Brain Works and How To Make The Best Use of It</h2>
<p>The model put forward of your brain here is that of a &#8220;dual core&#8221; CPU. But the two halves don&#8217;t work the same way:</p>
<ul>
<li><strong>L-Mode</strong>: this is your <em>linear</em> mode(traditionally associated with the left hemisphere): analytical, rational, verbal. This is perhaps the part of our brain that we are most familiar with in our day-to-day activities as software developers.</li>
<li><strong>R-Mode</strong>: intuitive, analogic, non-rational. These are the traits most commonly associated with artists.</li>
</ul>
<p>This major section of the book explains why, as a knowledge worker, you need <em>both</em> modes to fully exploit your abilities, and gives tips on how to &#8220;shut up&#8221; the L-Mode for a while so that you can engage more the R-mode.</p>
<p>It then goes on to help you &#8220;debug&#8221; your thinking process, introducing several cognitive biases (things such as &#8220;self serving bias&#8221;, &#8220;hawthorne effect&#8221;, &#8220;false memory&#8221;) and explains that many of your hard-coded thought patterns might just be due to the generation you belong to (are you in the <a class="zem_slink" title="Baby Boom Generation" rel="wikipedia" href="http://en.wikipedia.org/wiki/Baby_Boom_Generation">Baby Boom Generation</a>, in the <a href="http://en.wikipedia.org/wiki/Generation_X">Generation-X</a> or in the <a class="zem_slink" title="Generation Y" rel="wikipedia" href="http://en.wikipedia.org/wiki/Generation_Y">Millennial Generation</a>?).</p>
<h2>Learn to Learn and Gain Experience</h2>
<p>The book then concentrates on the best practices to learn:</p>
<ol>
<li>You need to set <a href="http://www.projectsmart.co.uk/smart-goals.html">SMART</a> objectives for what you want to reach. Having a plan will keep you focused.</li>
<li>You need to consider your skills as a knowledge portfolio. You need to diversify the areas you decide to invest in and dedicate some quality time to it regularly (which requires planning some time in advance: trying to find some <em>free hours </em>here and there simply doesn’t work…).</li>
<li>You need to discover how you learn best. Do you prefer books and videos (visual) or podcasts (audio)? Consider joining a study group,</li>
<li>Use advanced learning techniques such as <a href="http://en.wikipedia.org/wiki/SQ3R" target="_blank">SQ3R</a>, or <a href="http://en.wikipedia.org/wiki/Mind_Mapping" target="_blank">mind mapping</a>. Teach to others.</li>
<li>We learn best by doing: explore, play (= have fun) with the concepts, gets your hand dirty. Experiment and don’t be afraid to make mistakes, possibly in a non-stressful situation (you don’t want to have the pressure of a “real” work project).</li>
</ol>
<h2>Keep the Focus</h2>
<p>The last part of the book has is somehow lighter and it’s dedicated to ways to increase your focus and attention. The author touches upon different topics from meditation to productivity tricks: if you have been exposed to productivity blogs such as <a href="http://lifehacker.com/">Lifehacker</a> you are like to be familiar with most of these already</p>
<h2>Conclusions</h2>
<p>This has really been a fun book to read and I whole-heartedly recommend it. I have gone back to it quite a few times already after reading it from cover to cover.</p>
<p>Each small chapter contains a “Next Actions” section with exercises and goals for you to try out and throughout the book there are tons of references if you are interested in a particular topic and want to dig more.</p>
<p>It used to be that all you needed to perform your job was “The C Programming Language”. That’s not the case any more.</p>
<blockquote><p>If I had eight hours to cut down a tree, I’d spend six hours sharpening my ax. &#8212; Abraham Lincoln.</p></blockquote>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="float: right; border-style: none;" src="http://img.zemanta.com/pixy.gif?x-id=c4e653b7-1ab6-4d42-a231-4f4d02bbbcf1" alt="" /></div>
<div class="wlWriterHeaderFooter" style="margin: 0px; padding: 0px 0px 0px 0px;">
<div class="shoutIt"><a rev="vote-for" href="http://dotnetshoutout.com/Submit?url=http://stefanoricciardi.com/2010/04/05/book-review-pragmatic-thinking-and-learning/&amp;title=Book+Review%3a+Pragmatic+Thinking+And+Learning"><img style="border: 0px;" src="http://dotnetshoutout.com/image.axd?url=http://stefanoricciardi.com/2010/04/05/book-review-pragmatic-thinking-and-learning/" alt="Shout it" /></a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://stefanoricciardi.com/2010/04/05/book-review-pragmatic-thinking-and-learning/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Year&#039;s Resolutions for 2010</title>
		<link>http://stefanoricciardi.com/2010/01/08/new-years-resolutions-for-2010/</link>
		<comments>http://stefanoricciardi.com/2010/01/08/new-years-resolutions-for-2010/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 13:52:36 +0000</pubDate>
		<dc:creator>stefanoricciardi</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[DDD]]></category>
		<category><![CDATA[Design and Patterns]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://stefanoricciardi.com/?p=653</guid>
		<description><![CDATA[The new year has just started and it&#8217;s time for me to share my professional life resolutions for the upcoming year. Through books, articles, blogs, podcasts, one hears about that language, or that technology, or that process which would be great to try and learn. Unfortunately, since the spare time is not infinite, one has [...]]]></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%2F2010%2F01%2F08%2Fnew-years-resolutions-for-2010%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fstefanoricciardi.com%2F2010%2F01%2F08%2Fnew-years-resolutions-for-2010%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>The new year has just started and it&#8217;s time for me to share my professional life resolutions for the upcoming year.</p>
<p>Through books, articles, blogs, podcasts, one hears about that language, or that technology, or that process which would be great to try and learn. Unfortunately, since the spare time is not infinite, one has to make choices and concentrate on what might give the best return on investment in the short/medium term. The following are the two or three things which I have chosen to dive in this year:<br />
<!-- more --></p>
<h3>Read the Blue Book</h3>
<p><a href="http://69.175.59.226/~stefano3/blog/wp-content/uploads/2010/01/dddbook.jpg"><img class="size-full wp-image-655" style="display:inline;margin-left:5px;margin-right:0;" title="Domain Driven Design Book" src="http://69.175.59.226/~stefano3/blog/wp-content/uploads/2010/01/dddbook.jpg" alt="" width="98" height="125" align="right" /></a><strong> </strong><a href="http://www.amazon.co.uk/Domain-driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1262868697&amp;sr=8-1">Domain-Driven Design</a> by Eric Evans is one of the best book that I have come across on software design in a while. Not always an easy read (some say it&#8217;is &#8220;dense&#8221;), I am going through it slower than usual: every chapter is full of sound advices and deep concepts that take a while to sink in.</p>
<p>Luckily in my current project I will have the opportunity to apply many concepts from this approach. For this reason alone, this makes to the top of my list for 2010.</p>
<h3><strong>Learn Ruby</strong></h3>
<p><a href="http://69.175.59.226/~stefano3/blog/wp-content/uploads/2010/01/ruby-logo.png"><img class="alignright size-full wp-image-658" style="float:right;margin-left:0;margin-right:0;" src="http://69.175.59.226/~stefano3/blog/wp-content/uploads/2010/01/ruby-logo.png" alt="Ruby Logo" width="117" height="135" /></a>2009 has been for me the year of C#. The Pragmatic Programmer suggests to both to learn a new language every year and getting familiar with one scripting language. Most experts seem to agree that learning a language with a different paradigm from the one you use everyday is a big plus. Martin Fowler (who <a href="http://martinfowler.com/bliki/EvaluatingRuby.html">favors Ruby</a>) states that:</p>
<blockquote><p>[...] programming languages do affect the way you think about programming, and learning new languages can do a lot to help you think about solving problems in different ways. (It&#8217;s important to learn languages that are quite different in order to get the benefit of this. Java and C# are too similar to count.)</p></blockquote>
<p>I am not expecting to become proficient with Ruby in the near future (after all, I will still be using C# in my every-day at work). However from what I have seen so far it really looks like a great language to learn, so I am looking forward to it.</p>
<h3>Play with Subversion</h3>
<p><a href="http://69.175.59.226/~stefano3/blog/wp-content/uploads/2010/01/subversioncrop.png"><img style="display:inline;margin-left:0;margin-right:0;border-width:0;" title="SubversionCrop" src="http://69.175.59.226/~stefano3/blog/wp-content/uploads/2010/01/subversioncrop_thumb.png" border="0" alt="SubversionCrop" width="244" height="37" align="right" /></a> In my previous job at Motorola I was developing in a mixed Unix and Windows environment; <a href="http://www-01.ibm.com/software/awdtools/clearcase/multisite/index.html">Rational Clearcase Multisite</a> was the company-wide version control tool. Clearcase is a real heavy weight, and probably one of the few tools that can handle teams of hundreds of developers located anywhere word-wide.</p>
<p>When I landed my current job I had to switch to the much more limited (and widely <a href="http://www.codinghorror.com/blog/archives/000660.html">hated</a>) Microsoft Source Safe (hey… always better than no version control at all, right?) Luckily, rumors has it that we might soon migrate to <a href="http://subversion.tigris.org/">Subversion</a>.  Subversion is widely used in the open source community and I guess I’ll need it once I start playing with Ruby and downloading libraries etc…</p>
<h3>Other Books to Read</h3>
<p><a title="Reading Book Stack, by stevewilhelm" href="http://www.flickr.com/photos/stevewilhelm/489404053/"><img style="float:right;margin-left:5px;margin-right:0;" src="http://farm1.static.flickr.com/209/489404053_b91cd84d73_t.jpg" alt="" width="67" height="100" /></a>Beside the blue book, there are a few other books that I plan to complete reading this year. I have already started <a href="http://www.amazon.co.uk/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1262899365&amp;sr=8-1">Clean Code</a> and <a href="http://www.amazon.co.uk/Pragmatic-Thinking-Learning-Refactor-Programmers/dp/1934356050/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1262899448&amp;sr=1-1">Pragmatic Thinking and Learning</a>. Next on my list is <a href="http://www.amazon.co.uk/Working-Effectively-Legacy-Robert-Martin/dp/0131177052/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1262899498&amp;sr=1-1">Working Effectively With Legacy Code</a> and <a href="http://www.amazon.co.uk/Agile-Estimating-Planning-Robert-Martin/dp/0131479415/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1262899606&amp;sr=1-1">Agile Estimating and Planning</a>. I promised myself not to buy any more book before I clean my current queue!</p>
<h3>Stuff Left for 2011</h3>
<p>As I mentioned, there are so many other things I would love to investigate and play with, but there is only so much time available, considering that 2010 will bring in .Net4.0 and C#4.0 that will surely be a priority.</p>
<p>Therefore, the following I guess will have to wait till 2011:</p>
<ul>
<li>Learning a functional programming language (possibly Haskell or F#)</li>
<li>Getting familiar Domain Specific Languages (Martin Fowler is preparing a <a href="http://martinfowler.com/dslwip/">book</a> on the topic)</li>
<li>Play with Android and/or iPhone development</li>
<li>The Next Big Thing from 2010!</li>
</ul>
<div><em>Photo of the stack of books by Steve Wilhelm (<a rel="cc:attributionURL" href="http://www.flickr.com/photos/stevewilhelm/">http://www.flickr.com/photos/stevewilhelm/</a> / <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.0/">CC BY-NC-SA 2.0</a>)</em></div>
<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fstefanoricciardi.com%2f2010%2f01%2f08%2fnew-years-resolutions-for-2010%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fstefanoricciardi.com%2f2010%2f01%2f08%2fnew-years-resolutions-for-2010%2f" border="0" alt="kick it on DotNetKicks.com" /></a></p>
<p><a rev="vote-for" href="http://dotnetshoutout.com/New-Years-Resolutions-for-2010"><img style="border:0;" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fstefanoricciardi.com%2F2010%2F01%2F08%2Fnew-years-resolutions-for-2010%2F" alt="Shout it" /></a></p>
<p><!-- AddThis Button BEGIN --><br />
<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><br />
<!-- AddThis Button END --></p>
]]></content:encoded>
			<wfw:commentRss>http://stefanoricciardi.com/2010/01/08/new-years-resolutions-for-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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" 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>6</slash:comments>
		</item>
		<item>
		<title>Hello World!</title>
		<link>http://stefanoricciardi.com/2009/06/05/hello-world-2/</link>
		<comments>http://stefanoricciardi.com/2009/06/05/hello-world-2/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 20:33:00 +0000</pubDate>
		<dc:creator>stefanoricciardi</dc:creator>
				<category><![CDATA[Project Management]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[Essay]]></category>

		<guid isPermaLink="false">http://stefanoricciardi.wordpress.com/?p=52</guid>
		<description><![CDATA[Hello everybody and welcome to my blog! I have been thinking about starting a blog for some time now, and the new job that I have landed has turned out to be a good occasion to share with you all my experiences in the new and fascinating world of enterprise applications on .NET. In this [...]]]></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%2F06%2F05%2Fhello-world-2%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fstefanoricciardi.com%2F2009%2F06%2F05%2Fhello-world-2%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Hello everybody and welcome to my blog!</p>
<p>I have been thinking about starting a blog for some time now, and the new job that I have landed has turned out to be a good occasion to share with you all my experiences in the new and fascinating world of enterprise applications on .NET.</p>
<p>In this first post I feel I need to spend a few words on the blog’s banner saying “Chased by the Silver Bullet”. So, what does that mean?</p>
<p>You might have already heard about “No Silver Bullet”, one of the most famous papers ever written in the history of software engineering. The essay is included in one of my all-time favorite books: <a href="http://www.amazon.co.uk/Mythical-Month-Essays-Software-Engineering/dp/0201835959/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1244230928&amp;sr=8-1">The Mythical Man Month</a>, by <a href="http://en.wikipedia.org/wiki/Fred_Brooks">Frederick P. Brooks</a>.  <a href="http://69.175.59.226/~stefano3/blog/wp-content/uploads/2009/06/mythicalmanmonth.jpg"><img style="display:inline;border-width:0;margin:10px 15px 0 0;" title="MythicalManMonth" src="http://69.175.59.226/~stefano3/blog/wp-content/uploads/2009/06/mythicalmanmonth_thumb.jpg" border="0" alt="MythicalManMonth" width="96" height="141" align="left" /></a>Written back in the mid ‘80s, the topics touched in this book are still relevant today, mainly because the author concentrates more on the human factors of software development than specific technologies.</p>
<p>Chapter 16 from this book is “No Silver Bullet – Essence and Accident in Software Engineering”. The central proposition is that</p>
<blockquote><p><em>There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.</em></p></blockquote>
<p>In other words, <strong>writing good software is hard</strong>, and most likely it will always be. There will always be projects which are late, requiring double resources and shipping half of the planned features.  Irrespective of new technologies, languages, tools; we’ve all been there. Yes, new processes and platforms can make our life easier , but they affect only what Brooks describes as <em>accidental </em>aspects, not the <em>essential</em> ones which he identifies in the</p>
<blockquote><p><em>specification, design and test of this conceptual construct [the software], not the labor of representing it and testing the fidelity of the representation […] Building software will always be hard. There is inherently no silver bullet. </em></p></blockquote>
<p>You can find the complete paper <a href="http://www.lips.utexas.edu/ee382c-15005/Readings/Readings1/05-Broo87.pdf">here</a> (pdf).</p>
<p>Aren’t we all as developers (and potential buyers of tools/courses/seminars/etc…) always chased by yet another silver bullet, or the new fad of the moment with its promise land where productivity blooms, deadlines are met, customer expectations are exceeded?</p>
<p>I believe that the very people developing the software will always matter more than anything else (I agree with the <a href="http://agilemanifesto.org/">agile manifesto</a> here). Hence the need to continuously improve, to learn new things every day and to share all those little discoveries within your network of coworkers and friends. That’s the reason behind this blog which I hope you’ll enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://stefanoricciardi.com/2009/06/05/hello-world-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
