<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-8696186.comments</id><updated>2012-05-16T16:47:12.719-03:00</updated><category term='code style'/><category term='python swig c threads'/><category term='visual studio assemblies 2008 manifest debug mfc c++ runtime'/><category term='programming'/><title type='text'>SandyWalsh.com</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.sandywalsh.com/feeds/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/comments/default'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/comments/default?start-index=26&amp;max-results=25'/><author><name>@TheSandyWalsh</name><uri>http://www.blogger.com/profile/17478332939768000715</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_Al595rN4OWo/S5o-MXFWibI/AAAAAAAAAFk/TKOxZTZ7w4A/S220/me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>89</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8696186.post-9106935969538655970</id><published>2012-05-16T07:55:09.203-03:00</published><updated>2012-05-16T07:55:09.203-03:00</updated><title type='text'>Reminded me of this &amp;quot;Friends&amp;quot; episode : ...</title><content type='html'>Reminded me of this &amp;quot;Friends&amp;quot; episode : http://en.wikipedia.org/wiki/The_One_Where_Rachel_Smokes</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/8477758067095836356/comments/default/9106935969538655970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/8477758067095836356/comments/default/9106935969538655970'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2012/03/out-of-band-communications.html?showComment=1337165709203#c9106935969538655970' title=''/><author><name>Mandar Vaze</name><uri>http://www.blogger.com/profile/07681334359016812071</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2012/03/out-of-band-communications.html' ref='tag:blogger.com,1999:blog-8696186.post-8477758067095836356' source='http://www.blogger.com/feeds/8696186/posts/default/8477758067095836356' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1550587712'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='7:55 AM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-1678178807069842841</id><published>2012-03-29T09:21:15.792-03:00</published><updated>2012-03-29T09:21:15.792-03:00</updated><title type='text'>Very insightful!  20 years ago my VP knew this and...</title><content type='html'>Very insightful!  20 years ago my VP knew this and would send me out daily to smoke with folks in different departments JUST to keep a pulse on these OOB conversations.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/8477758067095836356/comments/default/1678178807069842841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/8477758067095836356/comments/default/1678178807069842841'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2012/03/out-of-band-communications.html?showComment=1333023675792#c1678178807069842841' title=''/><author><name>babul</name><uri>http://www.blogger.com/profile/16618550808769259574</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2012/03/out-of-band-communications.html' ref='tag:blogger.com,1999:blog-8696186.post-8477758067095836356' source='http://www.blogger.com/feeds/8696186/posts/default/8477758067095836356' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-916017153'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='9:21 AM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-9074785779313389622</id><published>2012-03-27T13:48:00.936-03:00</published><updated>2012-03-27T13:48:00.936-03:00</updated><title type='text'>You&amp;#39;ve totally nailed it.

