<?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>Global Nerdy &#187; pragmatic programming</title>
	<atom:link href="http://www.globalnerdy.com/tag/pragmatic-programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.globalnerdy.com</link>
	<description>Tech Evangelist Joey deVilla on Shopify, startups, software development, tech news and other nerdy stuff</description>
	<lastBuildDate>Thu, 09 Feb 2012 18:30:43 +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>Tech Books I&#8217;m Reading Right Now</title>
		<link>http://www.globalnerdy.com/2009/04/21/tech-books-im-reading-right-now/</link>
		<comments>http://www.globalnerdy.com/2009/04/21/tech-books-im-reading-right-now/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 20:25:36 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[pragmatic programming]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/04/21/tech-books-im-reading-right-now/</guid>
		<description><![CDATA[This article also appears in Canadian Developer Connection. I’m reading a couple of tech books right now, and I plan to publish more in-depth reviews of them in the next couple of weeks. In the meantime, I thought I’d give you some quick reviews to give you a taste. Pro ASP.NET MVC Framework by Steve [...]]]></description>
			<content:encoded><![CDATA[<p></p><p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/04/21/tech-books-i-m-reading-right-now.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
<p>I’m reading a couple of tech books right now, and I plan to publish more in-depth reviews of them in the next couple of weeks. In the meantime, I thought I’d give you some quick reviews to give you a taste.</p>
<h3><em>Pro ASP.NET MVC Framework</em> by Steve Sanderson (Apress)</h3>
<p><a href="http://apress.com/book/view/9781430210078"><img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="pro_asp.net_mvc_framework" border="0" alt="pro_asp.net_mvc_framework" align="left" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/pro-aspnet-mvc-framework.jpg" width="183" height="244" /></a>The first book is <strong><em><a href="http://apress.com/book/view/9781430210078">Pro ASP.NET MVC Framework</a></em></strong>, published by Apress and written by Steven Sanderson. It’s been available in “beta” form as a PDF for the past couple of months, and as of this afternoon, the final PDF version has been released. I expect that the dead-tree edition should be hitting the shelves of your favourite bookstore, real or virtual, in a week or so.</p>
<p>This book covers the new&#160; way of developing ASP.NET applications, the MVC way. If you’ve read <a href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612">the “Gang of Four” book</a> or any other book on design patterns (or any of <a href="http://www.lhotka.net/">Rocky Lhotka’s</a> books on business objects), you know that MVC is short for “Model-View-Controller” and a pattern for separating an application into its business logic, presentation and interface. Perhaps you’ve looked longingly as the “cool kids” have used frameworks like <a href="http://rubyonrails.org/">Ruby on Rails</a> and <a href="http://www.djangoproject.com/">Django</a> to build applications with greater speed and fun, and fewer errors and less futzing around with tedious development minutiae. You might have heard <a href="http://www.hanselman.com">Scott Hanselman</a> and <a href="http://haacked.com/">Phil Haack</a> talk about their work on <strong><a href="http://asp.net/mvc">ASP.NET MVC</a></strong>, or maybe you’d heard that <a href="http://codinghorror.com/">Jeff Atwood’s</a> <em><a href="http://stackoverflow.com/">Stack Overflow</a></em> is implemented in ASP.NET MVC.</p>
<p>I myself come from the world of Rails and have noodled with Django. As such, find that I’d rather use an MVC-style framework in most cases. That’s why I’m happy that ASP.NET MVC has hit the official “1.0” stage – it’s available for download right now and will be included in Visual Studio 2010 as an official alternative to old-school ASP.NET.</p>
<p>The book is a great introduction to the concepts of MVC web frameworks in the context of ASP.NET. It starts by showing you how to get the ASP.NET MVC tools and templates onto your system and then walks you through the development of a sports store ecommerce site. The middle part goes into the features of ASP.NET MVC in greater detail, covering REST and routing, controllers and views, testing and adding Ajax to your MVC applications. The last section covers the goodies that ASP.NET gives you – authentication, members/roles/profiles, caching/compression and WebForms – and how to use them in the context of ASP.NET MVC.</p>
<p>It looks like a pretty promising read on a topic that I’m very interested in. Watch this blog for a review, and eventually, some code examples based on what I learn from the book.</p>
<h3><em>The Passionate Programmer</em> by Chad Fowler (Pragmatic Bookshelf)</h3>
<p><a href="http://www.pragprog.com/titles/cfcar2/the-passionate-programmer"><img style="border-right-width: 0px; margin: 0px 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="the_passionate_programmer" border="0" alt="the_passionate_programmer" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/the-passionate-programmer.jpg" width="174" height="244" /></a>Regular readers of this blog will know that <a href="http://www.globalnerdy.com/2009/01/08/pragmatic-thinking-learning-my-favourite-geek-book-of-2008/">my favourite developer book of 2008</a> was <strong><em><a href="http://www.pragprog.com/titles/ahptl/pragmatic-thinking-and-learning">Pragmatic Thinking and Learning: Refactor Your Wetware</a></em></strong>. They also know that there really wasn’t much about software development in particular, but developing the most important tool for software development: your mind.</p>
<p>The publishers of <em>Pragmatic Thinking and Learning </em>have just put out a “new-ish” book, <strong><em><a href="http://www.pragprog.com/titles/cfcar2/the-passionate-programmer">The Passionate Programmer</a></em></strong>, written by <a href="http://chadfowler.com/">Chad Fowler</a>. I say it’s “new-ish” because it could be considered a second edition of his book <a href="http://www.pragprog.com/titles/mjwti/my-job-went-to-india"><em>My Job Went to India (and All I Got was this Lousy Book)</em></a><em><strong>.</strong> </em></p>
<p>The problem with <em>My Job Went to India </em>was that the title implied that it was largely about saving your job from outsourcing. <a href="http://www.pragprog.com/podcasts/show/26">In a recent podcast about the book</a>, Chad said that the book’s title influenced the way he wrote it, and it ended up not being quite the book he wanted to write.</p>
<p><em>The Passionate Programmer</em> is different; you could consider it a “refactoring” of <em>My Job Went to India</em>, and a good one, too. Rather than focusing on saving your job, it’s more about two very important things:</p>
<ul>
<li>Finding fulfillment and happiness in your career </li>
<li>Cultivating the desire to live a remarkable life </li>
</ul>
<p>Those are two pretty tall orders for a book, but I’ve met Chad at a couple of conferences, and I know he likes to think big. I’ve just started into <em>The Passionate Programmer</em> and so far, I’ve thought “damn right!” at every bit of advice he’s given. As with <em>Pro ASP.NET MVC Framework</em>, watch this blog for the full review of this book.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/04/21/tech-books-im-reading-right-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pragmatic Thinking &amp; Learning: My Favourite Geek Book of 2008</title>
		<link>http://www.globalnerdy.com/2009/01/08/pragmatic-thinking-learning-my-favourite-geek-book-of-2008/</link>
		<comments>http://www.globalnerdy.com/2009/01/08/pragmatic-thinking-learning-my-favourite-geek-book-of-2008/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 06:06:42 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[mind and brain]]></category>
		<category><![CDATA[pragmatic programming]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/?p=2596</guid>
		<description><![CDATA[This article also appears in Canadian Developer Connection. It’s easy to point to books on understanding and improving the inner workings of your code, the software and hardware platforms on which it runs and even the processes used in developing it. It’s much harder to find one on understanding and improving the programmer, or more [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.pragprog.com/titles/ahptl/pragmatic-thinking-and-learning"><img style="border-right-width: 0px; margin: 0px 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Cover of " border="0" alt="Cover of " align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/01/pragmatic-thinking-and-learning.jpg" width="190" height="228" and="and" learning??="Learning??" pragmatic="pragmatic" thinking="thinking" /></a></p>
<p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/01/08/pragmatic-thinking-learning-my-favourite-geek-book-of-2008.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a><em></em></p>
<p>It’s easy to point to books on understanding and improving the inner workings of your code, the software and hardware platforms on which it runs and even the processes used in developing it. It’s much harder to find one on understanding and improving the <em>programmer</em>, or more specifically the programmer’s “wetware” – that is, the brain and mind. A few books aimed at programmers give a little space to the topic: <em><a href="http://www.chapters.indigo.ca/books/Tog-on-Interface-Bruce-Tognazzini/9780201608427-item.html">Tog on Interface</a></em> has a section and exercise on building your intuition, the first edition of <em><a href="http://www.chapters.indigo.ca/books/Code-Complete-Steve-Mcconnell/9780735619678-item.html">Code Complete</a> </em>devotes a small chapter to character, and <em><a href="http://www.chapters.indigo.ca/books/Cocoa-Programming-for-Mac-OS/9780321213143-item.html">Cocoa Programming for Mac OS X</a> </em>reminds the reader that getting extra sleep when learning new material is essential. For a <em>whole book</em> on the topic, we’ve had to wait until <a href="http://blog.toolshed.com/">Andy “<em>The Pragmatic Progammer</em>” Hunt’s</a> <em><strong><a href="http://www.pragprog.com/titles/ahptl/pragmatic-thinking-and-learning">Pragmatic Thinking &amp; Learning: Refactor Your Wetware</a></strong></em>.</p>
<p>The first few chapters of <em>PT&amp;L </em>form a quick introduction to the theories of cognition, learning and neuroscience on which the rest of the book is based. Among these are the <a href="http://blog.bruceabernethy.com/post/The-Dreyfus-Model-of-Skills-Acquisition.aspx">Dreyfus Model</a>, which explains how we progress from novice to expert and the steps along the way and a model of the brain in techie terms, shown below:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Diagram showing a &quot;Dual core&quot; model of the brain" border="0" alt="Diagram showing a &quot;Dual core&quot; model of the brain" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/01/your-dualcore-brain.jpg" width="514" height="420" /> </p>
<p>Once <em>PT&amp;L</em> has laid out these foundations, it dives into the brain-refactoring, including:</p>
<ul>
<li><strong>Taking advantage of <em>R</em>-mode</strong> (often called the <a href="http://www.funderstanding.com/content/right-brain-vs-left-brain">“right brain”</a> in pop psychology), which often gets ignored because of its non-linear, non-linguistic, unpredictable and even “artsy” nature. It’s actually an amazing problem-solver, so much that <em>PT&amp;L</em> suggests that you should “lead with <em>R</em>-mode and follow with L-mode”, or more colloquially, “write drunk; revise sober”. </li>
<li><strong>Working around the bugs in your brain.</strong> And there are many, from the primitive “lizard brain” that likes to override our higher cognitive functions to cognitive biases to generational affinity. </li>
<li><strong>Learning deliberately:</strong> what learning is and isn’t, how to plan to learn, figuring out what your learning style is and how to best take advantage of it, and harnessing mind maps, documentation and teaching in order to learn. </li>
<li><strong>Gaining experience, </strong>which includes understanding the importance of fun and how pressure kills cognition, learning the “inner game” and why your mantra shouldn’t be “learn to build”, but “build to learn”. </li>
<li><strong>Managing focus,</strong> a very important topic since there are so many things vying for it, from office interruptions to the siren song of the internet, with email, IM, Twitter, Digg, Reddit and LOLcats. One of my favourite bits in this section was some research whose results indicated that constantly checking your email lowers your effective IQ more than smoking a joint. </li>
</ul>
<p><em>PT&amp;L</em> does a great job following its own advice by presenting its material in ways that best take advantage of how our brains work, reinforcing its with anecdotes, metaphors and visuals and using the enjoyable style for which Andy Hunt’s other projects, such as <em><a href="http://www.pragprog.com/the-pragmatic-programmer">The Pragmatic Programmer</a> </em>and his various training sessions have become famous. </p>
<p>As with any book that proscribes a new way of doing or perceiving things – think of books on Agile programming or <a href="http://en.wikipedia.org/wiki/Getting_Things_Done">“Getting Things Done”</a> methodologies – you’ll have to pick and choose which ideas and techniques work best for you. In <a href="http://radar.oreilly.com/2008/07/book-review-pragmatic-thinking.html">his review</a>, O’Reilly editor Nat Torkington found the section on generational affinity a little too “Malcolm Gladwell”-ish in the way that it treats anecdotes about generations as data (personally, I think there’s some truth to the generational affinity thing). I do agree with Nat that some of the exercises, such as “Morning Pages” that seem a bit too new-agey/hippie even for me – and I’m the kind of guy who’d go to <a href="http://burningman.com/">Burning Man</a>.</p>
<p>This is the only book of which I’m aware that covers how to improve the tool that really develops code: not your platform, language or editor, but your <em>mind</em>. It’s worthy of several readings, first straight through and subsequent dives into specific sections. I took it with me on my flight from Toronto to TechDays Calgary and found it both not only informative, but engaging and entertaining as well. Best of all, barring some quantum leap in cognitive science that invalidates what we know today, <em>PT&amp;L</em> will probably have a much longer shelf life than most of the tech books in your library.</p>
<p>It’s my favourite geek book of 2008.</p>
<p><em><a href="http://www.pragprog.com/titles/ahptl/pragmatic-thinking-and-learning"><strong>Pragmatic Thinking &amp; Learning</strong></a></em> is available in both dead-tree (<a href="http://www.pragprog.com/titles/ahptl/pragmatic-thinking-and-learning">US$34.95 direct from the publisher</a>, <a href="http://www.chapters.indigo.ca/books/Pragmatic-Thinking-Learning-Refactor-Your-Andy-Hunt/9781934356050-item.html">CAD$30.69 from Chapters/Indigo online</a>) and PDF formats (<a href="http://www.pragprog.com/titles/ahptl/pragmatic-thinking-and-learning">US$22.00</a>). It’s a <a href="http://www.joltawards.com/finalists.html">finalist</a> in the “Books General” category of the 19th Annual <a href="http://www.joltawards.com/">Jolt Awards</a>.</p>
<p><strong>Would you be interested in hearing more from <em>PT&amp;L’s</em> author, Andy Hunt, himself?</strong> Let me know either via <a href="mailto:joey.devilla@microsoft.com">email</a> or the comments, and I’ll see what I can do about arranging an interview in some format with your questions!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/01/08/pragmatic-thinking-learning-my-favourite-geek-book-of-2008/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>&#8220;It Looks Like You&#8217;re Trying to Stank Up Your Code. Would You Like Some Help?&#8221;</title>
		<link>http://www.globalnerdy.com/2008/12/05/it-looks-like-youre-trying-to-stank-up-your-code-would-you-like-some-help/</link>
		<comments>http://www.globalnerdy.com/2008/12/05/it-looks-like-youre-trying-to-stank-up-your-code-would-you-like-some-help/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 21:57:48 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[code smells]]></category>
		<category><![CDATA[Funny]]></category>
		<category><![CDATA[hypothetical]]></category>
		<category><![CDATA[pragmatic programming]]></category>
		<category><![CDATA[YAGNI]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2008/12/05/it-looks-like-youre-trying-to-stank-up-your-code-would-you-like-some-help/</guid>
		<description><![CDATA[Gojko Adzic points to this photo taken at QCon San Francisco 2008 by John Grae. It’s a slide featuring YAGNI, the Development Assistant, the programmer’s answer to “Clippit”, a.k.a. “Clippy”: Photo by John Grae. Click the photo to see its Flickr page. YAGNI, short for “You Aren’t Gonna Need It” is a development maxim that [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://gojko.net/2008/12/05/photo-of-the-day-it-looks-like-youre-writing-a-framework/">Gojko Adzic points</a> to <a href="http://www.flickr.com/photos/johnrae/3062622888/">this photo</a> taken at <a href="http://qconsf.com/sf2008/conference/">QCon San Francisco 2008</a> by John Grae. It’s a slide featuring <strong><a href="http://bunkandrambling.com/2006/05/24/ide-feature-request-the-yagni-development-assistant/">YAGNI, the Development Assistant</a></strong>, the programmer’s answer to <a href="http://en.wikipedia.org/wiki/Clippy">“Clippit”, a.k.a. “Clippy”</a>:</p>
<p style="text-align: center"><a href="http://www.flickr.com/photos/johnrae/3062622888/"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="yagni_development_assistant_qcon_slide" border="0" alt="yagni_development_assistant_qcon_slide" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2008/12/yagni-development-assistant-qcon-slide.jpg" width="600" height="400" /></a>     <br /><span class="caption">Photo by John Grae.      <br />Click the photo to see its Flickr page.</span></p>
<p><a href="http://en.wikipedia.org/wiki/You_Ain't_Gonna_Need_It">YAGNI</a>, short for “You Aren’t Gonna Need It” is a development maxim that suggests to programmers that they shouldn’t add features or functionality to applications that aren’t necessary at the moment, but <em>might be </em>in the future. YAGNI has the <a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself">DRY (“Don’t Repeat Yourself”) Principle</a> has a cousin and among its ancestors are <a href="http://en.wikipedia.org/wiki/Occam%27s_razor">Occam’s Razor</a> and the <a href="http://en.wikipedia.org/wiki/KISS_principle">KISS Principle</a> (as in “Keep It Simple, Stupid” and not “I Wanna Rock and Roll All Night (and Party Every Day”).</p>
<p><a href="http://bunkandrambling.com/2006/05/24/ide-feature-request-the-yagni-development-assistant/">YAGNI, the Development Assistant</a> comes from <em><a href="http://bunkandrambling.com/">Bunk and Rambling</a></em>, a blog by Darren Smith, where he put it forth as an IDE feature request back in May 2006, when he wrote:</p>
<blockquote><p>While pair programming helps you to write high quality code in an efficient manner there are times that a pair of programmers will end up going off on a tangent and working on something that ultimately ends up not being necessary. To counter the unbridled enthusiasm that usually causes this to occur I give you Yagni, the Development Assistant.</p>
</blockquote>
<p>YAGNI is meant for developers who believe strongly in test-driven development, so here’s how it would hypothetically pop up if you tried to create a class and started entering non-test methods first:</p>
<p><a href="http://bunkandrambling.com/2006/05/24/ide-feature-request-the-yagni-development-assistant/"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="YAGNI, the Development Assistant: &quot;It appears that you are creating a class without a unit test. Would you like to * discard code? * create unit test?&quot;" border="0" alt="YAGNI, the Development Assistant: &quot;It appears that you are creating a class without a unit test. Would you like to * discard code? * create unit test?&quot;" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2008/12/yagni-development-assistant-1.gif" width="299" height="319" /></a></p>
<p>I’ll leave it to other people to argue over whether or not you <em>always</em> have to have unit tests.&#160; </p>
<p>Here’s another notice from YAGNI:</p>
<p><a href="http://bunkandrambling.com/2006/05/24/ide-feature-request-the-yagni-development-assistant/"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="YAGNI, the Development Assistant: &quot;This development spike appears to be going too long. Would you like to * discard code? * go longer?&quot;" border="0" alt="YAGNI, the Development Assistant: &quot;This development spike appears to be going too long. Would you like to * discard code? * go longer?&quot;" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2008/12/yagni-development-assistant-2.gif" width="299" height="323" /></a></p>
<p>And finally, what I feel is YAGNI’s most important message – a warning that you’re in danger of embarking on a long, “let’s reinvent the wheel” project:</p>
<p><a href="http://bunkandrambling.com/2006/05/24/ide-feature-request-the-yagni-development-assistant/"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="YAGNI, the Development Assistant: &quot;It look like you&#39;re trying to write a framework. Would you like to: * discard code? * find an open source framework instead? * find a new job?&quot;" border="0" alt="YAGNI, the Development Assistant: &quot;It look like you&#39;re trying to write a framework. Would you like to: * discard code? * find an open source framework instead? * find a new job?&quot;" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2008/12/yagni-development-assistant-3.gif" width="299" height="353" /></a></p>
<p>Since YAGNI’s not likely to appear in any IDE soon, you, your pair programming partner or whoever does code reviews with you will have to play its role for the foreseeable future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2008/12/05/it-looks-like-youre-trying-to-stank-up-your-code-would-you-like-some-help/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

