<?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>Gojko Adzic &#187; book reviews</title>
	<atom:link href="http://gojko.net/category/book-reviews/feed/" rel="self" type="application/rss+xml" />
	<link>http://gojko.net</link>
	<description>Building software that matters</description>
	<lastBuildDate>Tue, 31 Jan 2012 09:07:39 +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>Clean Coder &#8211; sharpen your professional skills</title>
		<link>http://gojko.net/2011/06/15/clean-coder-sharpen-your-professional-skills/</link>
		<comments>http://gojko.net/2011/06/15/clean-coder-sharpen-your-professional-skills/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 22:57:46 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[book reviews]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[clean coder]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=2467</guid>
		<description><![CDATA[Uncle Bob Martin&#8217;s eagerly awaited sequel to Clean Code, cleverly named The Clean Coder, is a powerful argument for professionalism in software development. People who&#8217;ll benefit from this book the most are programmers at the start of their careers or those who are burned out and work with software and...]]></description>
			<content:encoded><![CDATA[<p><img style="float:left; border:1px solid black; margin:5px 5px 5px 5px" src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&#038;Format=_SL160_&#038;ASIN=0137081073&#038;MarketPlace=US&#038;ID=AsinImage&#038;WS=1&#038;tag=swingwiki-20&#038;ServiceVersion=20070822" />Uncle Bob Martin&#8217;s eagerly awaited sequel to Clean Code, cleverly named <a href="http://www.amazon.com/gp/product/0137081073/ref=as_li_ss_tl?ie=UTF8&#038;tag=swingwiki-20&#038;linkCode=as2&#038;camp=217145&#038;creative=399373&#038;creativeASIN=0137081073">The Clean Coder</a><img src="http://www.assoc-amazon.com/e/ir?t=&#038;l=as2&#038;o=1&#038;a=0137081073&#038;camp=217145&#038;creative=399373" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, is a powerful argument for professionalism in software development. People who&#8217;ll benefit from this book the most are programmers at the start of their careers or those who are burned out and work with software and companies plagued by technical and organisational issues. The book has a lot of sound advice to offer, in particular around commitment, planning and estimation, personal ethics and collaboration, as well as an overview of techniques such as TDD, pair programming, and automated acceptance testing. </p>
<p>The gist of the book is, for me, captured in the following quotes:</p>
<ul>
<li>You can&#8217;t take pride and honor in something that you can&#8217;t be held accountable for</li>
<li>QA should find nothing</li>
<li>The true professional knows that delivering function at the expense of structure is a fool&#8217;s errand.</li>
<li>Woe to the software developer who entrusts his career to his employer.</li>
<li>Professionals speak truth to power. Professionals have the courage to say no to their managers.</li>
</ul>
<p>Those who don&#8217;t suffer that much from poor team or software will not benefit that much from The Clean Coder, but there are a few gems in for them as well. I found the argument against flow (or &#8220;The Zone&#8221;) particularly interesting, as I&#8217;ve never looked at the topic in the way described in the book. References to probability based estimation were also interesting, as well as explanations of some more exotic time management strategies.  Most importantly, through many interesting war stories, we as readers get to peek into Uncle Bob&#8217;s experience and learn from his mistakes.  </p>
<p>If I was picky and had to choose a few negative things to say, I&#8217;d probably point out the start of the book as unnecessarily off-putting and negative. It paints a picture with a clear adversarial relationship between programmers and management or clients, which doesn&#8217;t really match my background or current situation. Sure there have been a few bad apples in my project basket, but the picture painted was a bit too negative for my taste. On the other hand, people who need to hear the message of this book will probably identify with that dark painting of their reality.  I&#8217;ve also never been good at reading books with lots of invented dialogue, something in my reading circuits makes me skip invented conversations. This made it hard to follow the flow of thoughts in some parts of the book but it has more to do with my attention deficit and reading skills than the book itself. </p>
<p>So to conclude, this book is not going to replace the Pragmatic Programmer as my favourite &#8220;you have to read this first&#8221; suggestion to new members of our profession, but it deserves to be on that list. </p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2011/06/15/clean-coder-sharpen-your-professional-skills/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Magic of Thinking Big</title>
		<link>http://gojko.net/2011/01/25/the-magic-of-thinking-big/</link>
		<comments>http://gojko.net/2011/01/25/the-magic-of-thinking-big/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 16:00:53 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[book reviews]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=2207</guid>
		<description><![CDATA[The Magic of Thinking Big by David J. Schwartz is an attitude adjustment psychology book that with a core idea that “thinking big” is a crucial element of success. “Thinking big”, according to the author, is creating a positive, optimistic and enthusiastic attitude towards people, work and lifestyle challenges. The...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/product/0671646788?ie=UTF8&#038;tag=swingwiki-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0671646788">The Magic of Thinking Big by David J. Schwartz</a> is an attitude adjustment psychology book that with a core idea that “thinking big” is a crucial element of success. “Thinking big”, according to the author, is creating a positive, optimistic and enthusiastic attitude towards people, work and lifestyle challenges.  The author also argues for not wasting time on negative things and thoughts that are meaningless in the big scheme of things (hence the title). Recognise the core domain/purpose alignment model idea? Similar to the way <a href='http://gojko.net/?p=2165'>The Four Hour Work Week</a> explains the effect of good software design practices apply to lifestyle choices, the book uses many of the ideas and advices that I apply in software process management to lifestyle design. <span id="more-2207"></span></p>
<p>The major themes in the book are curing from “excusits”, building confidence, getting into the action habit and using goals to help grow. As far as self-help psychology books go, this one is relatively interesting. It was recommended to me as “amazing” and “life-changing” but I wouldn&#8217;t go as far as calling it that. Actually, I did not read any revolutionary new ideas but it reminded me of some thoughts and attitudes I once had but lost for mysterious reasons. After being re-Gojkod, it was well worth the few pounds I paid for it. </p>
<p>The idea of “excusitis” really resonated with me as I still think that “provide options, not excuses” from Pragmatic Programmers is the best work related advice I&#8217;ve ever got, and it brought me much money and joy since I read that book over 10 years ago.</p>
<p>Another interesting idea is creating a weekly improvement programme, which the author attributes to an anonymous store owner with a stellar success. She explained it as collecting notes on how she can improve her business during the week, and then spending four hours to review those ideas every Monday evening. During the review, she identifies solid ideas and thinks about how to put them to business.  </p>
<p>The third idea that stuck with me is “It&#8217;s very refreshing to mix with people who do something else for a living”. As a result, I decided to attend some non-software conferences this year. </p>
<p>The fourth interesting idea is a three-step procedure for generating enthusiasm about a topic: Dig Into It Deeper (learn more about it), Live it Up (do a good job, ensure that you are doing the most you can) and Broadcast Good News (let people know when they have done a good job, not just when they screw up). </p>
<p>The book has lots of other uplifting thoughts, unfortunately backed by mostly by anonymous anecdotal evidence (eg “a little over two years ago a young man asked me to help him&#8230;”). It often sounds silly. I like the message, but I&#8217;d love more serious explanations and better case studies. It also contains lots of (seemingly good) career advice aimed at people working for large companies that don&#8217;t really apply to me. As the first edition was published quite a while ago, it is also funny to read in places. For example, it lists examples where someone was earning $25 a week, or categorises highly successful people as the ones who earn more than $15000 yearly. </p>
<p>The book is full of great quotes. Here are my favourites:</p>
<ul>
<li>Thoughts, positive or negative, grow stronger when fertilized with constant repetition
</li>
<li>It&#8217;s better to wear out than rust out
</li>
<li>Stickability is 95% of ability
</li>
<li>Knowledge is power only when put to use
</li>
<li>Action cures fear. Indecision, postponement, on the other hand fertilize fear.
</li>
<li>Use Action to cure fear and gain confidence.
</li>
<li>Waiting even makes the experts nervous.
</li>
<li>“Motions are the precursors of emotions” &#8211; attributed to George W. Crane
</li>
<li>When you believe, your mind finds ways to do
</li>
<li>Eliminate the word impossible from your thinking and speaking vocabularies. Impossible  is a failure word
</li>
<li>“Man belongs where man wants to go”, attributed to Wernher von Braun.
</li>
<li>“There are many ways in which a good job can be done – as many ways in fact as there are men to whom the task is given”- attributed to Crawford H. Greenewalt
</li>
<li>It isn&#8217;t so much what you know when you start that matters. It&#8217;s what you learn and put to use after you open your doors that counts most.
</li>
<li>Progress is our most important product (slogan of General Electric at the time when the book  was written).
</li>
<li>People who tell you it cannot be done almost always are unsuccessful people, are strictly average or mediocre at best in terms of accomplishment. Opinions of these people can be poison.
</li>
<li>Go First Class when you have questions.
</li>
<li>(on buying expensive advice or services) “but I can&#8217;t afford to go first class”. The simplest answer is: you cannot afford to go any other way.
<div style="float:left; width:120px; margin-right:40px">
<iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=swingwiki-20&#038;o=1&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=10FE9736YVPPT7A0FBG2&#038;asins=0671646788" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</div>
</li>
<li>[in adverts] “these headlines in effect tell people: buy this product and you put yourself in an important class”
</li>
<li>People do more for you when you make them feel important.
</li>
<li>The seed of money is service. That&#8217;s why “put service first” is an attitude which creates wealth. Put service first and the money takes care of itself.
</li>
<li>Always give people more than they expect to get
</li>
<li>A goal is more than a dream. A goal is a dream acted upon.
</li>
<li>You are not pulled to high levels of success. Rather you are lifted there by those working beside and below you. </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2011/01/25/the-magic-of-thinking-big/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Applying good software design practices to a lifestyle</title>
		<link>http://gojko.net/2011/01/18/what-do-you-get-when-you-apply-good-software-design-practices-to-a-lifestyle/</link>
		<comments>http://gojko.net/2011/01/18/what-do-you-get-when-you-apply-good-software-design-practices-to-a-lifestyle/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 12:00:11 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[book reviews]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=2165</guid>
		<description><![CDATA[Q: What do you get when you apply good software design practices to a lifestyle A: A Four-Hour Work Week I&#8217;ve been ranting about a book with that title long enough that I really have to publish a blog review. The Four Hour Work Week by Tim Ferriss is sort...]]></description>
			<content:encoded><![CDATA[<p>Q: What do you get when you apply good software design practices to a lifestyle</p>
<p>A: A Four-Hour Work Week<span id="more-2165"></span></p>
<p>I&#8217;ve been ranting about a book with that title long enough that I really have to publish a blog review. <a href='http://www.amazon.com/gp/product/0307353133?ie=UTF8&#038;tag=swingwiki-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0307353133'>The Four Hour Work Week</a> by Tim Ferriss is sort of a manifesto for a mobile life style. The author describes his journey from a small company owner who was in reality owned by the company to a globetrotting, cage-fighting, tango-record-winning, break-dancing company owner who spends four hours a week working (hence the name) to sustain such a lifestyle. It made me think seriously about my work, life and everything. (I&#8217;ll skip the universe to avoid a worn-out quote. Anyway, the book does not really have to say anything about astronomy).</p>
<p>And no, you won&#8217;t see me on MTV in Taiwan next week trying my latest break-dancing moves. This is not why this book was interesting to me. As a firm believer in modern software value-driven processes, it was fascinating to read about someone taking all those great ideas we apply to design software that matters and apply that to design a company and ultimately a lifestyle.  Ferriss&#8217; journey to his four hours per week is essentially a story about thinking really hard about value chains, finding the elusive core domain and focusing exclusively on that, outsourcing, delegating and automating the rest. Unsurprisingly, this has allowed him to increase his personal financial productivity while significantly reducing the amount of work he does. </p>
<p>Ferriss&#8217; plan revolves around four ideas summarised by the acronym DEAL:</p>
<ul>
<li>
Definition – What is it that really brings in the money? Is that the right thing? What is just stuff that doesn&#8217;t really contribute? What&#8217;s not core?
</li>
<li>
Elimination – kill distractions and low-value work
</li>
<li>
Automation – automate critical low-value work, outsource what can&#8217;t be automated
</li>
<li>
Liberation – do whatever you always wanted to do with the spare time
</li>
</ul>
<p>The main argument of the book is that by following the ideas other people can significantly increase their effectiveness as well and then decide what to do with the remaining time, for example travel the world. My problem with this is that I love what I do, so reducing the amount of time I work is not necessarily my goal. So I don&#8217;t intend on flying over to east Asia to become a cage fighter, but the book made me think about spotting and reducing non-core low-value work I do personally. For example, I&#8217;ve taken the advice to hire a virtual PA to help with all the bureaucracy of running a small consultancy and I&#8217;m looking at outsourcing some other non-core work to other people, such as organising travel plans. I&#8217;ve also started looking seriously at information overload and the way it effects my productivity. I&#8217;ve turned off all e-mail alerts and started batching such work instead of letting it interrupt me. </p>
<p>Ferriss gives lots of examples of people following similar paths to design their own lifestyle and work, from employees of big companies to business owners. The book is quite dogmatic, presenting decisions without really explaining why they are right or trying to take a critical view at them, but it is fun to read. It is filled with interesting stories, motivational quotes and lots of references for further research into different options for automation and outsourcing of non-core work. </p>
<div style="width:120px;float:left; margin-right:50px;">
<iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=swingwiki-20&#038;o=1&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=10FE9736YVPPT7A0FBG2&#038;asins=0307353133" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></div>
<p>Here are some of my favourite quotes and ideas from the book:</p>
<ul>
<li> “If a recipe sucks, it doesn&#8217;t matter how good a cook you are.”</li>
<li>When dealing with something unknown, look up the biggest experts and send them e-mails, chances are they will reply (Ferriss used that approach to get his book published and offers several other examples of that)</li>
<li>“meetings are an addictive, highly self-indulgent activity that corporations and other organisations habitually engage in only because they cannot  actually masturbate” &#8211; attributed to Dave Barry</li>
<li>“Don&#8217;t suffer fools or you&#8217;ll become one”</li>
<li>“Set the rules in your favour: limit access to your time, force people to define their requests before spending time with them, and batch routine menial tasks to prevent postponement of more important projects.”</li>
<li>“The first rule of any technology used in a business is that automation applied to an efficient operation will magnify the efficiency. The second is that automation applied to an inefficient operation will magnify the inefficiency” &#8211; attributed to Bill Gates.</li>
</ul>
<p>So far, this is my favourite personal productivity book and it deserves to be read by anyone in software development as much as something like The Pragmatic Programmer. </p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2011/01/18/what-do-you-get-when-you-apply-good-software-design-practices-to-a-lifestyle/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Building software that matters: two books you absolutely have to read</title>
		<link>http://gojko.net/2010/01/18/building-software-that-matters-two-books-you-absolutely-have-to-read/</link>
		<comments>http://gojko.net/2010/01/18/building-software-that-matters-two-books-you-absolutely-have-to-read/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 11:20:17 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[book reviews]]></category>
		<category><![CDATA[bsm]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=1570</guid>
		<description><![CDATA[I recently came across two books that fit the Building software that matters theme perfectly, and deserve to be read by anyone managing a software project, running a development team or generally serious about delivering software. Both books tackle topics so difficult that development teams often just push the responsibility...]]></description>
			<content:encoded><![CDATA[<p>I recently came across two books that fit the <a href="/tag/bsm">Building software that matters</a> theme perfectly, and deserve to be read by anyone managing a software project, running a development team or generally serious about delivering software. Both books tackle topics so difficult that development teams often just <a href="http://gojko.net/2009/10/01/the-mythical-customer-problem/">push the responsibility for them to the customer, expecting some kind of magical resolution</a>. <span id="more-1570"></span></p>
<blockquote><p>Developers prefer to talk in terms of value generation without developing related revenue projections. Business stakeholders usually don&#8217;t realize that delivery sequences and architectural options have a significant impact on project level ROI. Clearly, software development requires a more financially responsible approach […]. This situation clearly calls for a close collaboration between developers and business stakeholders.</p></blockquote>
<p>The previous paragraph pretty much sums up the basic idea of <a href="http://www.amazon.com/gp/product/0131407287?ie=UTF8&#038;tag=swingwiki-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0131407287">Software by Numbers: Low-Risk, High-Return Development</a><img src="http://www.assoc-amazon.com/e/ir?t=swingwiki-20&#038;l=as2&#038;o=1&#038;a=0131407287" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Mark Denne and Jane Cleland-Huang. Iterative delivery and fast roll-out to production makes perfect sense and I do not think that anyone can doubt that, but can you actually put a value on it? Can you compare two alternative delivery plans for the same project? Denne and Cleland-Huang set to do exactly that. By developing a financial model to evaluate and compare delivery plans, the authors show how to make an informed decision about prioritisation on a project so that it maximises the desired financial effect, either reducing risk, optimising cash-flow or return on investment. </p>
<p>Denne and Cleland-Huang explain how to identify and evaluate the financial impact of Minimum Marketable Features, including “intanglibles” such as brand value or customer retention. Then they develop a system of heuristics that combines this information with technical and architectural constraints, prerequisites and timing constraints to come up with the best possible delivery plan, depending on what you want to achieve. Through several case studies, they show how just choosing the next most important thing isn&#8217;t as nearly as effective as considering the financial impact of the entire delivery plan. Somewhere in the middle, they also come up with a way to estimate the financial impact of the project by forces other than black magic which helps us answer a key question: should we do this at all or should we do something else?</p>
<p><a href="http://www.amazon.com/gp/product/8763001764?ie=UTF8&#038;tag=swingwiki-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=8763001764">Effect Managing It</a><img src="http://www.assoc-amazon.com/e/ir?t=swingwiki-20&#038;l=as2&#038;o=1&#038;a=8763001764" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, by Mijo Balic and Ingrid Ottersten, deals with things that happen even earlier in the process – coming up with a list of features to achieve the desired business effect. Instead of focusing on functionality, Balic and Ottersten look at software projects as agents of business transformation. The authors argue that the ultimate goal of software projects is to achieve a business change, and that one of the key reasons for failure of so many projects is that the focus is often on the wrong things. They explain a model of structuring requirements analysis in a way that ensures achieving the desired business effect. That focus on business impact, not functionality or technology, is what they call “Effect Managing”. </p>
<p>Effect Managing shares many key ideas with behaviour-driven development and agile acceptance testing, but deals with things that are much earlier in the development cycle.  Balic and Ottersten base their model on first considering who can deliver the desired change (stakeholders in the BDD lingo), then thinking about how these people can deliver it and what the software needs to do to support that that. Organising all these ideas in a hierarchy which they call an “Effect Map”,  this model provides visibility similar to the <a href="gojko.net/2006/10/22/magic-of-goals/">Goals-Features-Requirements</a> model, but in my opinion much more effective because it is visual. After trying out effect maps on two projects, I&#8217;m astonished how they open up a discussion and provide structure to the process of selecting the features for a project and probably equally important throwing away features that are less important. </p>
<p>Be warned, though, that both books are relatively hard to read. Although they are short, less than 200 pages each, the flow of ideas in both books is a bit hard to follow. Effect Managing IT at times reads like a literal translation (from what I understand, the original book was written in Swedish) and Software by Numbers is full of financial tables and formulas. Nevertheless, I think that both books have such great value that getting through them is well worth it.</p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2010/01/18/building-software-that-matters-two-books-you-absolutely-have-to-read/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dark arts of TDD explained</title>
		<link>http://gojko.net/2009/11/20/dark-arts-of-tdd-explained/</link>
		<comments>http://gojko.net/2009/11/20/dark-arts-of-tdd-explained/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 09:58:49 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[book reviews]]></category>
		<category><![CDATA[mock]]></category>
		<category><![CDATA[mocking]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=1396</guid>
		<description><![CDATA[Growing Object Oriented Software, Guided by Tests, by Steve Freeman and Nat Pryce is a TDD book, but unlike any other on the market today. First of all, the book deals mostly with advanced unit testing topics, such as designing tests for readability and mocking, and addresses many common stumbling...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/product/0321503627?ie=UTF8&#038;tag=swingwiki-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0321503627"><img align="left" border="0" src="/images/51fQ0%2B5W%2BkL._SL160_.jpg" style="margin:5px 5px 5px 5px"/></a><img src="http://www.assoc-amazon.com/e/ir?t=swingwiki-20&#038;l=as2&#038;o=1&#038;a=0321503627" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /><a href="http://www.amazon.com/gp/product/0321503627?ie=UTF8&#038;tag=swingwiki-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0321503627">Growing Object Oriented Software, Guided by Tests</a>, by <a href="http://www.m3p.co.uk/blog">Steve Freeman</a> and <a href="http://www.natpryce.com/">Nat Pryce</a> is a TDD book, but unlike any other on the market today. First of all, the book deals mostly with advanced unit testing topics, such as designing tests for readability and mocking, and addresses many common stumbling points that people experience with unit testing a few years after they started their journey, such as applying unit testing in multi-threaded and asynchronous environments. Second, it explains and demonstrates in practice the dynamics of designing software through TDD, which is still a dark art for many programmers. And third, it gives the reader insight into Freeman&#8217;s and Pryce&#8217;s brains, which is why this book is a must-read for anyone serious about unit testing, even to people that have been doing it in the last century. <span id="more-1396"></span></p>
<p>Given the authors&#8217; backgrounds, it&#8217;s not surprising that this book has a lot to say about using mock object libraries. Mock objects are arguably the most misunderstood and misused concept in software development today, so this book should be a valuable resource for most software development teams. In the part dealing with mock objects you will find strategies for using them successfully for software design, guidelines what to mock and what not to mock and lots of examples how all that looks in code.</p>
<p>The book isn&#8217;t written in the usual imperative way (“you should use this because of&#8230;”) but reads much more as an experience report (“we use this because of”). This might be unusual at first but I really like it, as it puts the things into a much more different perspective. Many of the topics addressed by this book are quite controversial and the authors have wisely chosen the voice to avoid any notion of preaching. I found myself disagreeing with parts, especially around bundling acceptance and end-to-end testing together. However, as the material doesn&#8217;t preach but tell what the authors are thinking about, this did not bother me at all.</p>
<p>All in all, an excellent book. <a href="http://www.amazon.com/gp/product/0321503627?ie=UTF8&#038;tag=swingwiki-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0321503627">Grab a copy from Amazon now.</a></p>
<p>Here are some related links: </p>
<ul>
<li><a href="http://gojko.net/2009/09/21/mocks-are-not-about-isolation-but-about-responsibilities/">notes from Steve Freeman&#8217;s presentation on mock objects at CITCON Europe 09</a></li>
<li><a href="http://www.growing-object-oriented-software.com/">book web site</a></li>
<li><a href="http://www.m3p.co.uk/blog">Steve Freeman&#8217;s blog</a></li>
<li><a href="http://www.natpryce.com/">Nat Pryce&#8217;s blog</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2009/11/20/dark-arts-of-tdd-explained/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