As a developer that...</title><content type='html'>You&amp;#39;ve totally nailed it.&lt;br /&gt;&lt;br /&gt;As a developer that works primarily remotely, I encounter this issue quite often. On-site developers work together, making decisions over coffee or just chatting in their cubicles, and information doesn&amp;#39;t filter down to those not present. This can even lead to divergent designs for related feature sets and technical debt.&lt;br /&gt;&lt;br /&gt;Lots of the right hand now knowing what the left hand is doing.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/8477758067095836356/comments/default/9074785779313389622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/8477758067095836356/comments/default/9074785779313389622'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2012/03/out-of-band-communications.html?showComment=1332866880936#c9074785779313389622' title=''/><author><name>Anthony Neal</name><uri>http://www.blogger.com/profile/10849875602186147089</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2012/03/out-of-band-communications.html' ref='tag:blogger.com,1999:blog-8696186.post-8477758067095836356' source='http://www.blogger.com/feeds/8696186/posts/default/8477758067095836356' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1492397376'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='1:48 PM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-6924117025813109349</id><published>2012-02-03T10:23:14.506-04:00</published><updated>2012-02-03T10:23:14.506-04:00</updated><title type='text'>Nicely put Sandy. This is a road I have travelled ...</title><content type='html'>Nicely put Sandy. This is a road I have travelled many times and all the routes you discuss here. I can&amp;#39;t make comment on the developer connection, but I burned wood for over 25 years and obtained it in many ways. While living in Dartmouth in our first house, I bought 8&amp;#39; lengths and bought a chainsaw to &amp;quot;chunk&amp;quot; it up my self. A ton of work but great exercise like you say. I rented a gas powered splitter a few times, but mostly I split by hand. This was a fantastic process, not just exercise, but it grew to be a very Zen like activity for me. Sort of at one with the edge of my splitting axe and the grain of the log. I know. I eventually moved to the Valley and bought a 16&amp;#39; flat bead trailer, truck, more saws and even sold wood for a while. Big investment. My next step was to open my own Wood Stove store which I ran successfully for 20 years. I became WETT certified in 89 and was National President then President of WETT Nova Scotia for quite a while. All this time advising folks on how to cleanly and safely process their own firewood. We will have to chat about this more over something aged in Wood barrels Sir. Oh and by the way, a face cord is an illegal measure for firewood in Canada. Worked on a project with Measurement Canada. &lt;br /&gt;&lt;br /&gt;Later</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/1191291004776050839/comments/default/6924117025813109349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/1191291004776050839/comments/default/6924117025813109349'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2010/11/buying-firewood-aka-becoming-shirt.html?showComment=1328278994506#c6924117025813109349' title=''/><author><name>flhrsi</name><uri>http://www.blogger.com/profile/00796588151533331591</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/__xSn_UL5lZw/TA2iSHoyPQI/AAAAAAAAAA8/kMEjFU6mjRA/S220/DSC08140.JPG'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2010/11/buying-firewood-aka-becoming-shirt.html' ref='tag:blogger.com,1999:blog-8696186.post-1191291004776050839' source='http://www.blogger.com/feeds/8696186/posts/default/1191291004776050839' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1375134497'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='10:23 AM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-7343859764211912319</id><published>2011-11-29T16:17:55.485-04:00</published><updated>2011-11-29T16:17:55.485-04:00</updated><title type='text'>This is a good point Sandy. It&amp;#39;s also a proble...</title><content type='html'>This is a good point Sandy. It&amp;#39;s also a problem when you are doing funky RPC casts that are no longer sending the correct type of data the end function is expecting (ran into this today in OpenStack).&lt;br /&gt;&lt;br /&gt;Another supporting point for static type-checking is that programmers are lazy and don&amp;#39;t always go out of their way to inspect for everything that is calling a function. If someone is reviewing code, it&amp;#39;s hard to go behind everyone and make sure they do this.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/5904795609663683261/comments/default/7343859764211912319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/5904795609663683261/comments/default/7343859764211912319'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/08/pain-of-unit-tests-and-dynamically.html?showComment=1322597875485#c7343859764211912319' title=''/><author><name>Alex Meade</name><uri>http://www.blogger.com/profile/15168754690884554137</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/08/pain-of-unit-tests-and-dynamically.html' ref='tag:blogger.com,1999:blog-8696186.post-5904795609663683261' source='http://www.blogger.com/feeds/8696186/posts/default/5904795609663683261' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1325112385'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='4:17 PM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-974745948030930482</id><published>2011-11-22T12:08:44.574-04:00</published><updated>2011-11-22T12:08:44.574-04:00</updated><title type='text'>Good post, Sandy. I disagree on a couple of points...</title><content type='html'>Good post, Sandy. I disagree on a couple of points, though.&lt;br /&gt;&lt;br /&gt;I&amp;#39;m much, much, much more comfortable using fakes that maintain some amount of state than relying on the continued correctness of thousands of ad-hoc mocks objects. If the fake exposes more than a couple(!) of methods, I just add tests for the fake. I can run the tests against the real thing and against my fake, and see that they do the same thing. This pattern has served me quite well a number of times now. The amount of ad-hoc mock objects we have in Nova right now gives me the heebie jeebies. A method that mocks out a call to the db layer returning an object with an attribute that has since been moved could go unnoticed for months until some almost entirely unrelated change reveals that something has changed incompatibly. This is pain to clean up after.&lt;br /&gt;&lt;br /&gt;I disagree about your 80%/20% thing. I think unit tests are even *more* important for the things that only 20% of your users use. If the stuff that everyone uses breaks, you&amp;#39;ll find out in a jiffy and someone will always be up for contributing tests for that. The exotic stuff is exactly the sort of stuff you need help verifying.&lt;br /&gt;&lt;br /&gt;I think your example of a method that doesn&amp;#39;t need unit tests is much too general. Sure, I can think of many examples where such a method could acceptably be untested by unit tests, but in many cases, the correct, expected behaviour of that foo() method is exactly to execute those three methods in that exact order. If your mock library of choice doesn&amp;#39;t let you verify this easily, I&amp;#39;d certainly whip up an ad-hoc mock that does.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/1478186483478607934/comments/default/974745948030930482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/1478186483478607934/comments/default/974745948030930482'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/06/effective-units-tests-and-integration.html?showComment=1321978124574#c974745948030930482' title=''/><author><name>Soren Hansen</name><uri>http://www.blogger.com/profile/14840088470490315368</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/06/effective-units-tests-and-integration.html' ref='tag:blogger.com,1999:blog-8696186.post-1478186483478607934' source='http://www.blogger.com/feeds/8696186/posts/default/1478186483478607934' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1693931139'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='12:08 PM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-8635501284983751599</id><published>2011-09-30T11:42:53.236-03:00</published><updated>2011-09-30T11:42:53.236-03:00</updated><title type='text'>@ryan, I agree, but I think you&amp;#39;re missing the...</title><content type='html'>@ryan, I agree, but I think you&amp;#39;re missing the point of my post.&lt;br /&gt;&lt;br /&gt;Testing the inputs and return types on a unit testing basis won&amp;#39;t solve the problem when you&amp;#39;re using a dynamically typed language. You *have* to do integration testing.&lt;br /&gt;&lt;br /&gt;Otherwise, your tests will pass, but the program will fail in the field (since the inputs and/or output no longer match).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/5904795609663683261/comments/default/8635501284983751599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/5904795609663683261/comments/default/8635501284983751599'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/08/pain-of-unit-tests-and-dynamically.html?showComment=1317393773236#c8635501284983751599' title=''/><author><name>@TheSandyWalsh</name><uri>http://www.blogger.com/profile/17478332939768000715</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_Al595rN4OWo/S5o-MXFWibI/AAAAAAAAAFk/TKOxZTZ7w4A/S220/me.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/08/pain-of-unit-tests-and-dynamically.html' ref='tag:blogger.com,1999:blog-8696186.post-5904795609663683261' source='http://www.blogger.com/feeds/8696186/posts/default/5904795609663683261' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-580399367'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='11:42 AM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-7480587374592437794</id><published>2011-09-30T10:11:28.651-03:00</published><updated>2011-09-30T10:11:28.651-03:00</updated><title type='text'>The contract of compute() includes both it&amp;#39;s r...</title><content type='html'>The contract of compute() includes both it&amp;#39;s return type(s), and what it does.  In a statically typed world, we&amp;#39;re used to leaning on the compiler for the prior, and using unit tests to enforce the latter.  But in a dynamically typed world, we need to explicitly test return types in our contract tests as well.&lt;br /&gt;&lt;br /&gt;Arguably, integration tests are a crutch for when you&amp;#39;re not completely testing the contract of a service/interface that your other unit tests are mocking/stubbing.&lt;br /&gt;&lt;br /&gt;(In the real world, the crutch is often useful or necessary, but I still like to lean on it as little as possible.)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/5904795609663683261/comments/default/7480587374592437794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/5904795609663683261/comments/default/7480587374592437794'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/08/pain-of-unit-tests-and-dynamically.html?showComment=1317388288651#c7480587374592437794' title=''/><author><name>Ryan Cooper</name><uri>http://www.blogger.com/profile/08635857155555755249</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_EabzIfG8tEo/SjfuU3wEVnI/AAAAAAAAAAM/meYoLpsNTNY/S220/me4.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/08/pain-of-unit-tests-and-dynamically.html' ref='tag:blogger.com,1999:blog-8696186.post-5904795609663683261' source='http://www.blogger.com/feeds/8696186/posts/default/5904795609663683261' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1323022998'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='10:11 AM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-4864205204418098721</id><published>2011-09-01T21:29:34.071-03:00</published><updated>2011-09-01T21:29:34.071-03:00</updated><title type='text'>@robinbb ... heh, well let&amp;#39;s not go crazy now....</title><content type='html'>@robinbb ... heh, well let&amp;#39;s not go crazy now. I thought you would have enjoyed by little subtle dig of &lt;br /&gt;&lt;br /&gt;# 100 lines of C&lt;br /&gt;&lt;br /&gt;:)&lt;br /&gt;&lt;br /&gt;There a good summary of hybrid languages here: http://en.wikipedia.org/wiki/Type_system#Combinations_of_dynamic_and_static_typing</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/5904795609663683261/comments/default/4864205204418098721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/5904795609663683261/comments/default/4864205204418098721'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/08/pain-of-unit-tests-and-dynamically.html?showComment=1314923374071#c4864205204418098721' title=''/><author><name>@TheSandyWalsh</name><uri>http://www.blogger.com/profile/17478332939768000715</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_Al595rN4OWo/S5o-MXFWibI/AAAAAAAAAFk/TKOxZTZ7w4A/S220/me.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/08/pain-of-unit-tests-and-dynamically.html' ref='tag:blogger.com,1999:blog-8696186.post-5904795609663683261' source='http://www.blogger.com/feeds/8696186/posts/default/5904795609663683261' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-580399367'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='9:29 PM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-1766259011215643731</id><published>2011-09-01T21:18:12.250-03:00</published><updated>2011-09-01T21:18:12.250-03:00</updated><title type='text'>When you wrote &amp;quot;What does this mean for us Py...</title><content type='html'>When you wrote &amp;quot;What does this mean for us Python/Ruby/PHP developers?&amp;quot; I thought that you were going to continue in another direction entirely. &amp;quot;Switch to a statically typed language&amp;quot; would have been another way to go. :-)&lt;br /&gt;&lt;br /&gt;Is there a statically typed Python-like language?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/5904795609663683261/comments/default/1766259011215643731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/5904795609663683261/comments/default/1766259011215643731'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/08/pain-of-unit-tests-and-dynamically.html?showComment=1314922692250#c1766259011215643731' title=''/><author><name>robinbb</name><uri>http://www.blogger.com/profile/00969309505389131204</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/08/pain-of-unit-tests-and-dynamically.html' ref='tag:blogger.com,1999:blog-8696186.post-5904795609663683261' source='http://www.blogger.com/feeds/8696186/posts/default/5904795609663683261' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1150734501'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='9:18 PM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-1428103584586278073</id><published>2011-08-31T20:00:34.010-03:00</published><updated>2011-08-31T20:00:34.010-03:00</updated><title type='text'>I agree. It doesn&amp;#39;t happen that often, but whe...</title><content type='html'>I agree. It doesn&amp;#39;t happen that often, but when it does the first thing I think is &amp;quot;Why didn&amp;#39;t the tests catch that?&amp;quot;&lt;br /&gt;&lt;br /&gt;From the feedback I&amp;#39;ve been getting on this article I think people define the term &amp;quot;unit test&amp;quot; very loosely. They&amp;#39;re willing to call outside of the function being tested and don&amp;#39;t strictly mock everything external. &lt;br /&gt;&lt;br /&gt;I view that as an integration test. A test that spans multiple components. It sounds like you&amp;#39;re in the &amp;quot;willing to span components&amp;quot; camp as well by your assumption that the compute tests should have gone red. But they wouldn&amp;#39;t have if all external methods are mocked. &lt;br /&gt;&lt;br /&gt;And that&amp;#39;s not to say your approach is wrong. Perhaps I&amp;#39;m just overly strict on what I view as a unit test? In other languages it would never be a problem.&lt;br /&gt;&lt;br /&gt;I think what I&amp;#39;m trying to do is find the boundary between a pure unit test and a full-on integration test (which I fear creating).&lt;br /&gt;&lt;br /&gt;In the process it seems I&amp;#39;m learning more about how other people approach &amp;quot;unit&amp;quot; testing.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/5904795609663683261/comments/default/1428103584586278073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/5904795609663683261/comments/default/1428103584586278073'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/08/pain-of-unit-tests-and-dynamically.html?showComment=1314831634010#c1428103584586278073' title=''/><author><name>@TheSandyWalsh</name><uri>http://www.blogger.com/profile/09609915519064692107</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-4Ntng0E4RNU/TfIQ6FBsWQI/AAAAAAAAAGA/3FkKnVkLCBw/s220/me_64x64.png'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/08/pain-of-unit-tests-and-dynamically.html' ref='tag:blogger.com,1999:blog-8696186.post-5904795609663683261' source='http://www.blogger.com/feeds/8696186/posts/default/5904795609663683261' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1825487219'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='8:00 PM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-8385934850865487179</id><published>2011-08-31T19:31:19.018-03:00</published><updated>2011-08-31T19:31:19.018-03:00</updated><title type='text'>I don&amp;#39;t really expect this to bite me very oft...</title><content type='html'>I don&amp;#39;t really expect this to bite me very often. The return type is part of the contract, and everyone knows it even if the interpreter doesn&amp;#39;t know it, so whoever changed compute() would have known that they needed to inspect the code that calls it.&lt;br /&gt;&lt;br /&gt;Also, wouldn&amp;#39;t the unit tests of compute() have gone red when they made this change, since the unit tests insisted that the return type be numeric? So they would have had to change those unit tests to no longer insist on that, which &lt;i&gt;certainly&lt;/i&gt; should have clued them in that what they are doing is changing something that someone else relies on.&lt;br /&gt;&lt;br /&gt;But yeah, static type-checking is great when it is great.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/5904795609663683261/comments/default/8385934850865487179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/5904795609663683261/comments/default/8385934850865487179'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/08/pain-of-unit-tests-and-dynamically.html?showComment=1314829879018#c8385934850865487179' title=''/><author><name>Zooko</name><uri>http://www.blogger.com/profile/17046522562803939443</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/08/pain-of-unit-tests-and-dynamically.html' ref='tag:blogger.com,1999:blog-8696186.post-5904795609663683261' source='http://www.blogger.com/feeds/8696186/posts/default/5904795609663683261' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1114110838'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='7:31 PM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-1323480556791340297</id><published>2011-07-14T15:00:23.197-03:00</published><updated>2011-07-14T15:00:23.197-03:00</updated><title type='text'>Great post Sandy!

