<?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>Pathfinder Software &#187; Blake Smith</title>
	<atom:link href="http://pathfindersoftware.com/author/blake-smith/feed/" rel="self" type="application/rss+xml" />
	<link>http://pathfindersoftware.com</link>
	<description>The Fastest Way to Launch Successful Software</description>
	<lastBuildDate>Thu, 19 Jan 2012 16:31:04 +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>Agile Development and Play: Understanding the Value</title>
		<link>http://pathfindersoftware.com/2009/09/agile-development-play-understanding/</link>
		<comments>http://pathfindersoftware.com/2009/09/agile-development-play-understanding/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 21:03:02 +0000</pubDate>
		<dc:creator>Blake Smith</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[play at work]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=3949</guid>
		<description><![CDATA[My Addiction I&#8217;m addicted to TED talks. There have been many nights where I&#8217;ve stayed up way too late watching them. For those who are unaware, TED is a yearly conference where world leaders and thinkers gather to share their ideas and spread their passions and work. I&#8217;m someone who gets fired up listening to ...]]></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%2Fpathfindersoftware.com%2F2009%2F09%2Fagile-development-play-understanding%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Fagile-development-play-understanding%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<h3>My Addiction</h3>
<p>I&#8217;m addicted to <a href="http://www.ted.com">TED</a> talks. There have been many nights where I&#8217;ve stayed up way too late watching them. For those who are unaware, TED is a yearly conference where world leaders and thinkers gather to share their ideas and spread their passions and work. I&#8217;m someone who gets fired up listening to outher people&#8217;s passions. I love hearing about what gets other people excited, what makes them tick, what makes them want to share with the world.</p>
<p>One of the <a href="http://www.youtube.com/watch?v=RjwUn-aA0VY">more interesting</a> talks I&#8217;ve listened to recently is by Tim Brown at the Serious Play conference of 2008. Tim talks about how the elements of play can improve creativity and productivity in our workplace and life. I found the lessons learned from this talk something that can be very directly applied to software development, and taking some of these nuggets of teaching can help me be a better thinker and worker.</p>
<p><span id="more-3949"></span></p>
<h3>Playing a Game</h3>
<p>The first exercise Tim does is to play a game with the audience. It&#8217;s quite a<br />
sophisticated adult thing to stand up on a stage and spend 20 minutes talking<br />
about play, but it&#8217;s another thing entirely to actually do it. Brown has the<br />
audience perform several games. One of them: Drawing a picture of your neighbor<br />
in 30 seconds. He does this primarily to demonstrate how adults are cultured to<br />
shy away from play. After all, a civilized adult does not seriously use crayons<br />
and markers to do any real work right? After this exercise he talks about how<br />
when this test is given to adults, they often apologize to their neighbor, feel<br />
embarassed, or otherwise don&#8217;t enjoy the play at all. When the same test is<br />
given to a group of children, they don&#8217;t complain or apologize: They simply do<br />
it and have fun with it. This teaches us a valuable lesson about how our<br />
culture is geared toward play. When we&#8217;re younger we go from schools that look<br />
like this:</p>
<div>
<div><a title="overview" href="http://www.flickr.com/photos/59432011@N00/3839524477/" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/3839524477_541224aa9b.jpg" border="0" alt="overview" /></a><br />
<a title="Attribution License" href="http://creativecommons.org/licenses/by/2.0/" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/cc20.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="LizMarie" href="http://www.flickr.com/photos/59432011@N00/3839524477/" target="_blank">LizMarie</a></div>
<p><a title="LizMarie" href="http://www.flickr.com/photos/59432011@N00/3840326276/" target="_blank"></a></div>
<p>And slowly we evolve to workplaces that look like this:</p>
<div><a title="The office" href="http://www.flickr.com/photos/65844741@N00/3276856306/" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/3276856306_61991481bd.jpg" border="0" alt="The office" /></a></div>
<div><a href="http://www.photodropper.com/photos/" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/cc20.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" />photo</a> credit: <a title="Wyscan" href="http://www.flickr.com/photos/65844741@N00/3276856306/" target="_blank">Wyscan</a></div>
<div>That&#8217;s not really too exciting of a thought, is it?</div>
<p>This reminds me of the game that my colleague <a href="http://www.pathf.com/blogs/author/mwalkden/">Michael Walkden</a> played at Agile<br />
Conference 2009. Participants are asked to build a building out of LEGOS, and<br />
through this play, they discover some of the benefits of working with Agile<br />
methods. When Michael was telling me more about his experiences playing this<br />
game with audiences one of the questions I asked him was, &#8220;Don&#8217;t you think if<br />
we did this exercise with a client it&#8217;d be hard to convince them to take<br />
playing a game seriously? Most people would see it as childish.&#8221; To which he<br />
responded yes, sometimes it can be difficult to convince a client to play and<br />
&#8216;get into it&#8217;. There&#8217;s a certain level of discomfort for play that we can have<br />
as adults.  We fear looking stupid, making a fool of ourselves, or getting too<br />
caught up in what we think is the business of children. Michael went on to tell<br />
me that once a client gains a certain level of comfort with playing, the value<br />
gained from doing these kinds of exercises is enormous.</p>
<h3>Modeling a Problem</h3>
<p>Brown goes on to talk about the benefits of rapidly building a physical model<br />
for a problem.  When we were children we learned by touching and doing.  This doesn&#8217;t change when we are adults.  No matter how good we are at thinking abstractly as humans,<br />
there&#8217;s something about having a tangible model to work with that makes<br />
us feel more connected to the work we&#8217;re doing. Something to touch, feel<br />
and hold brings great benefits to our creativity and imagination. This<br />
reminds me of a <a href="http://www.infoq.com/presentations/katz-couchdb-and-me">neat talk</a> I watched by Damien Katz, the creator of CouchDB.  Among other things, Damien talks about when he switched to have CouchDB use HTTP and JSON what he felt like for the first time he could &#8216;touch the data&#8217;:</p>
<blockquote><p>&#8220;I was so excited when I first started testing it out. Because a big<br />
goal with CouchDB was that you would be able to feel like you could <strong>touch<br />
your data</strong>, like it was right there in your hand. There&#8217;re certain tools<br />
where you have this responsiveness and you don&#8217;t feel like there&#8217;s all these<br />
layers between you that are obfuscating what you&#8217;re trying to get<br />
at.&#8221;</p></blockquote>
<p>Isn&#8217;t this something we should set as a design goal for all of our software<br />
projects? Shouldn&#8217;t we strive to have our users feel like they&#8217;re in control of<br />
the computer, and not the other way around? When we use tools that allow us to<br />
quickly and easily touch our ideas, we reap the benefits of not only enjoying<br />
our work more, but being able to flesh it out more quickly and productively.</p>
<p>In Brown&#8217;s talk, he tells a story about how a group of surgeons were trying to<br />
come up with a solution for a new surgical tool. They spent a good amount of time saying something like, &#8220;It&#8217;s sort of like this tool, combined with this other one, but it also has some elements of this tool.&#8221; Finally, one of the surgeons went away for a few minutes, and came back with a white-board marker taped to a handle and said, &#8220;Is it something like this?&#8221;, to which everyone agreed, &#8220;Yeah, that&#8217;s exactly what we need!&#8221;. We see this often with software. &#8220;It&#8217;s kind of like Facebook with a mixture of<br />
Wikipedia, but it focuses around people who study animals professionally.&#8221;<br />
Wouldn&#8217;t it be more powerful to have a working prototype to show what it is? To<br />
let people play with it, to let them touch it and experience it rather than<br />
spend hours in meetings talking about what it? When you&#8217;re stuck in a waterfall<br />
process, it can be easy to get lost in the weeds of abstraction and<br />
uncertainty. Spending months designing specs and not making anything<br />
&#8216;touchable&#8217; can be a long death march that leaves all parties unfulfilled and<br />
unsatisfied. Let&#8217;s spend our time making things that are fun to touch and play<br />
with instead.</p>
<h3>Moving Forward</h3>
<p>So I throw this out as a question to everyone. What do you think about the<br />
current state of play in the software industry? We&#8217;ve seen the power of play,<br />
experimentation and fun in the free software world. Do you think it&#8217;s relevant<br />
in commercial software industry? If so, how can we break down barriers of<br />
discomfort in order to encourage our teams to grow and play?</p>
<p>Related Services:<br />
<a href="http://www.pathf.com/services/how-we-do-it/">Agile Development</a>, <a href="http://www.pathf.com/services">Custom Software Development</a>
<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Fagile-development-play-understanding%2F&amp;linkname=Agile%20Development%20and%20Play%3A%20Understanding%20the%20Value" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Fagile-development-play-understanding%2F&amp;linkname=Agile%20Development%20and%20Play%3A%20Understanding%20the%20Value" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Fagile-development-play-understanding%2F&amp;linkname=Agile%20Development%20and%20Play%3A%20Understanding%20the%20Value" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Fagile-development-play-understanding%2F&amp;linkname=Agile%20Development%20and%20Play%3A%20Understanding%20the%20Value" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Fagile-development-play-understanding%2F&amp;linkname=Agile%20Development%20and%20Play%3A%20Understanding%20the%20Value" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Fagile-development-play-understanding%2F&amp;linkname=Agile%20Development%20and%20Play%3A%20Understanding%20the%20Value" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Fagile-development-play-understanding%2F&amp;linkname=Agile%20Development%20and%20Play%3A%20Understanding%20the%20Value" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Fagile-development-play-understanding%2F&amp;title=Agile%20Development%20and%20Play%3A%20Understanding%20the%20Value" id="wpa2a_2">Share/Bookmark</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pathfindersoftware.com/2009/09/agile-development-play-understanding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Growing Into Pair Programming</title>
		<link>http://pathfindersoftware.com/2009/07/growing-into-pair-programming/</link>
		<comments>http://pathfindersoftware.com/2009/07/growing-into-pair-programming/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 21:26:31 +0000</pubDate>
		<dc:creator>Blake Smith</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Pair Programming]]></category>
		<category><![CDATA[pairing]]></category>
		<category><![CDATA[teamwork]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=3305</guid>
		<description><![CDATA[photo credit: Rennett Stowe For a developer who&#8217;s new to pair programming, it can be overwhelming and difficult to adapt to pair programming practices. As developers, often the natural tendency is to hole away and solve our problems on our own: we thrive on the thrill of achieving the solution. The satisfaction of arriving at ...]]></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%2Fpathfindersoftware.com%2F2009%2F07%2Fgrowing-into-pair-programming%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Fgrowing-into-pair-programming%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div style='float:right;padding:10px'><a href="http://www.flickr.com/photos/10393601@N08/3266003004/" title="Inca Terns" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/3266003004_315892646b_m.jpg" alt="Inca Terns" border="0" /></a><br /><small><a href="http://creativecommons.org/licenses/by/2.0/" title="Attribution License" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/cc15.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/10393601@N08/3266003004/" title="Rennett Stowe" target="_blank">Rennett Stowe</a></small></div>
<p>For a developer who&#8217;s new to pair programming, it can be overwhelming and<br />
difficult to adapt to pair programming practices. As developers, often the natural<br />
tendency is to hole away and solve our problems on our own: we thrive on the<br />
thrill of achieving the solution. The satisfaction of arriving at that solution<br />
on your own can make you feel good, but it has other costs. If you&#8217;re new to<br />
pair programming and feeling initially discouraged about the dynamics of<br />
pairing: Don&#8217;t give up! Pairing is a skill that must be developed and honed just<br />
like any other one.<br />
<span id="more-3305"></span></p>
<h3>Arranging your brain</h3>
<p>One of the interesting things about pair programming is how it exercises<br />
different parts of the brain. Suddenly you are required to manage the social<br />
dynamics and conversation of another person while you are working on the<br />
problem. A solo developer can shut down that &#8216;communication&#8217; side of their<br />
brain, put the blinders on and go (Something that can affect the quality of your<br />
code). If you&#8217;re finding yourself mentally drained at the end of a pairing<br />
filled day, don&#8217;t be discouraged &#8211; these are things that I wrestled with when<br />
learning how to pair. When working solo it&#8217;s much easier to take those 2 minute<br />
breaks to check the latest news headlines or your favorite blogs&#8230; Something<br />
that doesn&#8217;t really happen when you&#8217;re pairing. It&#8217;s so much easier to stay<br />
focused when working with someone else on the problem. As you do it more your<br />
mind will become more comfortable working for those longer stretches of time<br />
(Just don&#8217;t forget to take breaks every once in awhile!).</p>
<h3>Giving up control</h3>
<p>As a programmer, I get great satisfaction out of being the &#8216;master of my<br />
universe&#8217;. I design the objects, the methods, the properties and make the whole<br />
thing fit together. This is all fine and dandy when you&#8217;re developing something<br />
in your basement in your free time, but doesn&#8217;t work so well in a fast paced<br />
business environment. Pairing breaks down the barriers of code ownership and<br />
knowledge hoarding. A poorly designed module or class becomes significantly<br />
harder to rewrite when the functional knowledge of that module is possessed by<br />
only one person. On top of that, the developer is much more likely to feel<br />
resentment about having all of their precious work thrown away even if it is in<br />
the name of better design principles and progress. If you&#8217;re new to pairing you<br />
may feel frustrated by this. The satisfaction of your paired work is often<br />
harder to see if you&#8217;re used to developing solo. Trust me when I say that the<br />
longer you spend pairing, the greater satisfaction you will find from the<br />
ability to tackle tougher problems with the wielded power of two minds working<br />
in unison. That entire database model refactor won&#8217;t seem as daunting or<br />
annoying if you&#8217;ve got somebody to share the ride with.</p>
<h3>Pairing styles</h3>
<p>One thing that&#8217;s neat about pairing with another person is it opens up many<br />
insights into different workflows and ways to tackle problems. People have<br />
different ways to approach a problem, and the knowledge transfer between the two<br />
developers is huge when working as a pair. People also have different styles of<br />
pairing; Some people are more explicit about their thought process and can<br />
articulate very easily what they&#8217;re thinking. Others may need to a little<br />
encouragement to share their thought processes and bring you up to speed.<br />
Keeping on the same page can be difficult at first, especially if you&#8217;re<br />
learning a new framework or programming language. You don&#8217;t want to look like an<br />
ignorant or unknowledgable person. Having the courage to speak up and say, &#8220;You<br />
lost me there, can you go over your thought process one more time?&#8221; is hugely<br />
important.  If you&#8217;re getting left behind during a pairing session and not doing<br />
anything about it, it can nullify the goals of pair programming entirely.<br />
Learning how to manage different pairing styles and how to switch mental gears<br />
quickly and easily can pay large dividends when you master it.</p>
<h3>Final thoughts</h3>
<p>As someone who is new to pair programming, there have been growing pains I have<br />
gone through in order to gain a higher level of development productivity. I&#8217;m<br />
still going through them as I learn new things each day. If you&#8217;re newly<br />
switched to pair programming as a development practice and having trouble<br />
getting used to it right out of the door, be patient. The product of your work<br />
will be much more satisfying if you can share the success of that work with your<br />
fellow developers.</p>
<p>Related Services:  <a href="http://www.pathf.com/services/how-we-do-it/">Agile Development</a>, <a href="http://www.pathf.com/services">Full Life Cycle Software Development</a>
<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Fgrowing-into-pair-programming%2F&amp;linkname=Growing%20Into%20Pair%20Programming" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Fgrowing-into-pair-programming%2F&amp;linkname=Growing%20Into%20Pair%20Programming" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Fgrowing-into-pair-programming%2F&amp;linkname=Growing%20Into%20Pair%20Programming" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Fgrowing-into-pair-programming%2F&amp;linkname=Growing%20Into%20Pair%20Programming" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Fgrowing-into-pair-programming%2F&amp;linkname=Growing%20Into%20Pair%20Programming" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Fgrowing-into-pair-programming%2F&amp;linkname=Growing%20Into%20Pair%20Programming" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Fgrowing-into-pair-programming%2F&amp;linkname=Growing%20Into%20Pair%20Programming" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Fgrowing-into-pair-programming%2F&amp;title=Growing%20Into%20Pair%20Programming" id="wpa2a_4">Share/Bookmark</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pathfindersoftware.com/2009/07/growing-into-pair-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review: Head First Rails</title>
		<link>http://pathfindersoftware.com/2009/07/review-head-first-rails/</link>
		<comments>http://pathfindersoftware.com/2009/07/review-head-first-rails/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 18:24:03 +0000</pubDate>
		<dc:creator>Blake Smith</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[book review]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[OReilly]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=3195</guid>
		<description><![CDATA[Intro Head First Rails by David Griffiths is one of the newer additions to the Head First series by O&#8217;Reilly. It provides an excellent introduction to Web Application development using Rails as the underlying framework. Head First books take a much different approach to learning development subjects than most texts. The pages are filled with ...]]></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%2Fpathfindersoftware.com%2F2009%2F07%2Freview-head-first-rails%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Freview-head-first-rails%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<h2><img class="alignright size-full wp-image-3200" title="headrails" src="http://pathfindersoftware.com/wp-content/uploads/headrails1.gif" alt="headrails" width="180" height="208" style="float:right;padding:10px" />Intro</h2>
<p><a href="http://oreilly.com/catalog/9780596515775/">Head First Rails</a> by David Griffiths is one of the newer additions to the Head First series by O&#8217;Reilly. It provides an excellent introduction to Web Application development using Rails as the underlying framework. Head First books take a much different approach to learning development subjects than most texts. The pages are filled with humorous drawings, novel dialogs, and funny diagrams to keep your brain stimulated (and entertained). This being the first book I&#8217;ve read in the Head First series, I much enjoyed the conversational style and approach David Griffiths took to teaching.<br />
<span id="more-3195"></span></p>
<h2>Starting Off</h2>
<p>The book presents it&#8217;s projects as sets of real world problems. For example, the first problem Griffiths gives you is conveyed as an email from a friend who needs help developing a basic ticketing application for his company. The features and requirements are basic CRUD, and lend themselves to learning about Rails scaffolding. Griffiths covers setting up your rails application, getting your database up and running, models, migrations and other basic essentials.</p>
<p>As the book continues, and as new problems are presented to the user &#8211; Griffiths slowly removes the scaffolding and teaches you the internals and structure of a given Rails application. My favorite parts of the book are titled, &#8220;There are no Dumb Questions&#8221;. This is the kind of section that I would love to see in all programming books I read; especially introductory ones. Many authors tend to take for granted some of the subtleties and &#8216;gotchas&#8217; when teaching a new topic, and this section lends itself quite well to those questions that are often easily skipped. Chapter reviews and short quizzes are also given in several different formats, with the philosophy that everyone has a different learning style &#8211; Quite appropriate if you ask me.</p>
<h2>Dealing with Obstacles</h2>
<p>One of the big hurdles of people who are new to Rails is usually figuring out where everything goes. After starting a new Rails project, it&#8217;s easy to be overwhelmed by all the new files and folders if you&#8217;re not familiar with the directory structure and layout of the framework. Griffiths does an excellent job along the way clarifying what part of the project each item should go in (model, view, controller or otherwise). Coupled with this, he also does an excellent job diagraming the framework execution process as it passes from the user action to routing, controller, model and view (and possibly other intermediate stops). At it&#8217;s core, he&#8217;s trying to teach an <strong>understanding</strong> of the entire process rather than teaching memorization &#8211; something that resonates much better with me.</p>
<h2>Advanced Topics</h2>
<p>The book finishes by touching on some of the more advanced topics of Ajax requests, XML and REST. Although these might seem like daunting topics for an introductory book, Griffiths does a wonderful job keeping things simple, and giving the reader an excellent taste of some of the more powerful avenues of web application development. The focus here is doing something cool: He&#8217;s trying to interest the user&#8217;s imagination and get them excited.</p>
<p>One criticism I have for Head First Rails is it&#8217;s lack of unit and functional testing. It&#8217;s quite possible that a new user might have no interest in learning testing, and thus it might come as an obstacle to enjoying Rails. But seeing as how it&#8217;s a main header on the official <a href="http://guides.rubyonrails.org/testing.html">Rails Guide</a>, I would say that it&#8217;s at least worth a mention. Quoting David Griffith&#8217;s interview about the book:</p>
<blockquote><p><em>&#8220;So really the whole book is about how to do cool things. Like build a custom web application in two minutes. Or manage multiple data sets in a single interface. Or create a mashup with Google maps. Or using Ajax in really practical ways, not just for eye-candy. Cool is really just another word for powerful and I want people to finish this book armed with practical skills that they can apply from the get-go.&#8221;</em></p></blockquote>
<p>Perhaps this is why testing has been excluded from the book. But again, I would have liked to see it touched on &#8211; if only briefly.</p>
<h2>Is Head First Rails worth reading?</h2>
<p>If you&#8217;re looking for a detailed technical manual or API reference, this is definitely not the book you&#8217;re looking for. If you have never done any web application development, and want to try Rails as a way to get started &#8211; This book is for you. Head First Rails assumes you:</p>
<ul>
<li>Are comftorable with HTML</li>
<li>Have experience in another programming language like Java, C#, or PHP</li>
</ul>
<p>Head First Rails provides a clear and easy to follow jump into Rails and works as a great gateway down other web development roads.
<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Freview-head-first-rails%2F&amp;linkname=Review%3A%20Head%20First%20Rails" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Freview-head-first-rails%2F&amp;linkname=Review%3A%20Head%20First%20Rails" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Freview-head-first-rails%2F&amp;linkname=Review%3A%20Head%20First%20Rails" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Freview-head-first-rails%2F&amp;linkname=Review%3A%20Head%20First%20Rails" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Freview-head-first-rails%2F&amp;linkname=Review%3A%20Head%20First%20Rails" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Freview-head-first-rails%2F&amp;linkname=Review%3A%20Head%20First%20Rails" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Freview-head-first-rails%2F&amp;linkname=Review%3A%20Head%20First%20Rails" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F07%2Freview-head-first-rails%2F&amp;title=Review%3A%20Head%20First%20Rails" id="wpa2a_6">Share/Bookmark</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pathfindersoftware.com/2009/07/review-head-first-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (User agent is rejected)
Page Caching using memcached (User agent is rejected)

Served from: pathfindersoftware.com @ 2012-02-09 14:04:22 -->