You have a great way of breakin...</title><content type='html'>Great post Sandy!&lt;br /&gt;&lt;br /&gt;You have a great way of breaking this stuff down...&lt;br /&gt;&lt;br /&gt;On the mocking side, I&amp;#39;ve come to love mocking frameworks for doing stubbing instead of trying to create crufty mock implementations to maintain...mockito is my favorite.  I find that inline mock definition (ie when(mock.getSomething()).thenReturn(&amp;quot;something&amp;quot;)) much easier to use and maintain.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/1478186483478607934/comments/default/1323480556791340297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/1478186483478607934/comments/default/1323480556791340297'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/06/effective-units-tests-and-integration.html?showComment=1310666423197#c1323480556791340297' title=''/><author><name>Shawn Crosby</name><uri>http://www.blogger.com/profile/12093823138737535996</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06398137996676519531'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/__S14ux89bFY/Soabhg77_pI/AAAAAAAAAqs/N84Ol381kTA/S220/Picture+6.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/06/effective-units-tests-and-integration.html' ref='tag:blogger.com,1999:blog-8696186.post-1478186483478607934' source='http://www.blogger.com/feeds/8696186/posts/default/1478186483478607934' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1224855622'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='3:00 PM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-3676043607082415976</id><published>2011-07-04T17:07:59.689-03:00</published><updated>2011-07-04T17:07:59.689-03:00</updated><title type='text'>Thanks Glen ... feel free to use the images.</title><content type='html'>Thanks Glen ... feel free to use the images.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/3676043607082415976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/3676043607082415976'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html?showComment=1309810079689#c3676043607082415976' title=''/><author><name>@TheSandyWalsh</name><uri>http://www.blogger.com/profile/17478332939768000715</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_Al595rN4OWo/S5o-MXFWibI/AAAAAAAAAFk/TKOxZTZ7w4A/S220/me.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html' ref='tag:blogger.com,1999:blog-8696186.post-758896689845574115' source='http://www.blogger.com/feeds/8696186/posts/default/758896689845574115' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-580399367'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='5:07 PM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-1480879122513736686</id><published>2011-07-04T17:05:56.827-03:00</published><updated>2011-07-04T17:05:56.827-03:00</updated><title type='text'>Sandy,

Great idea. Close to our Planning Packages...</title><content type='html'>Sandy,&lt;br /&gt;&lt;br /&gt;Great idea. Close to our Planning Packages and Work Packages here in DoD flight systems development.&lt;br /&gt;&lt;br /&gt;Can I reuse those two charts in other presentations to the DoD community?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/1480879122513736686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/1480879122513736686'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html?showComment=1309809956827#c1480879122513736686' title=''/><author><name>Glen B. Alleman</name><uri>http://profile.typepad.com/6p00d8341ca4d953ef</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/openid16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html' ref='tag:blogger.com,1999:blog-8696186.post-758896689845574115' source='http://www.blogger.com/feeds/8696186/posts/default/758896689845574115' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2137326532'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='5:05 PM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-6428437052196328134</id><published>2011-06-30T18:02:01.748-03:00</published><updated>2011-06-30T18:02:01.748-03:00</updated><title type='text'>Great post, Sandy!

One of the things I would ment...</title><content type='html'>Great post, Sandy!&lt;br /&gt;&lt;br /&gt;One of the things I would mention here is that the terminology around all of this is so loosely defined as to be stupid. &lt;br /&gt;&lt;br /&gt;In a previous life, we simply referred to tests as blackbox versus whitebox. The former was more like integration/functional whereas the latter was more like unit tests. In that same vein, the last couple months have in turn told me that the things I thought of as &amp;quot;integration&amp;quot; tests were truly functional tests, and vice versa. As such, I&amp;#39;ve personally come to define things &amp;quot;unit tests&amp;quot; and &amp;quot;not unit tests&amp;quot; for simplicity&amp;#39;s sake.&lt;br /&gt;&lt;br /&gt;Regarding mocks, I personally believe their value should be evaluated on a case-by-case basis, as they can lead to some incredibly brittle tests, especially if you&amp;#39;re enforcing the order of method calls. As for stubs, I&amp;#39;ve come to believe the only real difference between these and mocks is whether or not you verify the mock was called explicitly, and what parameters the mock actually received. One of the testing frameworks I&amp;#39;ve used in Ruby made this same distinction: stubs only returned a value necessary for a test, whereas a mock would vet the input and place a hard requirement on whether or not it was called.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/1478186483478607934/comments/default/6428437052196328134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/1478186483478607934/comments/default/6428437052196328134'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/06/effective-units-tests-and-integration.html?showComment=1309467721748#c6428437052196328134' title=''/><author><name>Matt</name><uri>http://www.blogger.com/profile/12923314126338489746</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/06/effective-units-tests-and-integration.html' ref='tag:blogger.com,1999:blog-8696186.post-1478186483478607934' source='http://www.blogger.com/feeds/8696186/posts/default/1478186483478607934' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-331269287'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='6:02 PM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-7504589705803366955</id><published>2011-05-26T01:30:15.001-03:00</published><updated>2011-05-26T01:30:15.001-03:00</updated><title type='text'>That was a very well written article.  Being from ...</title><content type='html'>That was a very well written article.  Being from Los Angeles I have no experience with firewood, and enjoyed the rather foreign process.  Then at the end you really brought it full circle. Very nice!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/1191291004776050839/comments/default/7504589705803366955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/1191291004776050839/comments/default/7504589705803366955'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2010/11/buying-firewood-aka-becoming-shirt.html?showComment=1306384215001#c7504589705803366955' title=''/><author><name>Jeremy</name><uri>http://www.blogger.com/profile/04536726768183079857</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2010/11/buying-firewood-aka-becoming-shirt.html' ref='tag:blogger.com,1999:blog-8696186.post-1191291004776050839' source='http://www.blogger.com/feeds/8696186/posts/default/1191291004776050839' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-931571479'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='1:30 AM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-7572684662941491616</id><published>2011-05-22T23:02:24.870-03:00</published><updated>2011-05-22T23:02:24.870-03:00</updated><title type='text'>Hi Sandy,

Welcome to the Kanban is better that It...</title><content type='html'>Hi Sandy,&lt;br /&gt;&lt;br /&gt;Welcome to the Kanban is better that Iterations party! For the record, I am BIG believer in Kanban.&lt;br /&gt;&lt;br /&gt;I don&amp;#39;t think the core of the arguement is about process or efficiency. I think it is more about culture and values.&lt;br /&gt;&lt;br /&gt;Reading your post, I really got the sense that you are coming from the perspective of technical excellence. I also hear you talking about the developer&amp;#39;s perspective.&lt;br /&gt;&lt;br /&gt;This is very striking for me. Scrum and Agile requires a whole, cross-functional team. The values of Scrum are much more around succeeding as a team and growing - perhaps that is why it has not sat well with you?&lt;br /&gt;&lt;br /&gt;What you value will tell you how you see effectiveness: on the one hand keeping developers busy and on the other hand working as a team.&lt;br /&gt;&lt;br /&gt;So I can see how from your value system, Scrum is probably the worst thing that could happen. &lt;br /&gt;&lt;br /&gt;I have written quite a bit about culture since I think it is central to understanding where the Agile/Kanban community is. e.g. http://agilitrix.com/2011/04/problems-with-agile-check-your-culture/&lt;br /&gt;&lt;br /&gt;BTW, for the record, &amp;quot;Stories&amp;quot; are an XP technical practice - Scrum has these silly things called &amp;quot;product backlog items&amp;quot;.&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;        Michael</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/7572684662941491616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/7572684662941491616'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html?showComment=1306116144870#c7572684662941491616' title=''/><author><name>Michael Sahota</name><uri>http://www.blogger.com/profile/06616916675340480286</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-iR_ALhl0YrQ/TbCQIg0vvwI/AAAAAAAAFrQ/hkZarig6OCQ/s220/Michael%2BSmiling-100.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html' ref='tag:blogger.com,1999:blog-8696186.post-758896689845574115' source='http://www.blogger.com/feeds/8696186/posts/default/758896689845574115' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-887269582'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='11:02 PM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-157180191590503379</id><published>2011-05-17T05:10:32.405-03:00</published><updated>2011-05-17T05:10:32.405-03:00</updated><title type='text'>Nice to see someone thinking outside &amp;quot;the box...</title><content type='html'>Nice to see someone thinking outside &amp;quot;the box&amp;quot;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/522921907451837369/comments/default/157180191590503379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/522921907451837369/comments/default/157180191590503379'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/02/palm-pre-2-first-impressions-from.html?showComment=1305619832405#c157180191590503379' title=''/><author><name>Crighton</name><uri>http://www.blogger.com/profile/08550733401464837573</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/02/palm-pre-2-first-impressions-from.html' ref='tag:blogger.com,1999:blog-8696186.post-522921907451837369' source='http://www.blogger.com/feeds/8696186/posts/default/522921907451837369' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-431515520'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='5:10 AM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-53858708143667416</id><published>2011-05-17T05:09:53.091-03:00</published><updated>2011-05-17T05:09:53.091-03:00</updated><title type='text'>Nice to see someone thinking outside &amp;quot;the box...</title><content type='html'>Nice to see someone thinking outside &amp;quot;the box&amp;quot;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/522921907451837369/comments/default/53858708143667416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/522921907451837369/comments/default/53858708143667416'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/02/palm-pre-2-first-impressions-from.html?showComment=1305619793091#c53858708143667416' title=''/><author><name>Crighton</name><uri>http://www.blogger.com/profile/08550733401464837573</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/02/palm-pre-2-first-impressions-from.html' ref='tag:blogger.com,1999:blog-8696186.post-522921907451837369' source='http://www.blogger.com/feeds/8696186/posts/default/522921907451837369' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-431515520'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='5:09 AM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-1078046069503822922</id><published>2011-05-02T16:52:06.609-03:00</published><updated>2011-05-02T16:52:06.609-03:00</updated><title type='text'>Thanks Tom! I agree ... really it&amp;#39;s just askin...</title><content type='html'>Thanks Tom! I agree ... really it&amp;#39;s just asking person to person &amp;quot;whadda ya think?&amp;quot; and realizing it&amp;#39;s all just an educated guess. &amp;#39;Confidence&amp;#39; works for me. Someone else suggested &amp;#39;Morale&amp;#39; ... anything really.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/1078046069503822922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/1078046069503822922'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html?showComment=1304365926609#c1078046069503822922' title=''/><author><name>@TheSandyWalsh</name><uri>http://www.blogger.com/profile/17478332939768000715</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_Al595rN4OWo/S5o-MXFWibI/AAAAAAAAAFk/TKOxZTZ7w4A/S220/me.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html' ref='tag:blogger.com,1999:blog-8696186.post-758896689845574115' source='http://www.blogger.com/feeds/8696186/posts/default/758896689845574115' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-580399367'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='4:52 PM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-2207266445661020198</id><published>2011-05-02T16:36:15.580-03:00</published><updated>2011-05-02T16:36:15.580-03:00</updated><title type='text'>Nice post - lots of food for thought.

I would als...</title><content type='html'>Nice post - lots of food for thought.&lt;br /&gt;&lt;br /&gt;I would also quibble with &amp;quot;sentiment&amp;quot;, but don&amp;#39;t like the proposed alternatives much either.&lt;br /&gt;&lt;br /&gt;How about &amp;quot;confidence&amp;quot; or &amp;quot;comfort level&amp;quot;?&lt;br /&gt;&lt;br /&gt;-Tom Bushell</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/2207266445661020198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/2207266445661020198'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html?showComment=1304364975580#c2207266445661020198' title=''/><author><name>tbushell</name><uri>http://www.blogger.com/profile/06527162220790869863</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html' ref='tag:blogger.com,1999:blog-8696186.post-758896689845574115' source='http://www.blogger.com/feeds/8696186/posts/default/758896689845574115' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-103951865'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='4:36 PM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-2865520991656757630</id><published>2011-05-02T10:50:59.315-03:00</published><updated>2011-05-02T10:50:59.315-03:00</updated><title type='text'>Hey J.B. thanks for the feedback.

I agree there h...</title><content type='html'>Hey J.B. thanks for the feedback.&lt;br /&gt;&lt;br /&gt;I agree there has to be some &amp;quot;thought time&amp;quot; set aside before tackling a problem. I&amp;#39;m talking about what happens after the plan-of-attack has been established. If the outcome of your planning says &amp;quot;I can get this done in a reasonable time, just let me do it&amp;quot;. But if the management practice dictates that all tasks have to be broken down to small chunks regardless, there&amp;#39;s a problem. &lt;br /&gt;&lt;br /&gt;I don&amp;#39;t think any effort should go longer than 3 days without a push to a branch for risk of &amp;quot;going dark&amp;quot;. I may even argue 2 days. The code is the important thing, not the project management tasks. &lt;br /&gt;&lt;br /&gt;I can think of many occasions where developers have ticked off &amp;quot;programming&amp;quot; tasks for the project and still not delivered any production ready code. Devs can go weeks playing that game when poor management is at the helm.&lt;br /&gt;&lt;br /&gt;So, do devs hate tasking out a story?Yes, when the breakdown is artificial or provides little value. Do you really need a breakdown of every button on a dialog box? I&amp;#39;m comfortable with that being a fairly blanket statement. Do devs need time to get a plan of attack? Absolutely. And we should all love creating one.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/2865520991656757630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/2865520991656757630'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html?showComment=1304344259315#c2865520991656757630' title=''/><author><name>@TheSandyWalsh</name><uri>http://www.blogger.com/profile/17478332939768000715</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_Al595rN4OWo/S5o-MXFWibI/AAAAAAAAAFk/TKOxZTZ7w4A/S220/me.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html' ref='tag:blogger.com,1999:blog-8696186.post-758896689845574115' source='http://www.blogger.com/feeds/8696186/posts/default/758896689845574115' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-580399367'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='10:50 AM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-648639730306318781</id><published>2011-05-02T10:27:37.349-03:00</published><updated>2011-05-02T10:27:37.349-03:00</updated><title type='text'>Hm, Sandy. I was with you right up until this:

&amp;q...</title><content type='html'>Hm, Sandy. I was with you right up until this:&lt;br /&gt;&lt;br /&gt;&amp;quot;Developers hate having to break down tasks to such a fine resolution that they can be tracked in 4-8 hr intervals. If I have to think about a problem to 4hr resolution I may as well just code it. Why not 1 hour? Why not task out to every 30 minutes? Simple, it&amp;#39;s a case of diminishing returns. The time it takes to document the tasks outweighs the effort itself.&amp;quot;&lt;br /&gt;&lt;br /&gt;Really? &amp;quot;Developers&amp;quot;? or you?&lt;br /&gt;&lt;br /&gt;Early in my career, I met a colleague who told me how to distinguish a senior programmer from a junior programmer: give them a task and watch them for 15 minutes. The junior programmer has already started typing.&lt;br /&gt;&lt;br /&gt;My point: few people &lt;i&gt;like&lt;/i&gt; planning out their work. Most would rather just do it. Still, in order to avoid doing too much, veering off track, doing the wrong thing, and so on, we train ourselves to plan the work out. This way, we have more signals than our intuition to help us detect when we go off track, do too much, or get stuck.&lt;br /&gt;&lt;br /&gt;Even so, I like the overall message, although I&amp;#39;d add that timeboxed iterations are useful as an intermediate step from very long cycles to free (iterationless) cycles. I usually cut feedback cycles in half repeatedly until we reach an effective size, and when the overhead of tracking exceeds the amount we can do in a cycle, then we stop tracking so closely. That equates, I think, with the iterationless approach.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/648639730306318781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/648639730306318781'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html?showComment=1304342857349#c648639730306318781' title=''/><author><name>J. B. Rainsberger</name><uri>http://www.blogger.com/profile/16213943899864372362</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_YOCjV0L1hHM/TQCkC2ZrsCI/AAAAAAAAAMc/Ch1phTHg8zQ/S220/WebSite.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html' ref='tag:blogger.com,1999:blog-8696186.post-758896689845574115' source='http://www.blogger.com/feeds/8696186/posts/default/758896689845574115' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-535350386'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='10:27 AM'/></entry><entry><id>tag:blogger.com,1999:blog-8696186.post-2844161963255954801</id><published>2011-05-01T10:13:59.384-03:00</published><updated>2011-05-01T10:13:59.384-03:00</updated><title type='text'>foredecker: thanks!

Mark: progress can still be m...</title><content type='html'>foredecker: thanks!&lt;br /&gt;&lt;br /&gt;Mark: progress can still be measured (in time units) by code getting submitted and reviewed. So long as the developers don&amp;#39;t go longer than, let&amp;#39;s say, 3 days without doing a push to a branch. As for &amp;quot;what to work on&amp;quot;, the customer still controls the backlog, but there are no &amp;quot;time blocking&amp;quot; impediments to picking them up.&lt;br /&gt;&lt;br /&gt;xhevahir: heh, yeah, sorry about that :) I like the idea of &amp;quot;morale&amp;quot; as well. The great good of the team. Same principle ... thanks.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/2844161963255954801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8696186/758896689845574115/comments/default/2844161963255954801'/><link rel='alternate' type='text/html' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html?showComment=1304255639384#c2844161963255954801' title=''/><author><name>@TheSandyWalsh</name><uri>http://www.blogger.com/profile/17478332939768000715</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_Al595rN4OWo/S5o-MXFWibI/AAAAAAAAAFk/TKOxZTZ7w4A/S220/me.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sandywalsh.com/2011/04/iterations-and-time-boxing-are-mostly.html' ref='tag:blogger.com,1999:blog-8696186.post-758896689845574115' source='http://www.blogger.com/feeds/8696186/posts/default/758896689845574115' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-580399367'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='10:13 AM'/></entry></feed>
