<?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/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1338078043432413205</id><updated>2012-02-11T18:45:43.259Z</updated><category term='xpday'/><category term='connectionsrecruit'/><category term='tools'/><category term='scrum'/><category term='agile'/><category term='technical'/><category term='simonv'/><category term='compromise'/><category term='xp mentor coach'/><category term='scrumban'/><category term='acorn'/><category term='kanban'/><category term='humour'/><category term='fear of change'/><category term='bad behaviour'/><category term='quality'/><category term='selenium'/><category term='architects'/><category term='testing'/><category term='philosophy'/><category term='failure'/><category term='blog'/><category term='xp'/><category term='team health'/><title type='text'>Thoughts from a Thirsty Bear</title><subtitle type='html'>"It is not the strongest of the species that survives, nor the most intelligent, but the one most responsive to change."</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00637752153758208256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-NXSXC81rHHs/ToCKXr7EGZI/AAAAAAAAAAU/OVvVhIdudgM/s220/blogimg.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>82</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8660458778287512365</id><published>2012-02-11T18:24:00.000Z</published><updated>2012-02-11T18:45:43.267Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='team health'/><title type='text'>The power of caring and smarts</title><content type='html'>&lt;div class="p1"&gt;&lt;a href="http://commons.wikimedia.org/wiki/File%3AProg.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;" title="By Images courtesy of http://abstrusegoose.com/ under a Creative Commons license. (http://www.ccc.uga.edu/summer/programs/comic2.png) [CC-BY-SA-3.0 (www.creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons"&gt;&lt;img alt="Prog" src="http://upload.wikimedia.org/wikipedia/commons/7/7d/Prog.png" width="256" /&gt;&lt;/a&gt;Just recently I have been thinking a lot about what really makes a good agile team member. The reason is that over the years I have seen some teams become incredibly successful in terms of delivering products, and other teams crash and burn even though they have the same superficial traits and abilities. I have also seen teams go from zeroes to heroes (and back again), while others remain at whichever end of that spectrum they started at and never change. There is obviously some "secret sauce" (as Jeff Sutherland calls it) that needs to be mixed in.&amp;nbsp;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Well, I think I have identified one piece of this particular puzzle that I had underestimated previously.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Recently, &lt;a href="https://twitter.com/thirstybear/status/163220691309707264" target="_blank"&gt;one of my tweets&lt;/a&gt;&amp;nbsp;resonated with quite a few people:&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;"&lt;i&gt;Realised that agile has one fatal flaw. It still requires motivated, smart people who care for it to succeed, same as its predecessors.&lt;/i&gt;"&lt;/blockquote&gt;&lt;div class="p1"&gt;(actually I was fibbing slightly - I have suspected this for quite a while now. I haven't only just realised this)&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;I think these two are &lt;i&gt;key&lt;/i&gt; ingredients for success, and not just "nice to have". They are the "secret sauce", not just for agile teams, but for software development in general.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;You need people who are &lt;i&gt;smart&lt;/i&gt;. By smart, I don't think I mean conventional intelligence and IQ, but something different. The best way I can describe it is a combination of problem solving ability and intuition.&amp;nbsp;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;You also need people who &lt;i&gt;care&lt;/i&gt;. Some people have a deep seated drive to do good work. To excel. To better themselves. To maintain their humanity and help others achieve too. You need people with a strong inner motivation who want to make things work.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;When you combine these two, magic begins to happen. I believe that people who care and have exceptional problem solving abilities (who care about solving problems, maybe?) tend to have the right attributes for agile (and other) software development teams:&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Able to communicate&lt;/li&gt;&lt;li&gt;Willing to learn&amp;nbsp;&lt;/li&gt;&lt;li&gt;Humility&lt;/li&gt;&lt;li&gt;Courage&lt;/li&gt;&lt;li&gt;Passionate about quality&lt;/li&gt;&lt;li&gt;Curiosity&lt;/li&gt;&lt;li&gt;Integrity&lt;/li&gt;&lt;li&gt;Initiative&lt;/li&gt;&lt;li&gt;Creativity&lt;/li&gt;&lt;li&gt;Imagination&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;But that is not all. I believe they will naturally obtain the basic technical skills to do their job as a side effect of the curiosity, the courage and...actually &lt;i&gt;all&lt;/i&gt; of the above! Now imagine what an entire team of these self-motivated, capable people can achieve.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;However, I should emphasise that creating a functional, high performing team is not as simple as simply hiring in the people with the Right Stuff. You also need to put them into an environment that will nurture them and allow them to grow. If you put caring, smart people into an environment that actively discourages the right behaviours and attitudes, whether by accidental cognitive dissonance or deliberate edict, then there will be trouble ahead. But getting the right people on the bus (and its corollary, getting the wrong people &lt;i&gt;off&lt;/i&gt; the bus)&lt;i&gt;&amp;nbsp;&lt;/i&gt;is a good start to sorting out your delivery problems - "&lt;a href="http://www.generalpatton.com/quotes/index.html" target="_blank"&gt;Lead them, follow them or get out of their way&lt;/a&gt;".&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;So it looks like agile has the same achilles heel that its predecessors - waterfall, DSDM, RUP etc - have. It does not do away with the need for good people working in a good environment. You cannot force anyone to do a job well if they do not want to. No matter how much you believe that agile provides a framework for building high performing teams, &lt;i&gt;it cannot force people to inspect, adapt and learn if they do not want to&lt;/i&gt;. But it does provide one &lt;i&gt;huge&lt;/i&gt; benefit. It fails fast. You find out if the project is progressing - or not - very quickly. The feedback it provides allows the rapid identification that &lt;i&gt;something&lt;/i&gt;&amp;nbsp;is going wrong, whether it is environment, design, policy or people. This has &lt;i&gt;enormous&lt;/i&gt; implications for our industry in terms of how we need to handle hiring, team building and behaviours in the future. More on that soon.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8660458778287512365?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8660458778287512365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8660458778287512365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8660458778287512365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8660458778287512365'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2012/02/power-of-caring-and-smarts.html' title='The power of caring and smarts'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00637752153758208256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-NXSXC81rHHs/ToCKXr7EGZI/AAAAAAAAAAU/OVvVhIdudgM/s220/blogimg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-1863909524156062765</id><published>2012-02-07T11:50:00.000Z</published><updated>2012-02-07T11:50:31.431Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='philosophy'/><title type='text'>How many holes are you falling into?</title><content type='html'>&lt;blockquote class="tr_bq"&gt;&lt;a href="http://amzn.to/xaNBUJ" target="_blank"&gt;There’s A Hole In My Sidewalk&lt;/a&gt;– by &lt;a href="http://en.wikipedia.org/wiki/Portia_Nelson" target="_blank"&gt;Portia Nelson&lt;/a&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;&lt;b&gt;Chapter One&lt;/b&gt;&lt;br /&gt;I walk down the street.&lt;br /&gt;There is a deep hole in the sidewalk.&lt;br /&gt;I fall in.&lt;br /&gt;I am lost… I am helpless.&lt;br /&gt;It isn’t my fault.&lt;br /&gt;It takes forever to find a way out.&amp;nbsp;&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;&lt;b&gt;Chapter Two&lt;/b&gt;&lt;br /&gt;I walk down the same street.&lt;br /&gt;There is a deep hole in the sidewalk.&lt;br /&gt;I pretend I don’t see it.&lt;br /&gt;I fall in again.&lt;br /&gt;I can’t believe I am in the same place.&lt;br /&gt;But it isn’t my fault.&lt;br /&gt;It still takes a long time to get out.&amp;nbsp;&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;&lt;b&gt;Chapter Three&lt;/b&gt;&lt;br /&gt;I walk down the same street.&lt;br /&gt;There is a deep hole in the sidewalk.&lt;br /&gt;I see it is there.&lt;br /&gt;I still fall in… it’s a habit.&lt;br /&gt;My eyes are open.&lt;br /&gt;I know where I am.&lt;br /&gt;It is my fault… I get out immediately.&amp;nbsp;&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;&lt;b&gt;Chapter Four&lt;/b&gt;&lt;br /&gt;I walk down the same street.&lt;br /&gt;There is a deep hole in the sidewalk.&lt;br /&gt;I walk around it.&amp;nbsp;&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;&lt;b&gt;Chapter Five&lt;/b&gt;&lt;br /&gt;I walk down another street.&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;So which chapter is your team at? Be honest now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-1863909524156062765?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/1863909524156062765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=1863909524156062765' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1863909524156062765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1863909524156062765'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2012/02/how-many-holes-are-you-falling-into.html' title='How many holes are you falling into?'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00637752153758208256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-NXSXC81rHHs/ToCKXr7EGZI/AAAAAAAAAAU/OVvVhIdudgM/s220/blogimg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-3842707795864280926</id><published>2012-01-17T08:52:00.001Z</published><updated>2012-01-17T08:52:47.579Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='scrumban'/><category scheme='http://www.blogger.com/atom/ns#' term='kanban'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Infamy! Infamy!</title><content type='html'>...they've all got it in for me!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=kvs4bOMv5Xw"&gt;Excruciating Carry On pun&lt;/a&gt; aside, here's the long overdue link to the talk I gave to the &lt;a href="http://www.limitedwipsociety.org/" target="_blank"&gt;Limited WIP Society&lt;/a&gt;&amp;nbsp;way back in March 2010 (my fault for not posting it here - it's been up on the &lt;a href="http://skillsmatter.com/" target="_blank"&gt;SkillsMatter&lt;/a&gt; website for ages).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://skillsmatter.com/podcast/agile-scrum/chris-pitts-migrating-from-scrum-to-scrumban" target="_blank"&gt;&lt;img border="0" height="216" src="http://2.bp.blogspot.com/-LOUHRgrV-aU/TxU2T_Dp7PI/AAAAAAAAABY/Sgq6btSXLjY/s400/skillsmatter+page.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;(Sorry, this is just a link. I can't work out how to embed this directly into the blog page - any ideas, anyone?)&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-3842707795864280926?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/3842707795864280926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=3842707795864280926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3842707795864280926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3842707795864280926'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2012/01/infamy-infamy.html' title='Infamy! Infamy!'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00637752153758208256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-NXSXC81rHHs/ToCKXr7EGZI/AAAAAAAAAAU/OVvVhIdudgM/s220/blogimg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-LOUHRgrV-aU/TxU2T_Dp7PI/AAAAAAAAABY/Sgq6btSXLjY/s72-c/skillsmatter+page.jpg' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Farnham, Surrey, UK</georss:featurename><georss:point>51.214321 -0.798802</georss:point><georss:box>51.174535 -0.877766 51.254107 -0.719838</georss:box></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-7807809612697749471</id><published>2012-01-16T20:14:00.000Z</published><updated>2012-01-16T20:14:33.099Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='failure'/><title type='text'>Software development is not an assembly line</title><content type='html'>&lt;a href="http://commons.wikimedia.org/wiki/File%3AThunderbird_assembly_line.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" title="See page for author [Public domain], via Wikimedia Commons"&gt;&lt;img alt="Thunderbird assembly line" height="238" src="http://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Thunderbird_assembly_line.jpg/512px-Thunderbird_assembly_line.jpg" width="320" /&gt;&lt;/a&gt;&lt;div class="p1"&gt;Analogies are useful to a point. They allow people to relate new ideas back to something they are familiar with, giving them a safe framework from which to explore new territory. However they can also be immensely damaging and misleading. I was recently reminded of one&amp;nbsp; particularly well worn example of the latter type that needs to be laid to rest once and for all:&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;Building software is &lt;i&gt;not&lt;/i&gt; the same as building a car. Developing a software product is definitely &lt;i&gt;not&lt;/i&gt; a simple assembly line process.&lt;/blockquote&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;When building a car on an assembly line, you make the individual components - wheels, engine, chassis, seats etc - and then construct the finished item from these. Each component has already been designed in its own right, and they have all been proven to fit together many times previously. There is absolutely no creativity involved in the construction process. There are limited opportunities for different combinations of components (and those that are possible are well tested).&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Software development is a fundamentally different problem. You don't have a set of predefined components. But you &lt;i&gt;do&lt;/i&gt; have close to an infinite number of ways to build the final product. Individual components making up the final product need to be built, and so have not been proven to work together. The whole construction process requires a huge degree of creativity to produce a final, working deliverable. The nearest you can get to a car manufacturing analogy is to think of building software as attempting to build a car from raw lumps of metal, with no existing, pre-proven designs for the components. Trying to emulate an assembly line by believing that you can build component after component and expect them to immediately bolt together without problems will inevitably lead to tears before bedtime. Yet many teams still fall into this trap.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;If it can be related at all to this analogy, software development has more&amp;nbsp;similarities to car &lt;i&gt;research and development &lt;/i&gt;than&lt;i&gt; &lt;/i&gt;manufacture.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Consider this. A new car design is first prototyped as a collection of conceptual drawings that are iterated towards a final design. Then these are fleshed out to various models and mock-ups which would never make it to the forecourt, but which are used to invite more feedback. Then working prototypes are produced, and again, more feedback obtained, and designs iterated (or the design is shelved or binned). Finally, after many, many iterations, there is a new model of car available to purchase. Sounds familiar? Iterative software development creates a simple demonstrator of the system, then keeps on adding to it, refining both the functionality and the design until it is good enough to release to users.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;This is where software development fits. It has more in common with pre-manufacture prototyping than assembly lines. But this doesn't stop us from stealing &lt;i&gt;relevant&lt;/i&gt;, &lt;i&gt;useful&lt;/i&gt; ideas from the assembly line. Kanban, anyone?&amp;nbsp;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-7807809612697749471?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/7807809612697749471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=7807809612697749471' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/7807809612697749471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/7807809612697749471'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2012/01/software-development-is-not-assembly.html' title='Software development is not an assembly line'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00637752153758208256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-NXSXC81rHHs/ToCKXr7EGZI/AAAAAAAAAAU/OVvVhIdudgM/s220/blogimg.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8419516309930726551</id><published>2011-11-22T20:44:00.001Z</published><updated>2012-01-09T11:38:50.333Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>Misquote</title><content type='html'>&lt;a href="http://commons.wikimedia.org/wiki/File%3ACharles_Darwin_01.jpg" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;" title="By J. Cameron (Unknown) [Public domain], via Wikimedia Commons"&gt;&lt;img alt="Charles Darwin 01" height="200" src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/3c/Charles_Darwin_01.jpg/240px-Charles_Darwin_01.jpg" width="155" /&gt;&lt;/a&gt;Anyone who reads my articles will already be familiar with the quote I use at the top of each page -&amp;nbsp;"&lt;i&gt;It is not the strongest of the species that survives, nor the most intelligent, but the one most responsive to change.&lt;/i&gt;". For me, this cuts to the very heart of agile and lean techniques. Being successful is not about being powerful, or even knowledgeable in the traditional sense, but about being adaptable and smart.&lt;br /&gt;&lt;br /&gt;Way back in June an anonymous poster pointed out that the quote was misattributed to Charles Darwin. To my shame, I sat on the comment until I had the time and patience to research the correct answer.&lt;br /&gt;&lt;br /&gt;I can now confirm that you were absolutely correct, Mr Anonymous. It was misattributed. The quote most likely comes from&amp;nbsp;the writings of Leon C. Megginson, Professor of Management and Marketing at Louisiana State University at Baton Rouge. The quote is a paraphrasing of Darwin.&lt;br /&gt;&lt;br /&gt;I won't bore everyone with details, but here are links to the corroborating articles.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.darwinproject.ac.uk/one-thing-darwin-didnt-say" target="_blank"&gt;One thing Darwin didn't say: the source for a misquotation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pandasthumb.org/archives/2009/09/survival-of-the-1.html" target="_blank"&gt;Survival of the Pithiest&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8419516309930726551?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8419516309930726551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8419516309930726551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8419516309930726551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8419516309930726551'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2011/11/misquote.html' title='Misquote'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00637752153758208256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-NXSXC81rHHs/ToCKXr7EGZI/AAAAAAAAAAU/OVvVhIdudgM/s220/blogimg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-2348474444325898631</id><published>2011-11-22T20:31:00.001Z</published><updated>2012-01-09T11:39:03.147Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>Quiet here, isn't it?</title><content type='html'>I've been fairly quiet recently for various reasons, but rumours of my online demise have been grossly exaggerated. The brief hiatus has given me time to think about several new articles that are now in the pipeline, so watch this space.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-2348474444325898631?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/2348474444325898631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=2348474444325898631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/2348474444325898631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/2348474444325898631'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2011/11/quiet-here-isnt-it.html' title='Quiet here, isn&apos;t it?'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00637752153758208256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-NXSXC81rHHs/ToCKXr7EGZI/AAAAAAAAAAU/OVvVhIdudgM/s220/blogimg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8562788901249739513</id><published>2011-07-06T20:56:00.002+01:00</published><updated>2012-01-09T11:38:41.640Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>Blogger Profile Change</title><content type='html'>All change!&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am in the process of migrating this blog to another account. For anyone following via my Blogger profile, I am now &lt;a href="http://www.blogger.com/profile/00637752153758208256"&gt;over here&lt;/a&gt;. &lt;waves&gt;&lt;/waves&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8562788901249739513?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8562788901249739513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8562788901249739513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8562788901249739513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8562788901249739513'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2011/07/blogger-profile-change.html' title='Blogger Profile Change'/><author><name>Chris</name><uri>http://www.blogger.com/profile/00637752153758208256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-NXSXC81rHHs/ToCKXr7EGZI/AAAAAAAAAAU/OVvVhIdudgM/s220/blogimg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-4484873390024002095</id><published>2011-07-06T19:33:00.001+01:00</published><updated>2012-01-09T11:38:26.102Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='team health'/><category scheme='http://www.blogger.com/atom/ns#' term='fear of change'/><title type='text'>It's not personal</title><content type='html'>&lt;a class="image-link" href="http://lh6.ggpht.com/-vxDZKF6RmGg/ThSmpk7b-vI/AAAAAAAAALI/045DBu1q_ck/s800/Nuvola_apps_personal_unisex1.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img align="left" class="linked-to-original" height="120" src="http://lh4.ggpht.com/-0rlkDG5xl68/ThSmo_McOCI/AAAAAAAAALE/O70Av9jCXSY/s800/Nuvola_apps_personal_unisex1-thumb.png" width="94" /&gt;&lt;/a&gt;Oh dear. It would appear that some people reading this blog and &lt;a href="http://twitter.com/thirstybear" target="_blank"&gt;Twitter&lt;/a&gt; feed believe that I am writing specifically about them. Naturally, this makes them a little sensitive to the criticisms that I sometimes level at the industry and the comments/observations I make. &lt;br /&gt;&lt;br /&gt;Let me reassure everyone that the articles I write generally don't relate to any one client, or incident, or person, or project. There really would be little point in writing about anything that is only specific to one project; to be fair it would be deathly dull, and irrelevant to everyone else. Even in the rare case when there is a particularly interesting success or failure story, I ensure that names are changed, and generally wait a while as well before publishing to anonymise the problem and protect the guilty. And remember I have had people I have never worked with before accuse me (albeit lightheartedly) of spying on their project, so some observations must be common across multiple projects.&lt;br /&gt;&lt;br /&gt;Sometimes I publish idle thoughts. Sometimes (hopefully) insightful. Other times complete rubbish, the ramblings of a madman.&lt;br /&gt;&lt;br /&gt;So where do these snippets come from? Certainly some of the material comes from personal experience, both past, and to a small degree, present. General observation of the industry provides a huge amount of material, with certain themes and problems coming up time and again (and often from way back too). Some comes from discussions with fellow developers and coaches working in other companies, a throwaway comment triggering anything from an idle thought to a complete theory. Some more comes from talking to managers, a very different but related discipline. Yet more from talking to people outside our small, mad world of software development. Then there are the books, films, documentaries, seminars... Everything influencing everything else, trying to compete for space in a grand unified theory of software development, the universe and everything.&lt;br /&gt;&lt;br /&gt;So maybe, just maybe, it's not about you.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;But...&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;If you do start thinking that anything I write sounds like it is directly referencing &lt;em&gt;your&lt;/em&gt; project. Or &lt;em&gt;your&lt;/em&gt; company. Or even &lt;em&gt;you personally&lt;/em&gt;. &lt;em&gt;&lt;strong&gt;Stop and think&lt;/strong&gt;. &lt;strong&gt;Why&lt;/strong&gt; is it resonating with you? &lt;strong&gt;Why&lt;/strong&gt; is it sounding familiar? &lt;strong&gt;Why&lt;/strong&gt; are you embarrassed/angry at seeing something so familiar in print?&lt;/em&gt;  &lt;br /&gt;&lt;br /&gt;Then ask yourself the two most important questions of all:&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;&lt;strong&gt;"Are we doing something stupid here?"&lt;br /&gt;&lt;br /&gt;"If we are, how do we stop doing it?"&lt;/strong&gt;&lt;/em&gt;&lt;/blockquote&gt;Remember, it's not personal. It's about working smarter.&lt;br /&gt;&lt;br class="final-break" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-4484873390024002095?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/4484873390024002095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=4484873390024002095' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4484873390024002095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4484873390024002095'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2011/07/it-not-personal.html' title='It&amp;#39;s not personal'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-0rlkDG5xl68/ThSmo_McOCI/AAAAAAAAALE/O70Av9jCXSY/s72-c/Nuvola_apps_personal_unisex1-thumb.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-6771289361268658166</id><published>2011-07-05T17:44:00.018+01:00</published><updated>2011-07-05T17:58:18.379+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='acorn'/><title type='text'>A blast from the past</title><content type='html'>&lt;a class="image-link" href="http://lh4.ggpht.com/-vNoXkvHb0s8/ThM_VdLD2aI/AAAAAAAAALA/qynMcd19KUc/s800/riscos1.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img align="left" class="linked-to-original" height="153" src="http://lh6.ggpht.com/-MefnD5y0G9A/ThM_VNVerJI/AAAAAAAAAK8/i0O8Mq6RLTw/s200/riscos1-thumb.png" width="200" /&gt;&lt;/a&gt;Once upon a time, in a galaxy far, far away, I spent several happy years working for the legendary &lt;a href="http://en.wikipedia.org/wiki/Acorn_Computers" target="_blank"&gt;Acorn Computers&lt;/a&gt; and their near mythical set-top box subsidiary, &lt;a href="http://en.wikipedia.org/wiki/Acorn_Computers#Set-Top_boxes" target="_blank"&gt;Online Media&lt;/a&gt;. We did some seriously cool, groundbreaking stuff there, including being (arguably) the first to stream video over internet protocols. All the computers ran on &lt;a href="http://en.wikipedia.org/wiki/RISC_OS" target="_blank"&gt;RiscOS&lt;/a&gt;, a homegrown, lightweight, adaptable operating system for ARM processors.&lt;br /&gt;&lt;br /&gt;Alas this time came to an end, and Acorn disappeared, but their legacy lived on. &lt;a href="http://en.wikipedia.org/wiki/RISC_OS" target="_blank"&gt;RiscOS&lt;/a&gt;&amp;nbsp;carried on, supported by various companies.&lt;br /&gt;&lt;br /&gt;I had mostly forgotten about it until now. An old colleague recently mentioned that in 2006 a group of ex-Acornites started a new company, &lt;a href="http://www.riscosopen.org/" target="_blank"&gt;RiscOS Open Limited&lt;/a&gt; (ROOL), dedicated to maintaining the operating system and take it forward. The OS is still available, and supported. So do take a look, and if you have an interest in RiscOS then do consider helping them out. &lt;br /&gt;&lt;br class="final-break" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-6771289361268658166?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/6771289361268658166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=6771289361268658166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/6771289361268658166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/6771289361268658166'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2011/07/blast-from-past.html' title='A blast from the past'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-MefnD5y0G9A/ThM_VNVerJI/AAAAAAAAAK8/i0O8Mq6RLTw/s72-c/riscos1-thumb.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-6947633866861612421</id><published>2011-06-01T15:34:00.002+01:00</published><updated>2011-06-01T16:33:18.324+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bad behaviour'/><category scheme='http://www.blogger.com/atom/ns#' term='failure'/><title type='text'>The hidden danger of accepting broken windows</title><content type='html'>&lt;a href="http://commons.wikimedia.org/wiki/File:Broken_glass.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" title="By Jef Poskanzer (originally posted to Flickr as smash) [CC-BY-2.0 (www.creativecommons.org/licenses/by/2.0)], via Wikimedia Commons"&gt;&lt;img alt="Broken glass" src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/67/Broken_glass.jpg/240px-Broken_glass.jpg" width="240" /&gt;&lt;/a&gt;By now we should all be aware of the "broken window effect", not least because there is now concrete evidence that it exists. As a reminder, the "broken window effect" is that subtle, damaging change in attitude that causes perfectly normal, law abiding, sane people to break social norms if they see others doing the same thing. People are more likely to litter an untidy, graffitied street than a clean one. They are more likely to damage a car that has already been damaged. And they are more likely to write badly structured code and cut corners in a codebase if there is evidence of others doing the same thing.&lt;br /&gt;&lt;br /&gt;But I think there is an insidious, darker side to this. &lt;i&gt;Accepting broken windows for too long desensitises and deskills your team&lt;/i&gt;. &lt;br /&gt;&lt;br /&gt;What happens is this. The bad behaviours that happen due to being surrounded by the broken windows - broken builds, releasing untested code, mend-and-make-do workstations and so on - become the new social norms. People get used to them; they will become disinclined to fix them, and it becomes the accepted reality. "&lt;em&gt;It's the way we do things here&lt;/em&gt;". But if they are now the accepted &lt;em&gt;status quo&lt;/em&gt;, then the next thing that gets broken is on top of the existing problems. Since the culture has now become one of acceptance, the new problem doesn't get fixed either. And so on - the system degrades to the next level. And the next. The cycle spirals downwards. &lt;br /&gt;&lt;br /&gt;Remember, these are sane, normal people being sucked into this. Suddenly there is a real danger that a perfectly good software team get so used to breaking the rules and living with the broken windows that they &lt;em&gt;forget&lt;/em&gt; what the civilised rules are. They effectively forget what "good development" is. If you don't use the good practice patterns - green builds, continuous integration, TDD and so on - you do forget them. Your team actually begins to &lt;strong&gt;&lt;em&gt;deskill&lt;/em&gt;&lt;/strong&gt;, which in turn speeds up the descent into failure....&lt;br /&gt;&lt;br /&gt;Fortunately the process is reversible, but depending how far it's gone and how much technical debt you have accumulated before accepting the situation, fixing it can be painful. So just bite the bullet, and fix those broken windows as soon as you see them. Demand better!&lt;br /&gt;&lt;br class="final-break" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-6947633866861612421?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/6947633866861612421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=6947633866861612421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/6947633866861612421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/6947633866861612421'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2011/06/hidden-danger-of-accepting-broken.html' title='The hidden danger of accepting broken windows'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-2323720555656622428</id><published>2011-05-27T11:01:00.000+01:00</published><updated>2012-01-09T11:39:16.321Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>A bit of a Spring Clean</title><content type='html'>As regulars will have noted I'm having a bit of a spring clean of the blog layout - new title, template etc.&lt;br /&gt;&lt;br /&gt;Feedback and reports of weirdness welcome - contact me &lt;a href="http://www.thirstybear.co.uk/email-us.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-2323720555656622428?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/2323720555656622428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=2323720555656622428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/2323720555656622428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/2323720555656622428'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2011/05/bit-of-spring-clean.html' title='A bit of a Spring Clean'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-1805039472679180325</id><published>2011-05-27T10:49:00.001+01:00</published><updated>2011-06-01T16:20:50.039+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><title type='text'>A note on electronic agile tools</title><content type='html'>&lt;a class="image-link" href="http://lh3.ggpht.com/_tpWAicrRTb4/Td1KyieTkkI/AAAAAAAAAKk/S8hV92BW6Gg/s800/Icon_tools1.png"&gt;&lt;img align="left" class="linked-to-original" height="100" src="http://lh3.ggpht.com/_tpWAicrRTb4/Td1KvnbvyYI/AAAAAAAAAKg/gnAVBgDTqHs/s800/Icon_tools1-thumb.png" /&gt;&lt;/a&gt;It’s always a bit of a shock when you get unexpected feedback, especially from someone who you have known for a while. It happened to me quite recently with a conversation that went something like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;blockquote&gt;&lt;strong&gt;Friend&lt;/strong&gt;: “&lt;em&gt;You’re dead against agile tools, aren’t you?&lt;/em&gt;”&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;strong&gt;Me&lt;/strong&gt; (confused): “&lt;em&gt;Erm...not exactly....&lt;/em&gt;”&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;strong&gt;Friend&lt;/strong&gt;: “&lt;em&gt;But didn’t you persuade several teams in &amp;lt;&lt;/em&gt;major co&lt;em&gt;&amp;gt; to throw out &amp;lt;&lt;/em&gt;agile tool vendor&lt;em&gt;&amp;gt; the other year?&lt;/em&gt;”&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;strong&gt;Me&lt;/strong&gt;: “&lt;em&gt;Not me. The team simply decided that the tools were not providing value to the way they worked...&lt;/em&gt;”&lt;/blockquote&gt;&lt;/div&gt;However, thinking back I think I can see how some people have formed the misconception that I think agile tools are Satan’s Spawn, and should be eradicated at every opportunity in favour of a simple pen, 5x3 cards and at a push an Excel spreadsheet. Reality, as always, is a little different....&lt;br /&gt;&lt;br /&gt;My view is that many teams prematurely select an “agile tool” before they know what they need. Teams (and departments, and companies) are like kids in a sweetshop when it comes to new toys, and want to buy the glossiest, most feature-rich application. This is mostly because they want the mythical Silver Bullet that will allow them to “&lt;em&gt;do Agile&lt;/em&gt;” painlessly and with minimal disruption. &lt;br /&gt;&lt;br /&gt;So what happens when this shiny piece of software gets installed? After all, that nice salesman said it will kick-start your agility...&lt;br /&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Feature Frenzy&lt;/em&gt;. That’s what happens. You can imagine the thought processes:&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;“We must use every single thing in this software package. We’re paying a pretty penny for the licensing after all. And it’s there for a reason, right? Oh look, there is an ‘Estimate’ field on the Story entry page, and it says ‘days’. So let’s ask developers to estimate in real days (after all, that’s the same as MS Project does).&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;em&gt;“Wait a minute...we can put in Actual Time as well. Wouldn’t it be great if we knew how well we were estimating, and feed that back so we get better and better until we know exactly when a project will be delivered.&lt;/em&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;em&gt;“Oooh...even better. It gives us ‘Percentage Complete’, so we can tell how far from finished Stories are! Cool!”&lt;/em&gt;&lt;/blockquote&gt;...then when things start to slip from these “Estimate” fields...&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;“But you said that would take 1 day, but it’s taken 5 days....AND it’s been at 90% Complete for 4 of those days...that makes you a Bad Person”&lt;/em&gt;&lt;/blockquote&gt;This scenario is based on real behaviours I have seen more than once in teams who have asked me for help, and I have no doubt that I shall see them again. You get the idea - the process and behaviours begin to map to the tool, not the other way around. Or to put it another way, &lt;em&gt;the tail is wagging the dog&lt;/em&gt;. The team didn’t know what they wanted, so they used the tool as their process model.&lt;br /&gt;&lt;br /&gt;I suspect this is why some may think I am anti-tools (or manically pro-pen-and-paper?).To put the record straight,&lt;em&gt; I am anti-inappropriate-tools&lt;/em&gt;. I am against prematurely selecting a tool before allowing your process to bed-in. All agile and lean teams end up doing things slightly differently - estimation, swim lane mapping of the current process and so on. The most efficient application of these proven techniques relies on flexibility. And yes, I have helped some teams to realise how some electronic tools were hindering them rather than helping.&lt;br /&gt;&lt;br /&gt;So select your electronic tools to match your mature process, or at very least ensure that it is flexible enough to cope with anything you throw at it (products with this level of flexibility are starting to appear). &lt;br /&gt;&lt;br /&gt;Also, &lt;em&gt;never&lt;/em&gt; adopt &lt;em&gt;any&lt;/em&gt; feature in an existing tool until you see a concrete, real-world &lt;em&gt;and evidence-based&lt;/em&gt; reason that you need it. &lt;br /&gt;&lt;br /&gt;If you are not using many of the facilities in a particular tool you have purchased, save your cash and look for a cheaper (free?) version that does less.&lt;br /&gt;&lt;br /&gt;Finally, if you are using an electronic tool make it visible in the same way as a whiteboard would be or you will lose most of the benefits - bite the bullet and invest in a touch screen TV/monitor for each team at each location it is used. If this is too expensive, then I see a trip to a stationers for pens and cards in your future....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-1805039472679180325?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/1805039472679180325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=1805039472679180325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1805039472679180325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1805039472679180325'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2011/05/note-on-electronic-agile-tools.html' title='A note on electronic agile tools'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_tpWAicrRTb4/Td1KvnbvyYI/AAAAAAAAAKg/gnAVBgDTqHs/s72-c/Icon_tools1-thumb.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8200423252052878968</id><published>2011-03-14T19:57:00.001Z</published><updated>2011-03-14T19:58:19.947Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Updated: I can haz agile certification?</title><content type='html'>&lt;div style="clear: both;"&gt;Via various convoluted routes:&lt;/div&gt;&lt;div style="clear: both;"&gt;&lt;a href="http://agilecertificationnow.info/"&gt;Become a Certified Agile Software Specialist!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="clear: both;"&gt;&lt;b&gt;Update&lt;/b&gt;: the link is now cobwebbed, but if you did the original then please get in touch!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update 2: &lt;/b&gt;It's back! FTW!&lt;/div&gt;&lt;br class="final-break" style="clear: both;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8200423252052878968?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8200423252052878968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8200423252052878968' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8200423252052878968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8200423252052878968'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/03/i-can-haz-agile-certification.html' title='Updated: I can haz agile certification?'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-5521208827037419377</id><published>2011-02-08T18:40:00.004Z</published><updated>2012-01-09T11:39:38.650Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='technical'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Hudson is fired, Jenkins hired!</title><content type='html'>&lt;div style="clear: both;"&gt;&lt;a class="image-link" href="http://lh4.ggpht.com/_tpWAicrRTb4/TVGMYYqNhMI/AAAAAAAAAKc/AHOybYF9B3M/s800/butler.png"&gt;&lt;img align="left" class="linked-to-original" height="96" src="http://lh5.ggpht.com/_tpWAicrRTb4/TVGMXs3BMMI/AAAAAAAAAKY/JGR-nsKzVSo/s800/butler-thumb.png" style="display: inline; float: left; margin: 0pt 10px 10px 0pt;" width="96" /&gt;&lt;/a&gt;Following a &lt;a href="http://jenkins-ci.org/content/whos-driving-thing" target="_blank" title="Who's Driving?"&gt;fairly public spat&lt;/a&gt; and veiled threats over trademarks by Oracle, the Hudson CI server has been renamed to &lt;a href="http://jenkins-ci.org/" target="_blank" title="Jenkins home"&gt;Jenkins&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;OK, &lt;i&gt;technically&lt;/i&gt; Jenkins is a &lt;i&gt;branch&lt;/i&gt; of the Hudson code, so it's more like &lt;i&gt;Hudkins&lt;/i&gt; or &lt;i&gt;Jenson&lt;/i&gt;. Oracle (sorry, "&lt;i&gt;the Java community&lt;/i&gt;") will continue to develop the Hudson trunk, however the branch appears to have the blessing of the core &lt;s&gt;Hudson&lt;/s&gt; Jenkins development team and the community (the vote to fork appears to have been &lt;a href="http://jenkins-ci.org/content/jenkins" target="_blank"&gt;virtually unanimous&lt;/a&gt;). If it looks like a duck &amp;amp; quacks like a duck....then the parent might just start resembling a &lt;a href="http://en.wikipedia.org/wiki/Dodo" target="_blank"&gt;dodo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'd like to wish the Jenkins team good luck. I've used Hudson to great effect many times, and look forward to the future improvements with the new project butler.&lt;/div&gt;&lt;br class="final-break" style="clear: both;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-5521208827037419377?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/5521208827037419377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=5521208827037419377' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5521208827037419377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5521208827037419377'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2011/02/hudson-is-dead-long-live-jenkins.html' title='Hudson is fired, Jenkins hired!'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_tpWAicrRTb4/TVGMXs3BMMI/AAAAAAAAAKY/JGR-nsKzVSo/s72-c/butler-thumb.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-2819959681779229635</id><published>2011-02-07T12:59:00.001Z</published><updated>2011-02-07T13:00:33.665Z</updated><title type='text'>LSSC 2011</title><content type='html'>&lt;div style="clear: both;"&gt;&lt;a href="http://lssc11.leanssc.org/"&gt;&lt;img class="linked-to-original" height="90" src="http://lh6.ggpht.com/_tpWAicrRTb4/TU_rdpSgDHI/AAAAAAAAAKQ/xRJod0SKJzk/s800/200x1-thumb.png" style="display: block; margin: 0pt auto 10px; text-align: center;" width="200" /&gt;&lt;/a&gt;I'll be attending the Lean Software &amp;amp; Systems Conference in Long Beach, California 3-6 May. I'm not in the States very often any more, so make the most of it. Come over and introduce yourself!&lt;/div&gt;&lt;br class="final-break" style="clear: both;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-2819959681779229635?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/2819959681779229635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=2819959681779229635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/2819959681779229635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/2819959681779229635'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2011/02/lssc-2011.html' title='LSSC 2011'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_tpWAicrRTb4/TU_rdpSgDHI/AAAAAAAAAKQ/xRJod0SKJzk/s72-c/200x1-thumb.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-3632179918867934011</id><published>2011-02-06T12:07:00.000Z</published><updated>2011-02-06T12:07:42.498Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>UPDATED: Keep behavioural driven naming out of unit testing</title><content type='html'>&lt;span style="font-family: arial;"&gt;Something is happening in the Test First world. There appears to be growing use of "&lt;/span&gt;&lt;a href="http://dannorth.net/introducing-bdd/" style="font-family: arial;" target="_blank" title=""&gt;Behavioural Driven Design&lt;/a&gt;&lt;span style="font-family: arial;"&gt;" (BDD). That is, the test names in test classes are becoming sentences describing what the class should do, eg &lt;/span&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;testFailsForDuplicateCustomers()&lt;/span&gt;&lt;span style="font-family: arial;"&gt;. In my opinion this trend is damaging the effectiveness of Test First Design in the field.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Don't get me wrong - I think the fundamental idea behind BDD is sound. But I am finding that this kind of naming approach for unit tests is seriously  detracting from the "code is the documentation" ideal.   If you have a class with method "&lt;/span&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;X&lt;/span&gt;&lt;span style="font-family: arial;"&gt;", you should expect a test method  "&lt;/span&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;testX&lt;/span&gt;&lt;span style="font-family: arial;"&gt;" that defines the method's contract.  If the method's contract is more complex, you might expect to see a set of methods like "&lt;/span&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;testX_NullInput&lt;/span&gt;&lt;span style="font-family: arial;"&gt;" etc. This approach documents the class pretty damned well in my experience. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Now image the same class being tested by something like "&lt;/span&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;testFailsIfCustomerIsNull&lt;/span&gt;&lt;span style="font-family: arial;"&gt;". What fails? What input? Have I tested method "&lt;/span&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;Y&lt;/span&gt;&lt;span style="font-family: arial;"&gt;"? But method "&lt;/span&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;Z&lt;/span&gt;&lt;span style="font-family: arial;"&gt;" shouldn't fail if Customer is null! You end up doing some serious analysis to work out what is going on which fundamentally defeats the object of the tests replacing design documentation. Using BDD test naming here is actively &lt;/span&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;obfuscating&lt;/span&gt;&lt;span style="font-family: arial;"&gt; how the system works at a class level, not clarifying. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;(Note - nothing that I am suggesting excuses obscure method naming. A method should do what it says and say what it does, with the detailed clarification of the contract being defined in the tests. All I am saying is that there should be a simple, obvious mapping between methods and the tests that verify their behaviours)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Where BDD comes into its own is when defining interactions. Integration tests that check the interaction of closely cooperating classes benefit hugely from descriptive naming.  Also User acceptance tests reap huge rewards from the approach since the tests are described in business language that allows a Customer to understand what is being tested. Yes, use BDD naming in these cases because it does help.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Just keep it away from Unit Tests!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;i&gt;&lt;b&gt;UPDATE&lt;/b&gt;&lt;/i&gt;: I wrote this article back in 2007. It's now February 2011, and a lot has happened. Since then those fine chaps &lt;a href="http://www.natpryce.com/"&gt;Nat Pryce&lt;/a&gt; and &lt;a href="http://www.m3p.co.uk/"&gt;Steve Freeman&lt;/a&gt; have written their excellent &lt;a href="http://www.growing-object-oriented-software.com/"&gt;Growing Object Oriented Software with Tests book&lt;/a&gt; showing how it should be done. Jason Gorman's &lt;a href="http://parlezuml.com/blog/bblog/trackback.php/987/"&gt;observations on two distinct TDD styles&lt;/a&gt; also filled in some gaps I had missed. Also, the whole "Software Craftsmanship" movement has moved understanding forward a huge amount by daring to ask questions and clarify. &lt;/span&gt;&lt;span style="font-family: arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;And then there was the clincher, the tool that stuck everything together for me, giving the penny a clear path to drop with a loud &lt;i&gt;Clang!&lt;/i&gt; The &lt;a href="http://testdox.codehaus.org/"&gt;IntelliJ TestDox plugin&lt;/a&gt;. Suddenly the BDD approach to unit tests makes much more sense, to me at least, so I am happy to admit that my views expressed here have now changed. Or at very least, softened a huge amount. I now tend to use behaviours rather than specifics to define class level behaviour.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Which just goes to show what can happen if you keep an open mind and try different approaches. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-3632179918867934011?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/3632179918867934011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=3632179918867934011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3632179918867934011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3632179918867934011'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/10/keep-behavioural-driven-naming-out-of.html' title='UPDATED: Keep behavioural driven naming out of unit testing'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-7046216553859276710</id><published>2010-12-21T09:01:00.002Z</published><updated>2012-01-09T11:39:57.809Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='bad behaviour'/><category scheme='http://www.blogger.com/atom/ns#' term='team health'/><title type='text'>Broken Windows effect proved?</title><content type='html'>&lt;div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img align="left" height="133" src="http://lh3.ggpht.com/_tpWAicrRTb4/TQh9nsGsCVI/AAAAAAAAAJw/TydAMviNOf4/s200/brokenwindow-thumb.jpg" style="display: inline; float: left; margin: 0pt 10px 10px 0pt;" width="200" /&gt;There has been a bunch of stuff written about the “Broken Windows” effect - the way that even good people will begin to do bad things if everything else is bad around them. In areas that look badly maintained, people tend to drop more litter. Where people are obviously flouting the rules others are more likely to bend them themselves. And in software, when you are working on bad code you are more likely to write more bad code.&lt;/div&gt;&lt;br /&gt;&lt;div style="clear: both;"&gt;I first stumbled across the idea in an &lt;a href="http://www.artima.com/intv/fixit2.html" target="_blank" title="interview"&gt;interview with the Pragmatic Programmers&lt;/a&gt;, but the evidence given is fairly apocryphal. So I was pleased to find &lt;a href="http://www.insideinfluence.com/inside-influence-report/2010/12/why-good-people-do-bad-things.html%23more" target="_blank" title="more broken windows "&gt;something more definite&lt;/a&gt;. And it does make for interesting reading. The effect is indeed real, and significant. The number of people breaking social norms when they see that others have done something similar more than doubles. It's the 'no-one will notice another little bit of mess' effect.&lt;/div&gt;&lt;br /&gt;&lt;div style="clear: both;"&gt;The study quoted in the article reinforces the need to maintain a high level of hygiene in your software. Some typical pointers:&lt;/div&gt;&lt;ul style="clear: both;"&gt;&lt;li&gt;Keep classes small, compact and easy to read. Keep honest by using peer review (pair programming, formal review etc).&lt;/li&gt;&lt;li&gt;Keep your code syntactically green. Don't tolerate compiler warnings unless absolutely unavoidable, and even then try to make these exceptions explicit (eg by using annotations). All modern IDEs are able to apply rules to warn of potentially error prone constructs and styles.&lt;/li&gt;&lt;li&gt;If you are serious about unit testing, unit test everything. If you need exceptions (mutators?) then make sure everyone knows what they are and agrees with the decision, then get everyone to police it. Reinforce the social norm.&lt;/li&gt;&lt;li&gt;Keep your tests green. &lt;i&gt;No excuses.&lt;/i&gt; If it breaks, fix it or roll back quickly (I have heard of one team using an SVN hook on their gateway build; if that fails, the changes are immediately and automatically reverted to the last successful build).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Make sure your processes (QA, deployment etc) are slick and clean. If they're not, iterate them until they are. Anything that is difficult to do will encourage quick, dirty hacks and workarounds "until we get around to sorting things out". &lt;/li&gt;&lt;li&gt;Actively drive out all forms of technical debt. Or as one team succinctly put it, “&lt;i&gt;Don’t step over the poo&lt;/i&gt;”. Don’t let tech debt accumulate and become acceptable otherwise it will fester and grow. Technical debt is the software equivalent of broken windows.&lt;/li&gt;&lt;/ul&gt;&lt;div style="clear: both;"&gt;I could go on, but you get the idea. The golden rule is:&lt;/div&gt;&lt;blockquote style="clear: both;"&gt;Don’t live with broken windows. If you see one, &lt;i&gt;&lt;b&gt;fix it!&lt;/b&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;br class="final-break" style="clear: both;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-7046216553859276710?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/7046216553859276710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=7046216553859276710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/7046216553859276710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/7046216553859276710'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2010/12/broken-windows-effect-proved.html' title='Broken Windows effect proved?'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_tpWAicrRTb4/TQh9nsGsCVI/AAAAAAAAAJw/TydAMviNOf4/s72-c/brokenwindow-thumb.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-4234699238844535822</id><published>2010-10-01T17:40:00.001+01:00</published><updated>2011-06-01T16:22:49.006+01:00</updated><title type='text'>Stop Press! It's official. You're better off promoting people randomly</title><content type='html'>&lt;div style="clear: both;"&gt;Those fine people at the &lt;a href="http://improbable.com/" target="_blank" title="Ig Nobel Prizes"&gt;Improbable Research Institute&lt;/a&gt; have awarded the &lt;a href="http://improbable.com/ig/winners/" target="_blank" title="Ig Nobel for Management"&gt;2010 Ig Nobel Prize for Management&lt;/a&gt; to Alessandro Pluchino, Andrea Rapisarda, and Cesare Garofalo of the University of Catania, Italy, for demonstrating mathematically that organizations would become more efficient if they promoted people at random.&lt;br /&gt;&amp;nbsp; &lt;/div&gt;&lt;div style="clear: both;"&gt;So that's it. Maths supports what many people strongly suspected to be true for years.&lt;a href="http://en.wikipedia.org/wiki/Peter_Principle" target="_blank" title="Wikipedia definition"&gt;&lt;i&gt;The Peter Principle is real&lt;/i&gt;&lt;/a&gt;. We can replace all those pointless appraisal systems with a random number generator.&lt;/div&gt;&lt;div style="clear: both;"&gt;&lt;br /&gt;Read their paper &lt;a href="http://arxiv.org/abs/0907.0455" target="_blank" title="Peter Principle Study"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br class="final-break" style="clear: both;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-4234699238844535822?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/4234699238844535822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=4234699238844535822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4234699238844535822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4234699238844535822'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2010/10/stop-press-it-official-you-better-off.html' title='Stop Press! It&amp;#39;s official. You&amp;#39;re better off promoting people randomly'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-2395201558092240456</id><published>2010-09-13T13:23:00.007+01:00</published><updated>2010-09-13T13:38:14.759+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>Too easy to pair? Then automate it!</title><content type='html'>&lt;div style="clear: both;"&gt;&lt;img align="left" height="200" src="http://lh3.ggpht.com/_tpWAicrRTb4/TI4XpXJ7ucI/AAAAAAAAAJQ/N-_fwirJRU4/s200/Cuckoo_clock1-thumb.jpg" style="display: inline; float: left; margin: 0pt 10px 10px 0pt;" width="132" /&gt;"&lt;i&gt;We don't pair all the time, some things are so simple they don't need it&lt;/i&gt;". I have lost count of the number of times I have heard this. &lt;p&gt;It's undoubtedly a seductive idea. Something done multiple times that is so easy that one person can do it, without error, guaranteed. But it is in fact a very subtle process smell, one so subtle that it's easy to overlook/justify.&lt;/div&gt;&lt;div style="clear: both;"&gt;&lt;p&gt;If something is so simple that an individual can do it without error, guaranteed, &lt;i&gt; it is a prime candidate for automation&lt;/i&gt;. Take some time and care (and pair) to free up developers so they can focus on what they're best at - things that require creative thought. Don't waste any more time on the dull and scriptable than you need to.&lt;/div&gt;&lt;br class="final-break" style="clear: both;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-2395201558092240456?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/2395201558092240456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=2395201558092240456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/2395201558092240456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/2395201558092240456'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2010/09/too-easy-to-pair-then-automate-it.html' title='Too easy to pair? Then automate it!'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_tpWAicrRTb4/TI4XpXJ7ucI/AAAAAAAAAJQ/N-_fwirJRU4/s72-c/Cuckoo_clock1-thumb.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-6630984665262032133</id><published>2010-09-13T11:19:00.002+01:00</published><updated>2010-09-13T11:22:53.020+01:00</updated><title type='text'>What's in a name?</title><content type='html'>Everything, young padawan!&lt;br /&gt;&lt;br /&gt;&lt;div style="clear: both;"&gt;&lt;img height="240" src="http://lh4.ggpht.com/_tpWAicrRTb4/TI36nn34maI/AAAAAAAAAJI/1ZafT97ACxs/s800/IMG_1-thumb1.jpg" style="display: block; margin: 0pt auto 10px; text-align: center;" width="378" /&gt;&lt;/div&gt;&lt;br class="final-break" style="clear: both;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-6630984665262032133?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/6630984665262032133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=6630984665262032133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/6630984665262032133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/6630984665262032133'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2010/09/what-in-name.html' title='What&amp;#39;s in a name?'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_tpWAicrRTb4/TI36nn34maI/AAAAAAAAAJI/1ZafT97ACxs/s72-c/IMG_1-thumb1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-6595415569774671802</id><published>2010-07-01T08:48:00.000+01:00</published><updated>2010-07-01T08:52:34.811+01:00</updated><title type='text'>The "Dev Complete" Fallacy</title><content type='html'>&lt;p style="clear: both"&gt;Has your manager ever walked over to you and asked when the story you're working on will be "dev complete"? Or have you ever overheard someone ask in a planning meeting "When will the product be dev complete?". Yes, I'm sure it sounds familiar. It's also one of my least favourite managementspeak phrases because it nonsensical.&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;br /&gt;Let's stop for a moment and consider what's being asked. What is "development complete"? &lt;/p&gt;&lt;p style="clear: both"&gt;&lt;br /&gt;Many managers are stuck in a waterfall, sequential way of thinking. Requirements are thrown over the Chinese wall to developers, who throw it over the wall to QA and then, somehow, magically, working software appears out of the end. To them "dev complete" usually means ready to pass to QA. However the tacit implication is that it is not expected to come back again….that, well, development is complete…. The problem is that unless it's been tested, who can know whether this is the case? And if it there is a problem, then more development is required, so it's not complete.&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;br /&gt;So here's my alternative definition for this bizarre phrase:&lt;/p&gt;&lt;blockquote style="clear: both"&gt;&lt;p&gt;"Dev Complete" means Done. As in Complete. Finished. Tested. Ready to ship.&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear: both"&gt;Any other definition is simply "Dev incomplete".&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;/p&gt;&lt;br class='final-break' style='clear: both' /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-6595415569774671802?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/6595415569774671802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=6595415569774671802' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/6595415569774671802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/6595415569774671802'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2010/07/complete-fallacy.html' title='The &amp;quot;Dev Complete&amp;quot; Fallacy'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-6524450702266443224</id><published>2010-05-26T08:25:00.005+01:00</published><updated>2011-06-01T16:31:18.074+01:00</updated><title type='text'>Drop the "Certified" tag, guys!</title><content type='html'>&lt;div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img align="left" height="200" src="http://lh3.ggpht.com/_tpWAicrRTb4/S-vx1_Ao8VI/AAAAAAAAAI4/aQj9y7f1aWI/s800/200px-Application-certificate-thumb.svg1.png" style="display: inline; float: left; margin-bottom: 10px; margin-left: 0pt; margin-right: 10px; margin-top: 0pt;" width="200" /&gt;Scrum Alliance has now launched its "Certified Scrum Developer" qualification. It's a seductive idea - hire people with this certification and they will have been pre-bootstrapped into an agile way of thinking and working, same as Certified Scrum Master. So why do I think it is such a bad idea?&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;It's taken a while to work it out, but I think I finally understand why I (and some others) don't like it. It's wordology. Pure and simple. "&lt;i&gt;Certificate&lt;/i&gt;" and "&lt;i&gt;Certification&lt;/i&gt;" carries a whole bunch of mental baggage.&lt;br /&gt;Consider these two phrases:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="clear: both;"&gt;"I attended a 5 day Object Oriented Design course"&lt;/blockquote&gt;&lt;blockquote style="clear: both;"&gt;"I am a Certified Object Oriented Designer"&lt;/blockquote&gt;&lt;br /&gt;I am referring to the exact same thing - way back in the Dark Ages I did indeed go on a week long course in OOAD. They gave me a certificate at the end, presumably because I turned up and didn't snore too loudly. Yet the first phrase carries far less authority than the second. &lt;br /&gt;&lt;br /&gt;And here lies the problem with Scrum so-called "&lt;i&gt;Certification&lt;/i&gt;". It suggests that you are an "expert", or at least have attained a level of competence over and above "I have stayed awake through a 2 day course". However, on the flip side, it undoubtedly &lt;i&gt;does&lt;/i&gt; make for a better sales pitch and allow people to make a ton of hard cash issuing the certifications. Then there are the courses to certify the trainers, and certify the trainer trainers, not to mention the yearly subscription to keep your certification....&lt;br /&gt;&lt;br /&gt;The problem could be fixed with the strike of a pen. Renaming &lt;i&gt;Certified Scrum Master&lt;/i&gt; to the "&lt;i&gt;Introduction to Becoming A Scrum Master Course&lt;/i&gt;" would be a great start. While we're at it, rename&lt;i&gt; Certified Scrum Developer &lt;/i&gt;as the "&lt;i&gt;I&lt;/i&gt;&lt;i&gt;ntroduction to Agile Development in Scrum Course&lt;/i&gt;". You get the idea. Reserve "&lt;i&gt;Certified&lt;/i&gt;" for anything that gets assessed properly, where you show that you have indeed &lt;i&gt;mastered&lt;/i&gt; the skills.&lt;br /&gt;&lt;br /&gt;Needless to say I won't be rushing out to become Certified just for the paper certificate. I'll let my CV show that I'm post-certification standard. If a company believes that attending the course is more important than actually being able to &lt;i&gt;do&lt;/i&gt; it then I probably don't want to work there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-6524450702266443224?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/6524450702266443224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=6524450702266443224' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/6524450702266443224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/6524450702266443224'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2010/05/drop-tag-guys.html' title='Drop the &amp;quot;Certified&amp;quot; tag, guys!'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_tpWAicrRTb4/S-vx1_Ao8VI/AAAAAAAAAI4/aQj9y7f1aWI/s72-c/200px-Application-certificate-thumb.svg1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-5613753986815494006</id><published>2010-02-25T16:44:00.003Z</published><updated>2010-02-25T16:46:15.962Z</updated><title type='text'>“We’ll paint it red and call it a Ferrari”</title><content type='html'>&lt;p style="clear: both;"&gt;&lt;img src="http://lh6.ggpht.com/_tpWAicrRTb4/S4ao3fWCsYI/AAAAAAAAAIw/M5KoHMHoLtw/s800/banger-thumb1.jpg" style="margin: 0pt 10px 10px 0pt; display: inline; float: left; width: 169px; height: 110px;" align="left" /&gt;We have all seen them. Aspiring boy racers who have taken an old banger and put on the trimmings of a sports car - spoilers, big noisy exhausts etc. But it doesn’t change what is under the disguise - an old vehicle, nearing the end of its useful life, but can still limp along and get the owner from A to B. Eventually. If you have an old, rusty, Ford Fiesta, you can’t just get away with painting it red and calling it a Ferrari. It is still a Fiesta. &lt;/p&gt;&lt;p style="clear: both;"&gt;Yet it still appears that some parts of the software industry genuinely believe that they can get away with this mentality. Let me say this one more time (with feeling) -&lt;em&gt; you cannot simply take a broken software development process, put some agile tools and ceremonies around it and expect it to perform like the real thing&lt;/em&gt;. Or to put it another way, no matter how many spoilers and exhausts you bolt on, they can never have a significant impact on the performance of something that already has the aerodynamics of a brick and the power of an asthmatic hamster....&lt;/p&gt;&lt;p style="clear: both;"&gt;To change a Fiesta into a Ferrari you need to change what is at the very heart - the engine. And you need to upgrade what that engine is attached to - the chassis, brakes, bodywork, oil. It’s the same with software. To turn your clapped out system into a high performance delivery-focussed process you need to change the people by educating, empowering and inspiring them - they’re your development engine, and many of them will already be up to the new, high performance job if given the chance. Then change anything that stops them performing - existing processes, bureaucracy, corporate inertia. Make nothing sacred - if it’s in the way, &lt;em&gt;remove it&lt;/em&gt;. Now add some performance oil - make the resistance to further change as low as possible. &lt;/p&gt;&lt;p style="clear: both;"&gt;Any vehicle needs a skilled, motivated, passionate driver at the wheel who knows where he wants to go. This is your Product Owner. Put someone like this at the wheel and you &lt;em&gt;just might&lt;/em&gt; have your race winning formula.&lt;/p&gt;&lt;p style="clear: both;"&gt;One final thought to consider. At least with software development you stand a chance of changing your old banger to a Ferrari.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-5613753986815494006?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/5613753986815494006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=5613753986815494006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5613753986815494006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5613753986815494006'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2010/02/well-paint-it-red-and-call-it-ferrari.html' title='“We’ll paint it red and call it a Ferrari”'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_tpWAicrRTb4/S4ao3fWCsYI/AAAAAAAAAIw/M5KoHMHoLtw/s72-c/banger-thumb1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-7265412666005541674</id><published>2010-02-22T14:43:00.008Z</published><updated>2010-02-22T14:50:17.226Z</updated><title type='text'>Repeat after me....</title><content type='html'>&lt;img src="http://lh3.ggpht.com/_tpWAicrRTb4/S4KYAGjsdaI/AAAAAAAAAIk/Nc3HUQIFLTk/s800/Mantra3-thumb.gif" style="margin: 0pt 10px 10px 0pt; display: inline; float: left; width: 144px; height: 61px;" align="left" /&gt;&lt;blockquote style="clear: both;"&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;"&lt;strong&gt;&lt;em&gt;What are we trying to do?"&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;&lt;em&gt;"Where is the failing test?"&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear: both;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;Repeat this mantra all the while you are developing. When you pick up a story, when you start a new &lt;a href="http://blog.energizedwork.com/2007/10/vertical-slicing.html" title="Slicing a story" target="_blank"&gt;slice&lt;/a&gt;, when you rotate onto a story, when you simply feel bogged down in detail and need enlightenment.&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;These questions leave you with nowhere to run to, nowhere to hide. And certainly no excuses.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-7265412666005541674?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/7265412666005541674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=7265412666005541674' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/7265412666005541674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/7265412666005541674'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2010/02/repeat-after-me.html' title='Repeat after me....'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_tpWAicrRTb4/S4KYAGjsdaI/AAAAAAAAAIk/Nc3HUQIFLTk/s72-c/Mantra3-thumb.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-5890363439842547661</id><published>2010-02-03T15:51:00.002Z</published><updated>2010-02-03T15:58:31.600Z</updated><title type='text'>Starting with Kanban Q&amp;A</title><content type='html'>&lt;p style="clear: both;"&gt;OK, I admit it. I have played on the Dark Side, and can confirm they have some damned good &lt;a href="http://www.thinkgeek.com/tshirts-apparel/unisex/popculture/939f/" title="Come to the dark side...." target="_blank"&gt;cookies&lt;/a&gt;. Yes, I introduced kanban to the Scrum process being used by my customer.....&lt;br /&gt;&lt;br /&gt;I know there are many people interested in this technique, so here are some key questions (and answers!) that you will come across during rollout. It's not exhaustive, but hopefully it will provide a practical starting point from which you can experiment. I have assumed some knowledge of what kanban is - limited work in progress, not timeboxed etc etc.&lt;br /&gt;&lt;br /&gt;Firstly, some background. The project I was coaching consisted of three cooperating but independent teams consisting of 4-6 devs and 1 QA. There is just one Business Analyst acting as Customer for the project - Product Owner by proxy. The project used fairly standard Scrum techniques to manage progress - stories on cards, on a board, estimated using planning poker. The board consisted of swim lanes Not Started, In Progress, QA and Done. Standard stuff.&lt;/p&gt;&lt;p style="clear: both;"&gt;However they were suffering from problems associated with the abstract nature of story points - are they really days or fluffy bunnies? And how many Gummi Bears make a Mars Bar? So I was looking for a way to simplify planning further but without losing the ability to plan ahead.&lt;/p&gt;&lt;p style="clear: both;"&gt;So what happened when we rolled out a kanban system into the first team and limited their work in progress? They had to address certain key questions:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Q. "How many columns should we have?"&lt;br /&gt;&lt;br /&gt;A.&lt;/em&gt;&lt;/strong&gt; The first team initially stuck with the old trusty "Not Started, In Dev, QA, Done" pattern. But they put a work in progress (WIP) limit across both In Dev and QA columns. Later teams simply didn't bother differentiating, and simply have an "In Progress" column, forcing developers to actually &lt;em&gt;talk&lt;/em&gt; to QAs when a card is finished (a radical idea at the time!).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Q. "What are our WIP limits?"&lt;br /&gt;&lt;br /&gt;A. &lt;/em&gt;&lt;/strong&gt;There was some interesting discussion around this, especially since all the teams were starting to actively encourage pair programming. They quickly realised that the WIP limit can be used to enforce pairing, but also allow a degree of solo development.&lt;/p&gt;&lt;p style="clear: both;"&gt;Remembering we have a team of 6 developers, initially they went for 3 in the 'Not Started' and 4 for 'In Dev/QA'. Considering the latter first, a limit of 4 allows 2 developers to work independently without pairing, the rest are forced to pair up.&lt;br /&gt;&lt;br /&gt;The team quickly found that the 3 card 'Not Started' WIP limit was too small. It was running out too quickly, and it did not allow enough focus on what comes next (eg stories that naturally group together). It currently stands at 6, which definitely seems to be better without changing the cycle time too much.&lt;br /&gt;&lt;br /&gt;The team is operating with no slack in their In Dev/QA queue. It's always full. This appears to be working so far, but there have been no "urgent, do now" stories yet.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Q. "How do we stop blowing our WIP limit?"&lt;br /&gt;&lt;br /&gt;A.&lt;/em&gt;&lt;/strong&gt; A problem quickly arose from the particular flavour of storycard discipline I teach. I ask people to start with a simple story, and write decisions and agreed requirements on the back to capture them as they are discovered - hence it's often useful to take it with you when working on the card. An avatar is used as the placeholder on the board to show what's missing. &lt;/p&gt;&lt;p style="clear: both;"&gt;It quickly became apparent that stories were being sucked into empty WIP spaces because the card was on someone's desk, even though an avatar was there; the WIP space wasn't "real". This meant the agreed WIP limit was being exceeded. This was the case even though the team only had enough magnets for the limit (magnets stay on the board, but were being reused).&lt;br /&gt;&lt;br /&gt;They solved this initially by having 'placeholder' cards - generic cards that were swapped with real story cards. This carried on until the team had the discipline to only pull in cards when the magnets were in an "available" area on the board. (Photos to follow!)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Q. "How do we track our cycle time?"&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;strong&gt;&lt;em&gt;A. &lt;/em&gt;&lt;/strong&gt;Cycle time is the time from a story being pulled out of the backlog to be done to actually reaching "Done" - a critical measurement for planning. The solution for tracking this was elegantly simple - the Customer has a date stamp. When a card gets pulled in to 'Not Started', it gets stamped. When the Customer sees the story has been finished to his satisfaction, it gets stamped. No-one else is allowed to use the stamp, so the Customer &lt;em&gt;has&lt;/em&gt; to see the story demonstrated. Simple.&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;strong&gt;&lt;em&gt;&lt;br /&gt;Q. "I can't line up cards that follow a natural order"&lt;br /&gt;&lt;br /&gt;A.&lt;/em&gt;&lt;/strong&gt; This was a Big Issue for some of the team. Limiting the incoming work had an interesting effect - it forced people to &lt;em&gt;talk&lt;/em&gt; to each other more! Especially the developer-customer conversations. Rigidly limiting the number of cards in 'Not Started' encouraged the Customer and Developers to work out what really needed to be there. An unexpected but valuable effect.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Q. "What about blocked stories?"&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;strong&gt;&lt;em&gt;A.&lt;/em&gt;&lt;/strong&gt; Many of the stories in the project are dependent on 3rd party software. So if that software is not working, the story cannot progress to "Done". It is blocked. There is no point in a blocked story blocking a WIP slot, so the team introduced the idea of a "Sin Bin" - stories that are blocked beyond the team's control. Stories in the Bin are monitored for progress, and when they become unblocked they are re-added to the backlog for prioritisation as normal. The Sin Bin also provided a useful visual indication of just how much work was being blocked by the 3rd party.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;strong&gt;&lt;em&gt;Q. "How do we show burndown/progress?"&lt;br /&gt;&lt;br /&gt;A.&lt;/em&gt;&lt;/strong&gt; This is the one issue that I am not yet happy with. How to estimate a finish date for a given amount of work.&lt;br /&gt;&lt;br /&gt;On the one hand, there is the cycle time. No problem there. A story card start-to-finish is taking 3 days or so. But the problem is the extensive backlog. There is no guarantee that the stories are correctly sized, so either the team needs to go through every single story to make sure it is roughly the right size (or is an 'epic' equivalent to 2, or 3, or however many real stories), or to increase the size of a story to a "Minimum Marketable Feature" and track those.&lt;/p&gt;&lt;p style="clear: both;"&gt;I admit I don't like the idea of MMFs - in this context they would be too big a slice through the system and remove the benefits of iterative development. Currently the teams are taking the first approach - estimating epics as stories.&lt;/p&gt;&lt;p style="clear: both;"&gt;Another issue around planning is the external business. Like many companies, they are addicted to Gantt charts and are nervous about not having a definite statement that "&lt;span style="font-style: italic;"&gt;this story will take x days&lt;/span&gt;". Story points and burndown graphs showing the real situation were not always well received because they didn't fit the "plan". Switching to counting cards is having similar problems, and is seen by many as an oversimplification.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Q. "We don't have timeboxes any more, so do we still need regular demonstrations? Retrospectives?"&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;strong&gt;&lt;em&gt;A. &lt;/em&gt;&lt;/strong&gt;YES! The teams demonstrate their progress to a wider audience of stakeholders every week. Everything demonstrated is truly "Done" - it is ready to ship. No smoke and mirrors, no mock layers, and everything running on the real product. This approach has been hugely successful in motivating the team, and ensuring the stakeholders know exactly where the issues are. By using a weekly heartbeat like this, any problems and decisions can be identified and addressed quickly. &lt;/p&gt;&lt;p style="clear: both;"&gt;Teams are still retrospecting every week too. However the next logical step would be to change this to ad hoc &lt;em&gt;kaizen&lt;/em&gt; events as problems are found, and maybe holding a larger, formal retrospective less frequently.&lt;/p&gt;&lt;p style="clear: both;"&gt;Planning Games are held when required - i.e. when the 'Not Started' column is nearly empty. And because they only need to pick a maximum of 6 cards they tend to be brief.&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;br /&gt;So overall, how has the change been received? The main feedback from the people actively involved with the project has been almost entirely positive. Everyone feels that it feels like it is a more natural way to work.&lt;br /&gt;&lt;br /&gt;From a coach's point of view, the change to "Scrumban" was far easier than I imagined. Why did I wait so long? &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-5890363439842547661?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/5890363439842547661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=5890363439842547661' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5890363439842547661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5890363439842547661'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2010/02/starting-with-kanban-q.html' title='Starting with Kanban Q&amp;amp;A'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-3452947813852705679</id><published>2010-02-03T15:09:00.002Z</published><updated>2010-02-03T15:20:17.072Z</updated><title type='text'>Don't just interview new developers. Audition them!</title><content type='html'>&lt;p style="clear: both;"&gt;&lt;a href="http://lh6.ggpht.com/_tpWAicrRTb4/S2mRlMQMOgI/AAAAAAAAAIg/raGuiiBvEic/s800/2113641168_61468c64e8_m1.jpg" class="image-link"&gt;&lt;img class="linked-to-original" src="http://lh4.ggpht.com/_tpWAicrRTb4/S2mRkhu8dhI/AAAAAAAAAIc/ud7W36QsfA8/s800/2113641168_61468c64e8_m1-thumb.jpg" style="margin: 0pt 10px 10px 0pt; display: inline; float: left;" align="left" width="240" height="180" /&gt;&lt;/a&gt;It's such a common mistake. A company claims to be "agile" (whatever that is) yet keeps the old, stale accoutrements of waterfall interviews. The developer candidate walks in, answers random questions on what can relate to extremely wide and deep subject matter, and is then judged on their ability &lt;em&gt;without them ever actually demonstrating that they can do the job&lt;/em&gt;. Sometimes the successful candidate really can fit in with the team, sometimes not. But most importantly, good, well suited people will inevitably be dismissed as unsuitable simply because they learn the principles and not the detail.&lt;br /&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;Being a "good" software developer is no longer about memorising a spec. The ability to regurgitate arbitrary sections of a language specification parrot fashion on request, although previously useful, has been de-emphasised by the invention of radical new ways to store information. Like &lt;em&gt;books.&lt;/em&gt; And &lt;em&gt;the internet&lt;/em&gt;. All you need are the basic frameworks, objects and principles; i.e. you know the bare bones, but look up the detail.&lt;br /&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;Nor is software development about how you react as an individual to unexpected coding puzzles while denied even the most basic of tools to help you - if the first reaction is "I wouldn't normally solve it like this..." (or worse, "There's a smarter way but you're not letting me use it") then the entire exercise is likely to be pointless. I have lost count of the number of companies who, over the years, have handed me a pen and paper, or a whiteboard marker, and expected me to write a technically correct solution to an abstract problem. No real world example, so it's not real world coding.&lt;br /&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;Agile teams are about &lt;span style="font-style: italic;"&gt;people&lt;/span&gt; and the way they interact. It is all about being able to &lt;em&gt;work smart&lt;/em&gt;. It is about being able to write good code collaboratively, helped by tests. The recruitment process needs to put more emphasis on interactions, initiative, and ability to process unfamiliar information - the &lt;em&gt;wetware&lt;/em&gt; aspect of development. So what if you cannot remember the exact interface to QuadCurve2D? As long as you know it exists and understand the design patterns it is based on you can look up the details. &lt;/p&gt;&lt;p style="clear: both;"&gt;So how to identify the right people for the job if traditional interview techniques don't work?&lt;/p&gt;&lt;p style="clear: both;"&gt;Simple. &lt;em&gt;&lt;strong&gt;Audition them&lt;/strong&gt;&lt;/em&gt;. Get the candidate actually &lt;em&gt;doing&lt;/em&gt; something related to the job they have applied for. Do they look for the right things from the start? ("Where's the continuous integration server?", "Where are your tests?"). Get them down and dirty in the codebase, see their reaction. Do they get lost in the detail, or do they start to tease out the structure with tests? Code with them. Cooperate with them. Can you work with them? Does their coding behaviour fit team culture? How fast do they learn? Are they a craftsman or hacker?&lt;/p&gt;&lt;p style="clear: both;"&gt;You could even say you are unit testing the developer.&lt;br /&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;Auditions do require a little more effort, but in my experience they take some of the guesswork out of the traditional interview process when trying to find good people for the team.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-3452947813852705679?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/3452947813852705679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=3452947813852705679' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3452947813852705679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3452947813852705679'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2010/02/don-just-interview-new-developers_03.html' title='Don&amp;#39;t just interview new developers. Audition them!'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_tpWAicrRTb4/S2mRkhu8dhI/AAAAAAAAAIc/ud7W36QsfA8/s72-c/2113641168_61468c64e8_m1-thumb.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8506525509930832499</id><published>2010-02-02T12:47:00.002Z</published><updated>2010-02-02T14:17:21.672Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='bad behaviour'/><category scheme='http://www.blogger.com/atom/ns#' term='failure'/><title type='text'>Sign up for change</title><content type='html'>&lt;p style="clear: both;"&gt;&lt;a href="http://www.independent.co.uk/" title="The Independent" target="_blank"&gt;&lt;em&gt;The Independent&lt;/em&gt;&lt;/a&gt; has recently published an &lt;a href="http://www.independent.co.uk/news/uk/politics/labours-computer-blunders-cost-16326bn-1871967.html" title="Labour's computer blunders cost £26bn" target="_blank"&gt;article highlighting the state of the UK Government's IT projects&lt;/a&gt;. Let's just say that it's not a success story:&lt;/p&gt;&lt;blockquote style="clear: both;"&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_tpWAicrRTb4/S2ge-J25eKI/AAAAAAAAAIY/3Xy4sOIBtTw/s800/fail-keyboard.jpg" class="image-link"&gt;&lt;img class="linked-to-original" src="http://lh3.ggpht.com/_tpWAicrRTb4/S2ge8oUIBzI/AAAAAAAAAIU/PeIishjtaC8/s800/fail-keyboard-thumb.jpg" style="margin: 0pt 10px 10px 0pt; display: inline; float: left;" align="left" width="380" height="237" /&gt;&lt;/a&gt;&lt;em&gt;...the total cost of Labour's 10 most notorious IT failures is equivalent to more than half of the budget for Britain's schools last year. Parliament's spending watchdog has described the projects as "fundamentally flawed" and blamed ministers for "stupendous incompetence" in managing them.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear: both;"&gt;Think about it. That's £&lt;em&gt;26 billion&lt;/em&gt; of taxpayers' money down the drain because of "&lt;em&gt;fundamentally flawed&lt;/em&gt;" projects and "&lt;em&gt;stupendous incompetence&lt;/em&gt;". Putting this into context, university funding is being cut by a mere £449 &lt;em&gt;million&lt;/em&gt; next year - so we are cutting investment in our future, while frittering away &lt;em&gt;&lt;strong&gt;£26 billion&lt;/strong&gt;&lt;/em&gt; on avoidable failures. &lt;em&gt;Epic Fail&lt;/em&gt;.&lt;/p&gt;&lt;p style="clear: both;"&gt;I have already suggested that &lt;a href="http://blog.thirstybear.co.uk/2009/11/government-it-failures-could-we-do.html" title="Could we do better?" target="_blank"&gt;these failures are likely to have been entirely avoidable&lt;/a&gt;. &lt;a href="http://peripateticaxiom.blogspot.com/2010/01/uk-goverment-it-failures.html" title="Keith Braithewaite's response" target="_blank"&gt;So have others&lt;/a&gt;. But there needs to be a fundamental change in the way that Government IT projects are run.&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;a href="http://blog.robbowley.net/" title="Rob Bowley" target="_blank"&gt;Rob Bowley&lt;/a&gt; has started a &lt;a href="http://petitions.number10.gov.uk/ITProcessReview/" title="IT Review petition" target="_blank"&gt;petition to Number 10&lt;/a&gt; to try and raise the profile of this problem with the Government. It reads:&lt;/p&gt;&lt;blockquote style="clear: both;"&gt;&lt;p&gt;&lt;em&gt;We the undersigned are tired of hearing how much of our money is being blown on failed governemt IT projects.&lt;br /&gt;&lt;br /&gt;We believe that this is mainly due to the nature in which these projects are firstly procured and then delivered - that of demanding and committing to all the requirements for enormous projects up front, consigning them to failure before they have even begun.&lt;br /&gt;&lt;br /&gt;The private sector has mostly moved away from this failed model to an incremental approach, which allows for changes in understanding and requirements and enormously reduces the chances of failure. It's about time our government did too.&lt;br /&gt;&lt;br /&gt;We ask the Prime Minister to demand a review of the current approach and look at adopting a more incremental and agile approach to Government IT projects&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear: both;"&gt; Whether it makes a difference only time will tell, but I urge anyone who cares about public sector IT development to sign it. Any journey starts with a first step, and this might be it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8506525509930832499?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8506525509930832499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8506525509930832499' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8506525509930832499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8506525509930832499'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2010/02/sign-up-for-change.html' title='Sign up for change'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_tpWAicrRTb4/S2ge8oUIBzI/AAAAAAAAAIU/PeIishjtaC8/s72-c/fail-keyboard-thumb.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-1903140410583538262</id><published>2010-01-22T12:21:00.002Z</published><updated>2010-01-22T12:23:03.931Z</updated><title type='text'>Japanese Proverb</title><content type='html'>&lt;p style="clear: both;"&gt;Just read an article containing this Japanese proverb:&lt;/p&gt;&lt;blockquote style="clear: both;"&gt;&lt;p&gt;"&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;If you don't know what to do, take a step forward&lt;/span&gt;"&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear: both;"&gt;It's been a long time since I have read anything that sums up iterative improvement quite so well.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-1903140410583538262?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/1903140410583538262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=1903140410583538262' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1903140410583538262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1903140410583538262'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2010/01/japanese-proverb.html' title='Japanese Proverb'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-4872803946369395656</id><published>2010-01-21T15:06:00.001Z</published><updated>2010-01-21T15:06:53.967Z</updated><title type='text'>Using agile tools takes away some of your intuition</title><content type='html'>&lt;p style="clear: both"&gt;&lt;img src="http://lh5.ggpht.com/_tpWAicrRTb4/S1hthKPQNpI/AAAAAAAAAIM/ecnk4sQBRdI/s800/Circular_slide_rule1-thumb.jpg" height="371" width="379" style=" text-align: center; display: block; margin: 0 auto 10px;" /&gt;It's no secret, I &lt;em&gt;really&lt;/em&gt; don't like using tools to run agile projects. More than that, in my opinion giving an inexperienced agile team an "agile tool" is like giving a toddler a chainsaw - it's going to end badly. Give me index cards, pens and a whiteboard anyday. &lt;/p&gt;&lt;p style="clear: both"&gt;&lt;a href="http://www.allankelly.net/" title="allan kelly" target="_blank"&gt;Allan Kelly&lt;/a&gt; has beaten me to &lt;a href="http://allankelly.blogspot.com/2010/01/new-to-agile-want-to-know-which-tool-to.html" title="New to Agile? Want to know which tool to use? " target="_blank"&gt;blogging about tools&lt;/a&gt; - and hit upon an interesting anecdote from &lt;a href="http://en.wikipedia.org/wiki/Jack_Kilby" title="Jack Kilby" target="_blank"&gt;Jack Kilby&lt;/a&gt;, inventor of the silicon chip. Basically Jack believes that the replacement of the slide rule with calculators has taken something away from engineering. Intuition. Using a tool (the calculator) distanced the engineer from needing to know what he was doing (the calculation). As someone who has used both calculator and slide rule, I tend to agree.&lt;/p&gt;&lt;p style="clear: both"&gt;And here lies the problem with agile tools. &lt;/p&gt;&lt;p style="clear: both"&gt;Using complex tools takes away a basal intuition about what you are trying to do. You lose that indefinable "connection" with the product. You might even say you lose the &lt;em&gt;craftmanship&lt;/em&gt;. Another illustration might be the difference between bland, machined furniture and furniture that has been hand crafted by skilled cabinet makers - building 'by hand' copes effortlessly with the small, unexpected imperfections that rigid machine programs do not cope well with, resulting in a more polished product. That's not to say the cabinet makers don't use the occasional power drill or sander - &lt;em&gt;but they understand when it is appropriate.&lt;/em&gt;&lt;/p&gt;&lt;p style="clear: both"&gt;So stick with cards and pens at first until you understand when using tools (and which one!) is appropriate. Keep you intuition intact. Your product will be better for it.&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;/p&gt;&lt;br class='final-break' style='clear: both' /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-4872803946369395656?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/4872803946369395656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=4872803946369395656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4872803946369395656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4872803946369395656'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2010/01/using-agile-tools-takes-away-some-of.html' title='Using agile tools takes away some of your intuition'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_tpWAicrRTb4/S1hthKPQNpI/AAAAAAAAAIM/ecnk4sQBRdI/s72-c/Circular_slide_rule1-thumb.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-7548714678745506520</id><published>2010-01-19T13:19:00.001Z</published><updated>2010-01-19T13:19:35.237Z</updated><title type='text'>Have tea with Energized Work</title><content type='html'>&lt;p style="clear: both"&gt;&lt;img src="http://lh4.ggpht.com/_tpWAicrRTb4/S1WxYzIHq9I/AAAAAAAAAIE/lXUyKBT9pk8/s800/200px-Pirate_Flag_of_Rack_Rackham-thumb.svg1.png" height="133" align="left" width="200" style=" display: inline; float: left; margin: 0 10px 10px 0;" /&gt;Those nice people at &lt;a href="http://www.energizedwork.com/" title="Energized Work" target="_blank"&gt;Energized Work&lt;/a&gt; have extended an offer for an informal chat - &lt;a href="http://blog.energizedwork.com/2010/01/invite-us-around-for-cup-of-tea.html" title="more tea vicar?" target="_blank"&gt;all for the cost of a cup of tea&lt;/a&gt; (or coffee, in Gus' case, although I've heard he is quite partial to green tea). &lt;/p&gt;&lt;p style="clear: both"&gt;So if you would like to see a presentation, or brown bag, or simply want to chat with the 2009 &lt;a href="http://www.agilealliance.org/show/1656" title="Gordon Pask Award" target="_blank"&gt;Gordon Pask Award&lt;/a&gt; winners and see what makes them tick, then drop them a line.&lt;br /&gt;&lt;br /&gt;One thing I can guarantee - you will find the meeting challenging and productive.&lt;/p&gt;&lt;br class='final-break' style='clear: both' /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-7548714678745506520?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/7548714678745506520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=7548714678745506520' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/7548714678745506520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/7548714678745506520'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2010/01/have-tea-with-energized-work.html' title='Have tea with Energized Work'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_tpWAicrRTb4/S1WxYzIHq9I/AAAAAAAAAIE/lXUyKBT9pk8/s72-c/200px-Pirate_Flag_of_Rack_Rackham-thumb.svg1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8973629863334123378</id><published>2009-11-30T16:43:00.003Z</published><updated>2009-11-30T16:49:22.839Z</updated><title type='text'>Services, clients, chickens and eggs</title><content type='html'>&lt;p style="clear: both;"&gt;&lt;img src="http://lh6.ggpht.com/_tpWAicrRTb4/SxP2FC8iLFI/AAAAAAAAAH8/epdXHTH7350/s800/Chicken_Feed1-thumb.jpg" style="margin: 0pt 10px 10px 0pt; display: inline; float: left;" align="left" width="120" height="69" /&gt;I find it remarkable how some teams manage to invent new and exciting ways to undermine the benefits of agile process and principles. The latest I have come across is what I have started to call the SOA chicken and egg dilemma - how do you develop a service and an associated client?&lt;/p&gt;&lt;p style="clear: both;"&gt;Here is the wrong (but sadly too common) way to approach this. Mock the client, build the service. Then mock the service and build the client. Then integrate. Each step being presented to the Product Owner as “done” separately. Worse still, some projects are using separate teams to develop each side.&lt;/p&gt;&lt;p style="clear: both;"&gt;See the problem? It’s mini-waterfall. Make the service, make the client, make it work. It can’t be used until you have developed both sides in isolation and integrated. Each side is based on &lt;a href="http://en.wikipedia.org/wiki/Big_Design_Up_Front" title="Big Up Front Design" target="_blank"&gt;BUFD&lt;/a&gt; assumptions about what it should do, and not what the system &lt;em&gt;needs&lt;/em&gt; to do from a user perspective.&lt;/p&gt;&lt;p style="clear: both;"&gt;OK, so how would I handle this? &lt;em&gt;&lt;span style="font-weight: bold;"&gt;Slice the functionality, not the components.&lt;/span&gt; &lt;/em&gt;Pick a nice, easy user oriented function involving the client-service combo, and make it work end-to-end. Then pick the next piece of functionality, make it work, thickening the slice. Iterate until sufficient. By all means use mocks to make life easier, but don't mislead yourself and your customer into thinking that if it works with the mock it’s ready to ship. Only ever demo as complete using a real client and service.&lt;/p&gt;&lt;p style="clear: both;"&gt;By approaching the problem in this way you get all the usual benefits - ability to ship working functionality as far as has been implemented, fast identification of design problems, ability to finish when there is just enough functionality.&lt;/p&gt;&lt;p style="clear: both;"&gt;The principle underlying this approach is simple. Done is &lt;em&gt;&lt;strong&gt;DONE&lt;/strong&gt;&lt;/em&gt;. No smoke. No mirrors. No excuses. If it can’t ship it ain’t finished.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8973629863334123378?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8973629863334123378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8973629863334123378' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8973629863334123378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8973629863334123378'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/11/services-clients-chickens-and-eggs.html' title='Services, clients, chickens and eggs'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_tpWAicrRTb4/SxP2FC8iLFI/AAAAAAAAAH8/epdXHTH7350/s72-c/Chicken_Feed1-thumb.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-2392592736262637900</id><published>2009-11-03T11:54:00.005Z</published><updated>2009-11-03T12:37:20.053Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='bad behaviour'/><category scheme='http://www.blogger.com/atom/ns#' term='failure'/><title type='text'>Government IT failures - could we do better?</title><content type='html'>&lt;p style="clear: both;"&gt;&lt;img src="http://lh5.ggpht.com/_tpWAicrRTb4/SvAaAxRtJpI/AAAAAAAAAHc/8NdNTtsLzZA/s800/epicfail-thumb-268x358-2.jpg" style="margin: 0pt 10px 10px 0pt; display: inline; float: left; width: 109px; height: 146px;" align="left" /&gt;Once again the UK Government has a &lt;a href="http://news.bbc.co.uk/1/hi/uk_politics/8339084.stm" title="Epic FAIL!" target="_blank"&gt;failed IT project&lt;/a&gt;. Failed as in almost three times over budget (an approximate overspend of a whopping &lt;em&gt;£456 &lt;/em&gt;&lt;em&gt;million&lt;/em&gt;), 3 years late (and still not delivered) and not satisfying fundamental requirements.&lt;/p&gt;&lt;p style="clear: both;"&gt;The chairman of the committee commented, "There was not even a minimum level of competence in the planning and execution of this project." Ouch!&lt;/p&gt;&lt;p style="clear: both;"&gt;So what went wrong? From the &lt;a href="http://www.tsoshop.co.uk/bookstore.asp?Action=Book&amp;amp;ProductId=9780215541628" title="Epic FAIL report" target="_blank"&gt;Public Accounts Committee report&lt;/a&gt; it appears that some of the key issues were:&lt;/p&gt;&lt;ul style="clear: both;"&gt;&lt;li&gt;Underestimating technical complexity&lt;/li&gt;&lt;li&gt;Underestimating the need to standardise ways of working to avoid excessive customisation&lt;/li&gt;&lt;li&gt;Poor planning&lt;/li&gt;&lt;li&gt;Poor financial monitoring&lt;/li&gt;&lt;li&gt;Poor supplier management&lt;/li&gt;&lt;li&gt;Too little control over changes&lt;/li&gt;&lt;/ul&gt;&lt;p style="clear: both;"&gt;Costs and progress were not monitored for &lt;em&gt;3 years&lt;/em&gt;?! &lt;/p&gt;&lt;p style="clear: both;"&gt;Sounds familiar? It does to me - it smells like a typical "throw the requirements over the wall and hope" waterfall failure pattern.&lt;/p&gt;&lt;p style="clear: both;"&gt;But would a more agile, flexible approach helped us here?&lt;/p&gt;&lt;p style="clear: both;"&gt;Continuous delivery of requested features that were truly "Done" and ready to ship would have highlighted the project was floundering early. Iteratively delivering real features enables open, honest and irrefutable reporting, including useful data like estimated end dates, and cash burn so providing financial monitoring. &lt;/p&gt;&lt;p style="clear: both;"&gt;Highlighting a failing project early allows the right conversations to take place, leading to corrective action before the situation is critical. It is highly likely that problems with work practices, excessive customisation and technical difficulties would have been identified and fixed early.&lt;/p&gt;&lt;p style="clear: both;"&gt;Finally, controlling changes. By making the resistance to change as low as possible and applying a customer focussed "&lt;em&gt;what is important&lt;/em&gt;" criteria the system would have had the most valuable features implemented first. This ensures the true nature of the project reveals itself very quickly - so if it is technically complex, it is discovered quickly and either mitigated (maybe the difficult feature is not that important after all?), or the project can be shelved or cancelled completely.&lt;/p&gt;&lt;p style="clear: both;"&gt;So in my view, using some common sense could have helped this project deliver, or at very least not burn £456 million in a failure.&lt;/p&gt;&lt;p style="clear: both;"&gt;There are two more points I would make. I don't know who was to blame, nor do I care. But I can see two fundamental behaviours that compounded a bad situation:&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;/p&gt;&lt;ul style="clear: both;"&gt;&lt;li&gt;The Government abdicated its responsibility as Product Owner. Allowing a team to go dark for 3 years, especially when they have effectively a blank cheque, is simply ridiculous.&lt;/li&gt;&lt;li&gt;The Supplier abdicated its responsibility as development team. Even if the Product Owner is not engaging fully, I believe that a Team has a &lt;em&gt;professional&lt;/em&gt; responsibility to inform them of progress, good or bad.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;I see these failure modes all the time. But it does not have to be like this - there are a growing number of genuinely professional companies, teams and developers who could improve on this performance if only they were given the chance.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-2392592736262637900?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/2392592736262637900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=2392592736262637900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/2392592736262637900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/2392592736262637900'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/11/government-it-failures-could-we-do.html' title='Government IT failures - could we do better?'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_tpWAicrRTb4/SvAaAxRtJpI/AAAAAAAAAHc/8NdNTtsLzZA/s72-c/epicfail-thumb-268x358-2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-4543208744711823209</id><published>2009-10-27T09:10:00.001Z</published><updated>2009-10-27T09:10:34.251Z</updated><title type='text'>Liskov Ducks</title><content type='html'>&lt;p style="clear: both"&gt;In case you missed it, here is the Liskov Substitution Principle summarised in a handy motivational poster.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;a href="http://lh5.ggpht.com/_tpWAicrRTb4/Sua5B9c70WI/AAAAAAAAAHQ/I3jmSGKcK4o/s800/LiskovSubtitutionPrinciple.jpg" class="image-link"&gt;&lt;img class="linked-to-original" src="http://lh4.ggpht.com/_tpWAicrRTb4/Sua5BDxR4AI/AAAAAAAAAHM/gSMGriQG6U0/s800/LiskovSubtitutionPrinciple-thumb.jpg" height="303" align="left" width="380" style=" display: inline; float: left; margin: 0 10px 10px 0;" /&gt;&lt;/a&gt;&lt;br style="clear: both" /&gt;(from a &lt;a href="http://www.lostechies.com/blogs/derickbailey/archive/2009/02/11/solid-development-principles-in-motivational-pictures.aspx" title="SOLID motivational posters" target="_blank"&gt;set of originals&lt;/a&gt; by &lt;a href="http://www.lostechies.com/blogs/derickbailey/default.aspx" title="Derick Bailey" target="_blank"&gt;Derick Bailey&lt;/a&gt;, released under Creative Commons) &lt;/p&gt;&lt;br class='final-break' style='clear: both' /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-4543208744711823209?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/4543208744711823209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=4543208744711823209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4543208744711823209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4543208744711823209'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/10/liskov-ducks.html' title='Liskov Ducks'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_tpWAicrRTb4/Sua5BDxR4AI/AAAAAAAAAHM/gSMGriQG6U0/s72-c/LiskovSubtitutionPrinciple-thumb.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-1128786924884454519</id><published>2009-10-27T09:02:00.000Z</published><updated>2009-10-27T09:02:29.912Z</updated><title type='text'>Burn up? Burn down? Who cares?</title><content type='html'>&lt;p style="clear: both"&gt;It seems that some people have some quite strong views on the "right" way to track progress. Here's my view.&lt;/p&gt;&lt;p style="clear: both"&gt;In the red corner, we have the traditional burn-&lt;em&gt;down&lt;/em&gt; graph. You start with a certain amount of estimated work, and as you finish it you cross it off the list. You finish when you hit zero. &lt;/p&gt;&lt;p style="clear: both"&gt;&lt;a href="http://lh4.ggpht.com/_tpWAicrRTb4/SuXmf7YDq1I/AAAAAAAAAGw/cNwoqt7zqRs/s800/burndown_plain-thumb-full.gif" class="image-link"&gt;&lt;img class="linked-to-original" src="http://lh5.ggpht.com/_tpWAicrRTb4/SuXmfheNehI/AAAAAAAAAGs/wOMR9OwmJQo/s800/burndown_plain-thumb1.gif" height="272" width="379" style=" text-align: center; display: block; margin: 0 auto 10px;" /&gt;&lt;/a&gt;In the blue corner, we have the burn-&lt;em&gt;up&lt;/em&gt; graph. Here you still have a certain amount of estimated work represented as a line across the graph. Work is added cumulatively and you finish when you reach the target amount of work. &lt;/p&gt;&lt;p style="clear: both"&gt;&lt;img src="http://lh6.ggpht.com/_tpWAicrRTb4/SuXmgE5MWLI/AAAAAAAAAG0/D_ownPbURWI/s800/burnup_basic-thumb1.gif" height="280" width="380" style=" text-align: center; display: block; margin: 0 auto 10px;" /&gt;OK, so what's the difference? In my opinion, not much. Some suggest that a burn-up graph is psychologically more motivating because it is going up. Others I have spoken to prefer to see completion as zero, and like to see work left heading downwards. Personally I'm with the burn-downers.&lt;/p&gt;&lt;p style="clear: both"&gt;Another factor in choosing which way the burn goes might be ease of changing the goalposts - in other words, how easy is it to add or remove from the backlog estimate. Let's throw in 50% more unexpected work into iteration 7:&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;img src="http://lh5.ggpht.com/_tpWAicrRTb4/SuXmggchStI/AAAAAAAAAG8/wBKBJmhvUN0/s800/burndown_plus-thumb.gif" height="272" align="left" width="379" style=" display: inline; float: left; margin: 0 10px 10px 0;" /&gt;&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;img src="http://lh4.ggpht.com/_tpWAicrRTb4/SuXmhASaRsI/AAAAAAAAAHE/Oh10vMyUaa0/s800/burnup_plus-thumb.gif" height="277" align="left" width="380" style=" display: inline; float: left; margin: 0 10px 10px 0;" /&gt;&lt;br style="clear: both" /&gt;&lt;br /&gt;Again, much the same. Personally I prefer the burn-down since to me it is more obvious that work has been injected, but again, others mileage varies.&lt;/p&gt;&lt;p style="clear: both"&gt;So does it make any difference which you use? Is one "better" than the other? In my opinion, no. Having used both, as far as I can tell it makes no difference whether you burn-up or burn-down. Decide which suits you/your team and don't get bogged down in unnecessary debate about which is best. The important thing you are doing is tracking &lt;em&gt;real&lt;/em&gt; progress, and adapting to what it is telling you.&lt;/p&gt;&lt;p style="clear: both"&gt;That said, I have no doubt that debating the pros and cons of burn chart direction makes for a fascinating late night bar conversation at the conference of your choice....&lt;/p&gt;&lt;br class='final-break' style='clear: both' /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-1128786924884454519?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/1128786924884454519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=1128786924884454519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1128786924884454519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1128786924884454519'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/10/burn-up-burn-down-who-cares.html' title='Burn up? Burn down? Who cares?'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_tpWAicrRTb4/SuXmfheNehI/AAAAAAAAAGs/wOMR9OwmJQo/s72-c/burndown_plain-thumb1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-1971424006277290153</id><published>2009-10-26T16:58:00.000Z</published><updated>2009-10-26T16:58:40.026Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>So you want to be an Software Craftsman?</title><content type='html'>&lt;p style="clear: both"&gt;Dear aspiring Software Craftsman, &lt;/p&gt;&lt;p style="clear: both"&gt;Here is my advice.&lt;/p&gt;&lt;ul style="clear: both"&gt;&lt;li&gt;Take whatever courses you think are interesting.&lt;/li&gt;&lt;li&gt;Study closely the work of the Old Masters.&lt;/li&gt;&lt;li&gt;Stop writing software that was only designed in your own mind.&lt;/li&gt;&lt;li&gt;Stick with one technique until you perfect it.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Buy a book on software structure. It's the only book you need.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Until you can write a program without bugs you don't know how to program.&lt;/li&gt;&lt;li&gt;Stay away from Javascript. You'll never master it. Very few ever have.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Forget about commercial frameworks. Use Open Source. It's where the action is.&lt;/li&gt;&lt;li&gt;Visit an old age home. Talk to the people who remember 8 inch floppy disks and punch cards.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Learn to play chess.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Take a business course.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Do not use an MP3 player.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Learn a foreign language. Scala should do it.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Learn to cook. Please. Before you get scurvy or rickets. There are more food groups than pizza, coffee and chocolate bars.&lt;/li&gt;&lt;li&gt;Learn to play a musical instrument.&lt;/li&gt;&lt;li&gt;Learn to swim.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Do not litter.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Avoid politically correct people.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Avoid anyone who says "&lt;em&gt;We have always done it this way&lt;/em&gt;".&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Take away the keyboard of anyone who says "&lt;em&gt;We need a bug database&lt;/em&gt;".&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Remove the Version Control account of anyone who claims to write bug free code without tests. Better still, take away the account, and their PC, and desk, and chair just to be sure.&lt;/li&gt;&lt;li&gt;Listen to classical music and jazz. If you are unable to appreciate it at least as much as contemporary music, you lack the sensitivity to develop into an craftsman of any real depth.&lt;/li&gt;&lt;li&gt;Keep your word.&lt;/li&gt;&lt;li&gt;Do not work with anyone who you do not trust.&lt;/li&gt;&lt;li&gt;Never explain yourself. Better yet, never do anything that will, later, require you to explain yourself or to say you're sorry.&lt;/li&gt;&lt;li&gt;Always use spell check.&lt;/li&gt;&lt;li&gt;Stop aspiring and start doing.&lt;/li&gt;&lt;/ul&gt;&lt;p style="clear: both"&gt;I can't guarantee anything, but this is how you might, just &lt;em&gt;might&lt;/em&gt;, become a software craftsman...&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;/p&gt;&lt;p style="clear: both"&gt;(Thanks to &lt;a href="http://www.hrgiger.com/" title="HR Giger website" target="_blank"&gt;HR Giger&lt;/a&gt;'s agent, Les Barany, for &lt;a href="http://www.hrgiger.com/faq.html" title="aspiring artist checklist" target="_blank"&gt;inspiration&lt;/a&gt; and some of the ideas that seem to apply to both crafts)&lt;/p&gt;&lt;br class='final-break' style='clear: both' /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-1971424006277290153?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/1971424006277290153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=1971424006277290153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1971424006277290153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1971424006277290153'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/10/so-you-want-to-be-software-craftsman.html' title='So you want to be an Software Craftsman?'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-1962208261705025675</id><published>2009-09-13T12:08:00.003+01:00</published><updated>2009-09-13T12:12:51.676+01:00</updated><title type='text'>Congratulations!</title><content type='html'>&lt;p style="clear: both;"&gt;My buddies at &lt;a href="http://www.energizedwork.com/" title="Energized Work" target="_blank"&gt;Energized Work&lt;/a&gt;, Gus Power and Simon Baker, have won the &lt;a href="http://www.agilealliance.org/show/1656" title="Gordon Pask Award" target="_blank"&gt;Gordon Pask Award for Contributions to Agile Practice&lt;/a&gt;.&lt;/p&gt;&lt;p style="clear: both;"&gt;Their "&lt;a href="http://www.think-box.co.uk/blog/2009/03/no-excuses-done-done.html"&gt;&lt;em&gt;No Compromise No Excuses&lt;/em&gt;&lt;/a&gt;" approach has proven incredibly successful, and is helping many in the industry raise their game, myself included.&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;a href="http://lh6.ggpht.com/_tpWAicrRTb4/SqzSkFtVKkI/AAAAAAAAAGo/ftLnFvcF2Xc/s800/3122661321_0533044f1.jpg" class="image-link"&gt;&lt;img class="linked-to-original" src="http://lh6.ggpht.com/_tpWAicrRTb4/SqzSjocf_yI/AAAAAAAAAGk/cT3k6SlMCxM/s800/3122661321_0533044f1-thumb.jpg" style="margin: 0pt 10px 10px 0pt; display: inline; float: left;" align="left" width="380" height="285" /&gt;&lt;/a&gt;&lt;br /&gt;Congratulations guys!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-1962208261705025675?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/1962208261705025675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=1962208261705025675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1962208261705025675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1962208261705025675'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/09/congratulations.html' title='Congratulations!'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_tpWAicrRTb4/SqzSjocf_yI/AAAAAAAAAGk/cT3k6SlMCxM/s72-c/3122661321_0533044f1-thumb.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8260382284084582213</id><published>2009-09-13T11:20:00.002+01:00</published><updated>2009-09-13T11:23:04.855+01:00</updated><title type='text'>Of Waterfalls and Ponds</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style="clear: both;"&gt;&lt;img src="http://lh6.ggpht.com/_tpWAicrRTb4/SqzHY0vCZmI/AAAAAAAAAGY/HO0BIWpSK0c/s800/pondboat1-thumb1.jpg" style="margin: 0pt 10px 10px 0pt; display: inline; float: left; width: 158px; height: 105px;" align="left" /&gt;Just found a great metaphor to contrast waterfall development with agile. Agile is more like a pond. And you get a picnic at the end!&lt;a href="http://www.rallydev.com/agileblog/2009/09/the-opposite-of-waterfall-is-pond-a-metaphor-for-agile/" title="Opposite of Waterfall is Pond" target="_blank"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;a href="http://www.rallydev.com/agileblog/2009/09/the-opposite-of-waterfall-is-pond-a-metaphor-for-agile/" title="Opposite of Waterfall is Pond" target="_blank"&gt;The Opposite of Waterfall is Pond&lt;/a&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;Thanks Alan Atlas for a very clear, beginner-friendly metaphor.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8260382284084582213?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8260382284084582213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8260382284084582213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8260382284084582213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8260382284084582213'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/09/of-waterfalls-and-ponds.html' title='Of Waterfalls and Ponds'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_tpWAicrRTb4/SqzHY0vCZmI/AAAAAAAAAGY/HO0BIWpSK0c/s72-c/pondboat1-thumb1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-4446813130500150479</id><published>2009-06-25T12:04:00.001+01:00</published><updated>2009-06-25T12:04:01.179+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>Agile is Dead. Long live Agile!</title><content type='html'>&lt;p style="clear: both"&gt;It seems that right now "agile" is flavour of the month everywhere.It has hit the mainstream. Everyone has it on their CV, too, so we have a situation where the industry want the skills, and everyone has the skills. Everything is fine and dandy in the software industry. Right?&lt;/p&gt;&lt;p style="clear: both"&gt;Dead wrong.&lt;/p&gt;&lt;p style="clear: both"&gt;There is a disturbing trend appearing in the industry. It is becoming increasingly difficult to identify anyone who has genuine agile experience. Many developers, BAs, QAs and product owners declaring agile experience on their CVs, when put into a true agile/lean environment struggle to cope (to say the least). To give typical examples, consider the developer who claims "agile" experience, but does not understand (let alone able to write) unit tests or the power of automated build systems. Or the "experienced agile" guy who had a Gantt chart showing the story contents of every iteration. Or the teams who believe it is acceptable to leave the build broken for weeks on end "because it's too difficult to keep it green". I could go on. If this is the level of agile experience on the average CV, it's a joke.&lt;/p&gt;&lt;p style="clear: both"&gt;The only explanation I can offer for this is that the cargo cults and corporate pseudo-agile processes are finally strangling the real deal. The team members now being churned out by these behemoths only have experience of a pale imitation of the real thing. The end result? As far as I am concerned, putting "agile" on your CV or job ad is completely worthless. Agile is dead.&lt;/p&gt;&lt;p style="clear: both"&gt;Or is it?&lt;/p&gt;&lt;p style="clear: both"&gt;There are still islands of excellence out there. There are still people who who actively remove wasteful practices and work leaner, faster, better. There are still companies who are trying to build experienced agile teams in order to build quality products using lightweight processes and have fun while doing it. There are companies and people who demand more, demand better. But how to find them? How can they avoid the &lt;em&gt;wagile&lt;/em&gt; hiring trap? Two ways.&lt;/p&gt;&lt;p style="clear: both"&gt;Firstly, word of mouth. Personal recommendation by someone you trust is always the best way of doing things. I have a personal network of developers, Product Owners, BAs, QAs etc who I have worked with and rate highly (you know who you are). These are the guys I would work with myself, hire should the need arise, and also recommend to others. If a client asks for recommendations, these are the guys I phone first to see if they are free. Hiring a Coach is a good way of tapping into these kinds of lists (yes, a shameless plug, but true :-) )&lt;/p&gt;&lt;p style="clear: both"&gt;But what if you don't have any way into this kind of network? Since having "agile" on a CV is now so devalued, the only choice has to be audition. Get the applicant into the office. Pair with him for an hour or so. Solve a real-world problem with him. He obviously talks the talk to get this far, but can he genuinely walk the walk? If you don't have anyone experienced enough in genuine agile process to do this, don't be afraid to hire someone to do it for you - another example where an experienced Agile Coach can come to the rescue.&lt;/p&gt;&lt;p style="clear: both"&gt;So long as you vet your team rigourously, any reports of the death of agile will have been somewhat exaggerated. Although somewhat beaten and battered, lightweight processes are picking themselves up and are faster and stronger than ever before. Whatever form they evolve into (agile, kanban, lean, call them what you will), lightweight processes are still the &lt;em&gt;sensible&lt;/em&gt; way to develop software.&lt;/p&gt;&lt;br class='final-break' style='clear: both' /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-4446813130500150479?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/4446813130500150479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=4446813130500150479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4446813130500150479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4446813130500150479'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/06/agile-is-dead-long-live-agile.html' title='Agile is Dead. Long live Agile!'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-1217721236632457716</id><published>2009-05-28T10:47:00.001+01:00</published><updated>2009-05-28T10:48:13.583+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quality'/><title type='text'>If you want to go faster, raise your internal quality</title><content type='html'>&lt;p style="clear: both;"&gt;&lt;img src="http://lh6.ggpht.com/_tpWAicrRTb4/Sh5dmJCnVhI/AAAAAAAAAGM/H1Flbc5sJ6s/s800/image-thumb.png" style="margin: 0pt 10px 10px 0pt; display: inline; float: left;" align="left" height="90" width="120" /&gt;&lt;a href="http://anarchycreek.com/about/" target="_blank"&gt;Mike Hill&lt;/a&gt; has written an excellent article titled "&lt;a href="http://anarchycreek.com/2009/05/26/how-tdd-and-pairing-increase-production/"&gt;How TDD and Pairing Increase Production&lt;/a&gt;"&lt;/p&gt;&lt;p style="clear: both;"&gt;An excerpt:&lt;/p&gt;&lt;blockquote style="clear: both;"&gt;&lt;p&gt;&lt;strong&gt;"If you want more production, look first to raising your internal quality.&lt;/strong&gt;&lt;br /&gt;...&lt;br /&gt;All day long, every time you make a move, you will be depending on the code that’s already there. Every line of it you have to study will slow you down. Every extra open dependency will slow you down. Every bad variable name will slow you down. &lt;strong&gt;Every flawed design decision, be it big or small, will slow you down.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;If you want to work as fast as you can, you want to work with clean code. Period."&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear: both;"&gt;&lt;br /&gt;There are many more thought provoking truths in there. Read it! It might just change the way you write code.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-1217721236632457716?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/1217721236632457716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=1217721236632457716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1217721236632457716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1217721236632457716'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/05/if-you-want-to-go-faster-raise-your.html' title='If you want to go faster, raise your internal quality'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_tpWAicrRTb4/Sh5dmJCnVhI/AAAAAAAAAGM/H1Flbc5sJ6s/s72-c/image-thumb.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8905112429844065799</id><published>2009-03-17T19:16:00.002Z</published><updated>2009-03-19T11:22:23.652Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><title type='text'>Something to ponder</title><content type='html'>If you get an infinite number of non-test-driven developers programming in a room for an infinite amount of time, would you end up with the works of Shakespeare?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8905112429844065799?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8905112429844065799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8905112429844065799' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8905112429844065799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8905112429844065799'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/03/something-to-ponder.html' title='Something to ponder'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-5674643986704038241</id><published>2009-03-12T16:36:00.003Z</published><updated>2009-03-13T16:43:06.507Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='quality'/><title type='text'>What is this software craftmanship thing anyway?</title><content type='html'>There's a buzz in my tiny corner of the industry at the moment. "&lt;a href="http://parlezuml.com/softwarecraftsmanship/"&gt;Software Craftmanship&lt;/a&gt;". But what is it exactly?&lt;br /&gt;&lt;br /&gt;I for one am not sure. Currently it seems to be all things to all people, but with a common theme of quality running through it. Some think it's fairly hardline, others think it needs to be flexible and all-encompassing. But one thing it's not - it's not just about agile or lean processes and practices (although personally I think they are a significant step in the right direction). So what the hell is it? Here's an attempt at defining what it needs based on existing professional engineering and other disciplines that could be considered craftmanship (for example, carpentry, surgery, architecture/building and so on).&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;It needs a set of ethics. This is what keeps you honest and provides a structure on which you can base decisions. Ethics tell you when to walk away when you are being asked to compromise too far. They provide the line in the sand that you do not cross. In XP, these are the Values.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It needs a set of tools and techniques that are the generally accepted best way of doing something. Think about a stonemason, or cabinetmaker - they use specialist tools in specific ways. Also a surgeon has an array of specific techniques to handle different situations. Note that there is absolutely no reason why there should not be multiple ways to achieve the same results here. However, unfortunately for us the software industry is notorious for aggressively defending personal preference and style over and above effectiveness and quality so there are plenty of red herrings to remove.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It needs continuous learning. A master craftsman will always be experimenting with things, looking for new tools and techniques to add to the entire craft. Since these new techniques are outside the accepted practices, they can be carefully assessed in controlled conditions in much the same way that, say, a surgeon would try a new procedure with extra precautions, or a master stonemason would try something new on a cheaper, expendable offcut of stone first.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It needs apprenticeship. Beginners and journeymen need to teach and be taught. An apprenticeship model works extremely well for this - see something, do something, remember something. Plus by working alongside master craftsmen you learn the nuances that can never be documented. &lt;/li&gt;&lt;/ul&gt;Once the majority can agree on the values, principles and practices that fit these four things, then - and only then - can we really claim to be software craftsmen. Until then it's simply another forum flame war.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-5674643986704038241?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/5674643986704038241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=5674643986704038241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5674643986704038241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5674643986704038241'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/03/what-is-this-software-craftmanship.html' title='What is this software craftmanship thing anyway?'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-7334281275479083611</id><published>2009-03-10T14:48:00.007Z</published><updated>2009-11-03T12:47:21.703Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='bad behaviour'/><category scheme='http://www.blogger.com/atom/ns#' term='compromise'/><category scheme='http://www.blogger.com/atom/ns#' term='failure'/><title type='text'>Let the Craftsmen Craft Software</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;img style="width: 178px; height: 135px;" src="http://lh3.ggpht.com/_tpWAicrRTb4/SbaN0i4ikXI/AAAAAAAAAGE/vPJH4xW4T-M/Ivy_House%2C_Runcorn.jpg?imgmax=800" alt="Ivy_House,_Runcorn.jpg" align="center" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;There are times when the software industry makes me despair. Making an analogy with someone building a house, you wouldn't:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hire the cheapest cowboy builders you can to build your house. ("&lt;em&gt;'We build you house very cheap. £500', 'OK, you're the cheapest. It's a deal!'&lt;/em&gt;")&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Hire skilled builders but force them to compromise by refusing to supply them with the resources they need ("&lt;em&gt;Oh we can't let you use electricity. Or petrol - it's a fire risk. Or let you move that fence that is in the way. Or...&lt;/em&gt;"), restricting their working environment ("&lt;em&gt;You can plaster that room, but you have to do it through the letterbox&lt;/em&gt;") or by unreasonably restricting budget ("&lt;em&gt;you can only buy the cheapest bricks&lt;/em&gt;").&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Hire skilled builders but tell them how to do the job, despite not knowing anything about building ("&lt;em&gt;Don't lay bricks like that. Stack them, don't overlap&lt;/em&gt;"). &lt;/li&gt;&lt;/ul&gt;Also you wouldn't make the same mistake when building the house again and again when it collapsed, expecting that somehow things will be different this time around.&lt;br /&gt;&lt;br /&gt;You absolutely would not build a house like this. So why expect to deliver software successfully like this?&lt;br /&gt;&lt;br /&gt;Here's a &lt;a href="http://www.edge.org/q2006/q06_index.html"&gt;dangerous idea&lt;/a&gt; for you - hire skilled people, provide them with what they need and let them do what they do best.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-7334281275479083611?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/7334281275479083611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=7334281275479083611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/7334281275479083611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/7334281275479083611'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/03/let-craftsmen-craft-software.html' title='Let the Craftsmen Craft Software'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_tpWAicrRTb4/SbaN0i4ikXI/AAAAAAAAAGE/vPJH4xW4T-M/s72-c/Ivy_House%2C_Runcorn.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-3158138014579075427</id><published>2009-03-05T09:47:00.004Z</published><updated>2009-03-05T09:53:30.404Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Groan</title><content type='html'>A recent exchange between me and a non-developer, trying to explain that some Scrum Masters are better than others:&lt;br /&gt;&lt;br /&gt;Me: "Scrum Mastering is pretty much the same as Team Leading. To find a good one you need to look at their past. They almost need a 'pedigree'."&lt;br /&gt;S: "Oh, you mean &lt;span style="font-style: italic;"&gt;Pedigree Scrum&lt;/span&gt;?"&lt;br /&gt;Me: "Yes. They need to eat their own dogfood....."&lt;br /&gt;&lt;br /&gt;At that point we had to temporarily abort the conversation.&lt;br /&gt;&lt;br /&gt;OK, maybe you had to be there....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-3158138014579075427?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/3158138014579075427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=3158138014579075427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3158138014579075427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3158138014579075427'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/03/groan.html' title='Groan'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8324259039272847272</id><published>2009-03-05T09:45:00.000Z</published><updated>2009-03-05T09:45:51.174Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='xp'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Scrum needs XP</title><content type='html'>&lt;p style="color: rgb(0, 0, 0);"&gt;I stumbled across a blog post about &lt;a href="http://jeffsutherland.com/scrum/2007/07/origins-of-scrum.html"&gt;Scrum's origins&lt;/a&gt; on &lt;a href="http://jeffsutherland.com/"&gt;Jeff Sutherland&lt;/a&gt;'s blog recently. The whole thing is worth a read in order to get a perspective on where the methodology came from, but especially interesting was the following comment:&lt;/p&gt;&lt;blockquote style="color: rgb(0, 0, 0);"&gt;"&lt;span style="font-style: italic;"&gt;Few implementations of Scrum achieve the hyperproductive state for which Scrum was designed (5-10 times normal performance). Those that do all implement variations on XP engineering practices...&lt;/span&gt;"&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;This fits with my - and others' - experience over the past few years. Scrum, with a few tweaks based on personal experience, provides a good starting point for a lightweight management framework. But that's just it - it's a management framework. You need wrap something to be managed in it. And if that something is a lardy, slow mini-waterfall process then you will simply end up delivering stale garbage more efficiently.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;XP has the opposite problem. It provides tools and techniques to develop quality software efficiently, but it does not provide any guidance on tracking or how to control requirements. It benefits from being wrapped in something to manage its external dependencies.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Combining Scrum and XP may not be the only way to develop software but it does seem to be a damned good starting point for further iteration. Do it - you know it makes sense.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8324259039272847272?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8324259039272847272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8324259039272847272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8324259039272847272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8324259039272847272'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/03/scrum-needs-xp.html' title='Scrum needs XP'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-5951534958576575578</id><published>2009-03-02T18:12:00.010Z</published><updated>2009-03-02T18:44:29.466Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='team health'/><title type='text'>The Right People</title><content type='html'>I talk a lot about getting the "right people on the bus" when talking about teams, especially agile teams. Quite simply, by ensuring the people involved can all pull together rather than undermine each other makes a critical difference to the success or otherwise of the team. &lt;a href="http://liberalorder.typepad.com/the_liberal_order/files/bad_apples_rob.pdf"&gt;Research suggests that this is more critical than we might think&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But how do you find these people? How can you recognise them? What traits do these people have? I've had a go at nailing down specific behavioural traits based on my experience of working with good - and bad - engineers over the years. In no particular order:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Courage&lt;/span&gt;. The "right people" that I talk about are courageous. They overcome their fear of being wrong and are prepared to challenge ideas. They are also "&lt;span style="font-style: italic;"&gt;doers&lt;/span&gt;", people who have the courage and motivation to get up and make a change where it is needed.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Pride&lt;/span&gt;. Not the damaging kind, but pride as in wanting to do a job well. Professional pride is definitely one trait that separates a money focussed &lt;a href="http://parlezuml.com/blog/?postid=147"&gt;Mortgage Driven Developer&lt;/a&gt; from a Software Craftsman. Striving for improvement is always valuable.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Respect and Humility&lt;/span&gt;. Being humble is hugely important when working closely with others towards a common goal. It is the ability to sit and listen without judgement, then provide feedback and respectful challenge. It is the ability to admit when you are wrong. The ability to resist pointing fingers and scoring political points when others stumble. From humility comes respect.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Curiosity&lt;/span&gt;. I cannot think of a single successful developer or manager who does not play with new technologies and/or techniques to see if they are useful. If they work, they get added to their toolbox. If they don't work, they get put to on side until they find a use. Active curiosity stops people from getting stuck in a rut and proves they have the ability to learn.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Communication&lt;/span&gt;. The ability to communicate is essential. Gone are the days when developers can "go dark" for weeks on end. Active, regular communication engenders understanding. Rolling this ability in with respect, humility and courage creates a powerful mix that gets results.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Sense of fun&lt;/span&gt;. Fun is a useful way of releasing potentially damaging stress. I also think it is massively undervalued in the workplace. In my experience, people who have fun tend to be better motivated and have a better work-life balance than those who are 100% focussed on serious work. The better balance allows them to deliver day in, day out. And sometimes a &lt;a href="http://en.wikipedia.org/wiki/Nerf"&gt;Nerf&lt;/a&gt; duel is simply the &lt;span style="font-style: italic;"&gt;only&lt;/span&gt; way to settle that &lt;a href="http://en.wikipedia.org/wiki/Bracing_style"&gt;pointless design argument&lt;/a&gt;....&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;People who have these traits are rare but worth seeking out  - they are definitely out there. If you can build a development team of these kinds of people then you really will have a team to be reckoned with - &lt;span style="font-style: italic;"&gt;if&lt;/span&gt; you put them on the &lt;span style="font-style: italic;"&gt;right bus&lt;/span&gt;...but that's another article.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-5951534958576575578?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/5951534958576575578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=5951534958576575578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5951534958576575578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5951534958576575578'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/03/i-talk-lot-about-getting-right-people.html' title='The Right People'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-4160959175629391285</id><published>2009-03-02T15:46:00.003Z</published><updated>2009-03-02T16:21:24.271Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='compromise'/><category scheme='http://www.blogger.com/atom/ns#' term='team health'/><category scheme='http://www.blogger.com/atom/ns#' term='failure'/><title type='text'>One bad apple spoils the barrel</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tpWAicrRTb4/SawBVh5y15I/AAAAAAAAAF4/sH3PtC1bbUc/s1600-h/80px-Apples.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 141px; height: 221px;" src="http://3.bp.blogspot.com/_tpWAicrRTb4/SawBVh5y15I/AAAAAAAAAF4/sH3PtC1bbUc/s200/80px-Apples.jpg" alt="" id="BLOGGER_PHOTO_ID_5308619530152630162" border="0" /&gt;&lt;/a&gt;Via &lt;a href="http://www.codinghorror.com/blog/archives/001227.html"&gt;Coding Horror&lt;/a&gt;:&lt;blockquote&gt;&lt;p&gt;"A recent episode of &lt;a href="http://www.thisamericanlife.org/Radio_Episode.aspx?sched=1275"&gt;This American Life&lt;/a&gt; interviewed Will Felps, a professor who conducted a sociological experiment demonstrating the &lt;a href="http://www.codinghorror.com/blog/archives/001154.html"&gt;surprisingly powerful effect of bad apples.&lt;/a&gt;"&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;This is not news. In fact it's something that &lt;a href="http://blog.thirstybear.co.uk/2007/07/teaching-pigs-to-sing.html"&gt;I&lt;/a&gt; and &lt;a href="http://www.think-box.co.uk/blog/2009/02/attitude-drives-skill.html"&gt;other coaches&lt;/a&gt; have suspected for many years. But this study provides some more scientific backing for our suspicions. In short, even one misbehaving team member can upset the entire team and endanger delivery.&lt;/p&gt;&lt;p&gt;Getting the right people on the bus makes life much easier, massively reducing the risk of introducing agile thinking to a company and increasing the chance of successful delivery. OK, the study also suggests that a good facilitator can defuse the effect of the Bad Apple, but as the study shows, people capable of doing this are few and far between (only &lt;em&gt;one&lt;/em&gt; team out of the &lt;em&gt;entire study&lt;/em&gt; had a team lead capable of counteracting the problem).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-4160959175629391285?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/4160959175629391285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=4160959175629391285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4160959175629391285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4160959175629391285'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/03/one-bad-apple-spoils-barrel.html' title='One bad apple spoils the barrel'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tpWAicrRTb4/SawBVh5y15I/AAAAAAAAAF4/sH3PtC1bbUc/s72-c/80px-Apples.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8743595031268309359</id><published>2009-02-17T08:53:00.004Z</published><updated>2009-02-17T08:59:55.392Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='bad behaviour'/><category scheme='http://www.blogger.com/atom/ns#' term='compromise'/><category scheme='http://www.blogger.com/atom/ns#' term='team health'/><category scheme='http://www.blogger.com/atom/ns#' term='architects'/><title type='text'>Oxymoron</title><content type='html'>Just spotted in a job ad for a lead developer:&lt;br /&gt;&lt;blockquote&gt;"You will be expected to implement a rigorous Agile Development process and work with the Technical Architect who will define the technologies and toolsets"&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8743595031268309359?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8743595031268309359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8743595031268309359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8743595031268309359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8743595031268309359'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/02/oxymoron.html' title='Oxymoron'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-7456138892562502154</id><published>2009-02-04T14:07:00.003Z</published><updated>2009-02-04T14:14:24.243Z</updated><title type='text'>Website revamp, stage 1 complete</title><content type='html'>Finally, after several days of thinking, searching for templates, scratching head over the CMS and rewording, &lt;a href="http://www.thirstybear.co.uk/"&gt;my poor, neglected website&lt;/a&gt; has been revamped. Or at least Stage 1 is complete, and it is now in a state where I can iterate further changes over the weeks/months/years. It now reflects more accurately what I actually do these days, which is an added bonus!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-7456138892562502154?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/7456138892562502154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=7456138892562502154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/7456138892562502154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/7456138892562502154'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/02/website-revamp-stage-1-complete.html' title='Website revamp, stage 1 complete'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-3046882698764776766</id><published>2009-02-03T09:44:00.004Z</published><updated>2009-02-05T15:54:26.473Z</updated><title type='text'>Don't compromise quality for speed</title><content type='html'>&lt;a href="http://xprogramming.com/"&gt;Ron Jeffries&lt;/a&gt; has just blogged about dropping quality in favour of speed. Take a look at &lt;span style="font-size:100%;"&gt;&lt;a href="http://xprogramming.com/blog/2009/02/01/quality-speed-tradeoff-youre-kidding-yourself/"&gt;Quality-Speed Tradeoff — You’re kidding yourself&lt;/a&gt;.&lt;/span&gt; Having seen many, many projects fail because of this common fallacy, it is a subject close to my heart (but there goes the draft blog article I was writing....).&lt;br /&gt;&lt;br /&gt;In summary, there are two choices. Subjective historical addenda are mine based on my experience:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Reduce quality to go faster. You &lt;span style="font-style: italic;"&gt;might&lt;/span&gt; get ahead short term, and you &lt;span style="font-style: italic;"&gt;might even  &lt;/span&gt;get ahead longer term &lt;span style="font-style: italic;"&gt;if&lt;/span&gt; you don't add too many bugs and &lt;span style="font-style: italic;"&gt;if&lt;/span&gt; you don't make the code uninhabitable. [But history is &lt;span style="font-style: italic;"&gt;really&lt;/span&gt; not on your side here.]&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Increase quality to go faster. There is a chance that you will over-polish and not add important business functionality. [Historically this will not happen. &lt;span style="font-style: italic;"&gt;Especially&lt;/span&gt; if you make this possibility &lt;span style="font-style: italic;"&gt;an integral part of the quality process&lt;/span&gt; by holding regular customer product reviews and focus on delivering important business value first.]&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-3046882698764776766?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/3046882698764776766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=3046882698764776766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3046882698764776766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3046882698764776766'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/02/dont-compromise-quality-for-speed.html' title='Don&apos;t compromise quality for speed'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-5966573516268527392</id><published>2009-02-02T17:56:00.002Z</published><updated>2009-02-02T18:00:29.872Z</updated><title type='text'>Google-oops!</title><content type='html'>It would seem that someone at that fine institution Google had &lt;a href="http://news.bbc.co.uk/1/hi/technology/7862840.stm"&gt;a bit of finger trouble&lt;/a&gt; over the weekend.&lt;br /&gt;&lt;br /&gt;I can't help thinking that some (more?) unit testing might save them a whole world of pain and panic in the future.&lt;br /&gt;&lt;br /&gt;'nuff said.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-5966573516268527392?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/5966573516268527392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=5966573516268527392' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5966573516268527392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5966573516268527392'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/02/google-oops.html' title='Google-oops!'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-3501340164166833033</id><published>2009-01-30T11:29:00.007Z</published><updated>2009-01-30T12:23:59.308Z</updated><title type='text'>Bletchley Park Needs You!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tpWAicrRTb4/SYLoX-dFwQI/AAAAAAAAAFo/7FpCg0rF7KQ/s1600-h/pp_uk_31.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 146px; height: 200px;" src="http://1.bp.blogspot.com/_tpWAicrRTb4/SYLoX-dFwQI/AAAAAAAAAFo/7FpCg0rF7KQ/s200/pp_uk_31.jpg" alt="" id="BLOGGER_PHOTO_ID_5297051610340770050" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.bletchleypark.org.uk/"&gt;Bletchley Park&lt;/a&gt; is an unremarkable, run-down country estate in South East England. Unremarkable, that is, until you realise that it was where a team of &lt;a href="http://en.wikipedia.org/wiki/Boffin#Usage_during_and_after_World_War_II"&gt;boffins&lt;/a&gt;, including geniuses like &lt;a href="http://en.wikipedia.org/wiki/Alan_Turing"&gt;Alan Turing&lt;/a&gt;, broke the German Enigma code in WW2. This allowed the Allies to intercept vital information and save countless lives. It is also likely to have significantly shortened the war - maybe by up to two years and 22 million lives. Its place in history is assured by this alone.&lt;br /&gt;&lt;br /&gt;But even more remarkable, in order to break the code the scientists had to invent from scratch the first ever electronic computer - &lt;a href="http://en.wikipedia.org/wiki/Colossus_computer"&gt;Colussus&lt;/a&gt;. Thanks to the efforts of &lt;a href="http://en.wikipedia.org/wiki/Max_Newman"&gt;Max Newman&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Tommy_flowers"&gt;Tommy Flowers&lt;/a&gt; and many, many others we have the computers we have today. Through their efforts, we have the software industry - the productivity tools, the games. We have levels of communication no-one could have dreamed of back then - mobile phones, satellites, GPS. We went to the moon, and are now eyeing up Mars and beyond. We have the ability to carry out advanced research, analysis and ultimate cure of crippling diseases. The potential they unleashed is endless.&lt;br /&gt;&lt;br /&gt;Now a museum and tourist attraction, Bletchley Park is suffering from a crippling lack of funds. They need a huge amount of money to restore it to its former glory (around £10 milion). Anyone involved with the IT industry should be concerned by this - Bletchley Park represents the birthplace of our industry and as such deserves to be saved. So I urge everyone to &lt;a href="http://www.bletchleypark.org.uk/shop/changeDonate.rhtm/-1"&gt;donate just £5 to the cause, more if you can&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also, if you have a blog or website, &lt;a href="http://www.savingbletchleypark.org/"&gt;promote Bletchley Park's cause&lt;/a&gt;. Spread the word.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-3501340164166833033?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/3501340164166833033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=3501340164166833033' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3501340164166833033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3501340164166833033'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/01/bletchley-park-needs-you.html' title='Bletchley Park Needs You!'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tpWAicrRTb4/SYLoX-dFwQI/AAAAAAAAAFo/7FpCg0rF7KQ/s72-c/pp_uk_31.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8661199515340712202</id><published>2009-01-28T17:08:00.003Z</published><updated>2009-11-03T12:47:21.703Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='bad behaviour'/><category scheme='http://www.blogger.com/atom/ns#' term='compromise'/><category scheme='http://www.blogger.com/atom/ns#' term='failure'/><title type='text'>Yet another name for compromised agile process</title><content type='html'>Via &lt;a href="http://theagilevoice.co.uk/"&gt;Simon Voice&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;wagile&lt;/span&gt; &lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;adj&lt;/span&gt; a cross between agile and waterfall process. The mess that's left if agile is only partially implemented without cultural change. See also: &lt;span style="font-weight: bold;"&gt;failure&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;compromised&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;doomed&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8661199515340712202?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8661199515340712202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8661199515340712202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8661199515340712202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8661199515340712202'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/01/yet-another-name-for-compromised-agile.html' title='Yet another name for compromised agile process'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-1736960064695064084</id><published>2009-01-21T19:08:00.006Z</published><updated>2009-01-27T09:13:20.956Z</updated><title type='text'>Re-energised</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tpWAicrRTb4/SX7QIlwLv2I/AAAAAAAAAFI/rIZDDtLTi84/s1600-h/Auto_fuel_gauge2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 184px; height: 135px;" src="http://2.bp.blogspot.com/_tpWAicrRTb4/SX7QIlwLv2I/AAAAAAAAAFI/rIZDDtLTi84/s320/Auto_fuel_gauge2.jpg" alt="" id="BLOGGER_PHOTO_ID_5295899057826021218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I have just finished doing my own, personal retrospective of 2008 after spending a couple of weeks relaxing and decompressing. Definitely a cathartic experience that has left me re-energised and ready to go in 2009.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Highlights:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;2008 saw me go into several flawed companies/teams in succession as well as some well adjusted ones. Although I delivered results, they were nowhere near the level that I am used to getting, and the battles to get even those results were long, protracted and draining. &lt;a href="http://www.selfishprogramming.com/about/" id="w3ai" target="_blank" title="Portia Tung"&gt;Portia Tung&lt;/a&gt; wrote about something she called "&lt;a href="http://www.selfishprogramming.com/2008/12/16/the-wall/trackback/" id="t13b" target="_blank" title="The Wall"&gt;The Wall&lt;/a&gt;". Well, I found my wall last year and although I managed to scale it, it wasn't elegant. So in 2009 I intend to only work with &lt;i&gt;well behaved&lt;/i&gt; &lt;i&gt;clients&lt;/i&gt; who genuinely want to change, or have already made the change to agile/lean thinking but need guidance. Life is too short not to. Consulting should not be a battle, it's a co-operation. More of that in a later blog post. But I also need to understand better what my personal "wall" feels like, how to recognise it more quickly and how I don't just scale it but burst through it.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;One of the related problems in 2008 was isolation. Sometimes when you work as an independent consultant you can feel very alone and begin to lose focus (the ancient wood for trees syndrome). You really need to bounce ideas off like-minded people to identify root causes and figure out new and exciting ways to deal with them. So I intend to kick off a peer review group amongst some trusted friends and colleagues and see how it goes. I have used the peer review approach before but this will be more challenging since the people involved are likely to be on entirely different projects....&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Last year I neglected the important-but-not-urgent stuff. Things like this blog, going to conferences, networking with people, getting the industry vibe. That sort of thing. So expect more blog posts, and watch out for me at the odd conference. I might even present at one (although it's probably too late for 2009).&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In 2008 I learned a helluva lot about myself and the state of the agile nation. I am entering 2009 better educated and more aware of the issues which can only make me better prepared to recognise and solve some of them.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I had nowhere near enough fun last year. It was far too serious, filled with destructive conflict and injury instead. So I fully intend to make 2009 a better year - both at work and in my personal life.&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;So here's to a happy and prosperous New Year packed full of learning, delivering top quality software, and &lt;i&gt;fun&lt;/i&gt;, regardless of what the current economic situation throws at us. Cheers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-1736960064695064084?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/1736960064695064084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=1736960064695064084' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1736960064695064084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1736960064695064084'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/01/re-energised.html' title='Re-energised'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tpWAicrRTb4/SX7QIlwLv2I/AAAAAAAAAFI/rIZDDtLTi84/s72-c/Auto_fuel_gauge2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-5520883516964324178</id><published>2009-01-19T15:07:00.002Z</published><updated>2009-01-19T15:08:42.754Z</updated><title type='text'>You don't need bug tracking</title><content type='html'>I have just been reading a thread on an agile group discussing the best practice for bug tracking in an agile team. Almost everyone has immediately jumped in and suggested things like Bugzilla and Jira. At risk of this turning into a rant:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;  &lt;b&gt;&lt;i&gt;You do not need a formal bug tracking system in a healthy agile development team&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Quite a sweeping statement. Let me explain.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;  The whole problem seems to come from a fundamental misunderstanding of what a 'bug' is. I define a software bug as "undesired or missing functionality". Now let's compare this to a definition of a 'story' - a story is a statement describing the desired functionality - i.e. it is an invitation to correct undesired or missing functionality... Sounds familiar!&lt;br /&gt;  &lt;div&gt;&lt;br /&gt;    In other words &lt;b&gt;&lt;i&gt;bugs are stories&lt;/i&gt;&lt;/b&gt;. And if they are really stories, then why treat them differently? Simply write them on cards&lt;span style="VERTICAL-ALIGN:super"&gt;1&lt;/span&gt;, throw them onto the backlog and let them be prioritised along with everything else. Bugs that are important to the Customer will always be done first. Unimportant bugs will get fixed eventually/never in the same way as unimportant stories would. &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  [1] I use &lt;span style="COLOR:#ff0000"&gt;red&lt;/span&gt; &lt;span style="COLOR:#ff0000"&gt;cards&lt;/span&gt; so that bugs are &lt;span style="COLOR:#ff0000"&gt;visible&lt;/span&gt; in the backlog. That way if they start to multiply the team can stop and fix the problem causing it. &lt;br&gt;&lt;br /&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-5520883516964324178?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/5520883516964324178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=5520883516964324178' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5520883516964324178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5520883516964324178'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/01/you-don-need-bug-tracking.html' title='You don&amp;#39;t need bug tracking'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-5484824693885427485</id><published>2009-01-13T10:20:00.003Z</published><updated>2009-01-13T10:23:38.254Z</updated><title type='text'>Twitter</title><content type='html'>I have been playing on Twitter for a month or so to see if it could be useful. &lt;br /&gt;&lt;br /&gt;As yet I'm undecided, but it has been useful enough to capture idle thoughts on the run so I'll stick with it for a while longer.&lt;br /&gt;&lt;br /&gt;For anyone interested in following my random ramblings I can be found &lt;a href="http://twitter.com/thirstybear"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-5484824693885427485?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/5484824693885427485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=5484824693885427485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5484824693885427485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5484824693885427485'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/01/twitter.html' title='Twitter'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-1694718705606335438</id><published>2009-01-09T13:25:00.002Z</published><updated>2009-01-09T13:38:18.397Z</updated><title type='text'>When weekly iterations go bad</title><content type='html'>Having tried several different iteration lengths over the years, I now tend to recommend iterating weekly. It provides maximum flexibility and adaptability while being extremely intolerant of waste - problems are quickly surfaced with such a tight feedback loop.&lt;br /&gt;&lt;br /&gt;But it does not always work as I found out over Christmas.&lt;br /&gt;&lt;br /&gt;Our live system broke. Something ate some important files so the app collapsed. This was quickly traced to the Jetty servlet container deploying to the /tmp directory by default. Not a problem in itself, but there was a default cron script that helpfully tidies up /tmp by deleting anything that has not been touched for 10 days.... Of course, the Team was in Christmas shutdown for two weeks, and sure enough 10 days after our last live deploy...&amp;lt;BOOM!&amp;gt;&lt;br /&gt;&lt;br /&gt;We missed this because we were using weekly iterations. We were deploying to the various dev, QA, demo and live systems &lt;span style="font-style:italic;"&gt;every week&lt;/span&gt; so the deployed files were never older than 7 days.&lt;br /&gt;&lt;br /&gt;So beware...weekly iterations can bite back!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-1694718705606335438?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/1694718705606335438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=1694718705606335438' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1694718705606335438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1694718705606335438'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2009/01/when-weekly-iterations-go-bad.html' title='When weekly iterations go bad'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-1646583697475662122</id><published>2008-12-21T15:14:00.004Z</published><updated>2008-12-21T15:22:36.100Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='simonv'/><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='connectionsrecruit'/><title type='text'>New kid on the blogosphere</title><content type='html'>My friend, Simon Voice at &lt;a href="http://www.connectionsrecruit.co.uk/"&gt;Connections&lt;/a&gt;, has just started &lt;a href="http://theagilevoice.co.uk/"&gt;his own blog&lt;/a&gt;. I know he has some interesting views on the whole agile software revolution as viewed from a recruiter's perspective, and already has some interesting posts on there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-1646583697475662122?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/1646583697475662122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=1646583697475662122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1646583697475662122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1646583697475662122'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2008/12/new-kid-on-blogosphere.html' title='New kid on the blogosphere'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8460796066422144698</id><published>2008-11-20T13:34:00.001Z</published><updated>2008-11-20T13:34:07.363Z</updated><title type='text'>What a difference a sand timer makes....!</title><content type='html'>Planning Games can be a problem. Especially with large teams where it is difficult to get consensus, and also far too easy to descend into lengthy discussions where different people are in fact violently agreeing with each other (at least in terms of what size something is). What should be a simple one hour maximum meeting to scope out the relative sizing of specific business stories can turn into a Dilbert-esque four hour meeting from hell.&lt;br id="gln30"&gt;&lt;br id="gln31"&gt;Classic Planning Poker rules suggest using a timer to try and avoid these kinds of situations. Anyone can start a two minute timer, and at the end of the time the team must estimate. Limiting the amount of time gives a degree of pressure and focus to the discussions especially when there is disagreement. Also it limits otherwise lengthy discussions where in fact everyone now agrees on the estimate.&lt;br id="dg5n0"&gt;&lt;br id="dg5n1"&gt;I the past I have tried using this technique with some teams that had a tendency to get bogged down but with limited success. I have tried using a mobile phone, but people found it too complicated to set up quickly and easily. It was also too "personal". A stopwatch did not achieve the right results either - it was simply ignored probably because it counts up an not down. And I have never found a decent egg timer that is easily and accurately settable to two minutes (same problem as the phone). Then I stumbled across a kids &lt;a title="Team Building Shop - sand timers" target="_blank" href="http://www.teambuildingshop.com/acatalog/Sand_Timers.html" id="iq3b"&gt;2 minute sand timer.&lt;/a&gt;...&lt;br id="csue0"&gt;&lt;br id="csue1"&gt;&lt;div id="c__l" style="padding: 1em 0pt;"&gt;&lt;div id="u3o30" style="text-align: center;"&gt;&lt;img id="kjh80" style="width: 155px; height: 300px;" src="http://docs.google.com/File?id=d5tk393_52f2rpjwdn_b"&gt;&lt;br id="kjh81"&gt;&lt;/div&gt;&lt;br id="kjh82"&gt;(Yes, it really is that pink!)&lt;br id="tjf70"&gt;&lt;br id="tjf71"&gt;What a difference the low-tech solution has made! It's easy to start (!), obvious when it's running and/or running out and does not disrupt the flow of conversations. Everyone I have spoken to has agreed that it has saved time. It has not always worked, but in general the signs are positive so far. I have even seen the timer being used in other entirely unrelated meetings.&lt;br id="r5fb0"&gt;&lt;br id="kjh83"&gt;&lt;/div&gt;&lt;br id="y3430"&gt;&lt;br id="tjf72"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8460796066422144698?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8460796066422144698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8460796066422144698' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8460796066422144698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8460796066422144698'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2008/11/what-difference-sand-timer-makes.html' title='What a difference a sand timer makes....!'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8787115987514038346</id><published>2008-05-13T13:19:00.004+01:00</published><updated>2008-07-03T18:23:41.711+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='bad behaviour'/><category scheme='http://www.blogger.com/atom/ns#' term='team health'/><category scheme='http://www.blogger.com/atom/ns#' term='failure'/><title type='text'>Black Hole Team</title><content type='html'>Have you ever noticed how some teams do not have a "buzz"?  That certain energy that differentiates a good team from a great team. Anyone who has worked for any length of time in software will almost certainly have experienced the lacklustre plod of a team in crisis.&lt;br /&gt;&lt;br /&gt;But there is a rarer but not unknown phenomenon created by the further collapse of teamwork and common sense. I call it the Black Hole Team. Here, all &lt;i&gt;joie de vivre&lt;/i&gt; has been crushed out of the team. All hope of changing, evolving and improving working practices has been extinguished. Team members are simply coding zombies, attending work not out of pleasure or professional pride, but instead simply to churn out second rate code that gets them from 9 o'clock to 5. By this stage the team has become so dense (sic) that new team members have the life and energy actively sucked out of them until there is just the shell left.&lt;br /&gt;&lt;br /&gt;So just how does a team collapse to this level? The ways are many and varied, but common problems include:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Unsupportive leadership. If a team tries to improve but is simply not allowed to action the necessary changes, eventually they will give up trying to improve.&lt;br&gt;&lt;br /&gt;&lt;li&gt;Political environment. Politics poisons software. Period. Engineers need to have the space and encouragement to improve, but are generally not political animals - most find it distinctly distasteful at best.&lt;br&gt;&lt;br /&gt;&lt;li&gt;Poor environment. If a team is working in a physical environment that is uncomfortable, or that stifles free communication of ideas, and cannot change things then they are in serious trouble. Nothing says "The company does not give a stuff about this project or this team" as lousy desk spaces.&lt;br&gt;&lt;br /&gt;&lt;li&gt;Cliques. It is possible that a significant minority of the team has worked together before and are now fixed in their ways. Bulldozing through stale ideas and techniques at the cost of innovation leads to damaging conflict unless justified by genuine hard facts and discussion.&lt;br&gt;&lt;br /&gt;&lt;li&gt;Random edicts imposed from outside the team. Again, this kind of thing makes a team feel unvalued especially if they have already solved a problem adressed by the edict in a more efficient manner. It sends the clear signal "they can't be bothered to work efficiently so why should we?"&lt;br&gt;&lt;br /&gt;&lt;li&gt;Professional pride. Yes, untempered engineering pride in delivering a good product despite the odds can be counterproductive. This misplaced loyalty will gradually be replaced by contagious cynicism, despair and even active undermining of product in extreme cases. &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Pulling a team out of this state can be achieved by two things. Leadership and the authority to make certain key decisions (they don't always go together). The aim is to get back to a working environment that is seen as safe to work in, where suggestions are respected, considered and actioned, where the team has the ability to change and adapt anything to get around waste that is stopping the job getting done. Things to try:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Get the team what they want. Accomodation bad? Improve it. Get the team identify key areas for improvement and then make sure it happens.&lt;br&gt;&lt;br /&gt;&lt;li&gt;Remove the politics and focus on delivery and adding value.&lt;br&gt;&lt;br /&gt;&lt;li&gt;Correct or remove disruptive team members. I have said before, &lt;a href="http://blog.thirstybear.co.uk/2007/07/teaching-pigs-to-sing.html"&gt;there is no point in trying to change the behaviour of someone who does not want to change&lt;/a&gt;, but the person causing trouble may not even realise they are doing it. Use one-to-ones and talk to them, but be prepared to move them to a more suitable team.&lt;br&gt;&lt;br /&gt;&lt;li&gt;Break up cliques. In the same way as individuals can disrupt a team, so can groups. Split them up and use them to form two or more experienced teams. &lt;br&gt;&lt;br /&gt;&lt;li&gt;Protect the teams from random edicts. Try and understand what the underlying business requirement is, and negotiate a mutually acceptable solution with the help of the team. Another more subversive strategy is to ignore it until it becomes inevitable - often no-one ever notices. If becomes impossible to ignore then make sure the true cost of the decision is fed back to all interested parties, especially your customer since I can guarantee that he will not be happy that it's costing him!&lt;br&gt;&lt;br /&gt;&lt;li&gt;Disarm the professional pride problem. Persuade people to go home at a sensible time. &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Give people the space to fail, to learn. Show that they are valued even when the going is tough. You will still have the loyalty (more, in fact), but it will be sustainable even on the most challenging of projects.&lt;br /&gt;&lt;br /&gt;All of these actively demonstrate that the team - and by implication, the project - matters. When a team knows they matter you will be amazed at what they can achieve given the chance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8787115987514038346?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8787115987514038346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8787115987514038346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8787115987514038346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8787115987514038346'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2008/05/black-hole-team.html' title='Black Hole Team'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-1205609803346140642</id><published>2008-05-13T13:12:00.002+01:00</published><updated>2008-05-13T13:17:37.510+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technical'/><category scheme='http://www.blogger.com/atom/ns#' term='selenium'/><title type='text'>Selenium and HTTPS</title><content type='html'>This is documented elsewhere, but here it is again:  &lt;br /&gt;&lt;br /&gt;The problem - you want to test a web site where you get a popup to accept an unrecognised certificate, eg when using a self-generated certifictate. Selenium cannot click on the resulting confirmation window, but worse still Selenium does not store your decision even though you have selected 'permanently accept' manually the first time.  &lt;br /&gt;&lt;br /&gt;The solution - basically Selenium is launching a clean copy of the browser each time. So you need to create a persistent profile to use each time.   &lt;br /&gt;&lt;br /&gt;As far as I know this is only possible with Firefox.  &lt;br /&gt;&lt;br /&gt;Create a new Firefox profile (firefox.exe -profileManager). In this case the name of the new profile is &lt;i&gt;selenium-https-profile&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;Add the certificate to it Add a suitable .pac to redirect to the SeleniumServer  &lt;br /&gt;&lt;br /&gt;&lt;div id="osy95" style="margin-left: 40px;"&gt;function FindProxyForURL(url, host) { &lt;br /&gt;    if(shExpMatch(url, '*/selenium-server/*')) { &lt;br /&gt;        return 'PROXY localhost:4444; DIRECT';  &lt;br /&gt;       }&lt;br /&gt;    } &lt;/div&gt; &lt;br /&gt;&lt;br /&gt;Start the server   &lt;br /&gt;&lt;br /&gt;&lt;div id="osy914" style="margin-left: 40px;"&gt;java -jar selenium-server.jar -firefoxProfileTemplate "C:selenium-ffox-profile"  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Use the *custom target in your Selenium client to start Firefox with the specific profile  &lt;br /&gt;&lt;br /&gt;&lt;div id="osy919" style="margin-left: 40px;"&gt;*custom C:\Program Files\Mozilla Firefox\firefox.exe -P selenium-https-profile &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-1205609803346140642?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/1205609803346140642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=1205609803346140642' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1205609803346140642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1205609803346140642'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2008/05/selenium-and-https.html' title='Selenium and HTTPS'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-1279908523829785633</id><published>2008-05-13T13:08:00.003+01:00</published><updated>2008-05-13T13:11:24.572+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='bad behaviour'/><category scheme='http://www.blogger.com/atom/ns#' term='architects'/><title type='text'>Seagull Architects</title><content type='html'>How familiar does this sound?  Your Friendly Neighbourhood Architect flies in, makes a lot of noise, craps all over the design without any sort of interaction with the user or codebase and flies out leaving the Team to tidy up as best they can....&lt;br /&gt;&lt;br /&gt;Unfortunately &lt;span id="lrv20"&gt;&lt;i&gt;Seagull Architects&lt;/i&gt;&lt;/span&gt; are still out there causing a nuisance on all types of project, not just agile.  &lt;br /&gt;&lt;br /&gt;So please, Do Not Feed the Seagulls.... &lt;br /&gt;&lt;br /&gt;(Note - there are unconfirmed reports that Seagull Architects are evolving. Into Vulcan Architects. Here they walk in, Vulcan-mind-meld with the requirements and codebase (again without any real interaction with customer or real world code), and announce the design required. "That's illogical, Captain")&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-1279908523829785633?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/1279908523829785633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=1279908523829785633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1279908523829785633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1279908523829785633'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2008/05/seagull-architects.html' title='Seagull Architects'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-4054761592541405655</id><published>2008-03-13T10:58:00.001Z</published><updated>2008-03-13T10:59:29.792Z</updated><title type='text'>Quote of the Day</title><content type='html'>&lt;span name="intelliTxt" id="intelliTXT"&gt;From &lt;a title="Firefox quote" target="_blank" href="http://www.theinquirer.net/gb/inquirer/news/2008/03/13/firefox-wipes-rivals" id="so1g"&gt;The Inquirer&lt;/a&gt; (of the latest Firefox 3 Beta):&lt;br /&gt;&lt;br /&gt;"Still it does make Microsoft's IE7 look like a bloated asthmatic slug towing a caravan full of elephants in comparison."&lt;br /&gt;&lt;br /&gt;Now &lt;i&gt;there's&lt;/i&gt; a vision....&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-4054761592541405655?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/4054761592541405655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=4054761592541405655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4054761592541405655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4054761592541405655'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2008/03/from-inquirer-of-latest-firefox-3-beta.html' title='Quote of the Day'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-9054051128121724500</id><published>2008-02-21T12:58:00.002Z</published><updated>2008-02-21T13:01:05.956Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='bad behaviour'/><title type='text'>If you think you're beaten...</title><content type='html'>&lt;span style="font-family: arial;"&gt;If you think you're beaten, then you are.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;I have recently been involved with a team where key players spent enormous amounts of time and energy trying to identify reasons why we &lt;/span&gt;&lt;i style="font-family: arial;"&gt;shouldn't&lt;/i&gt;&lt;span style="font-family: arial;"&gt; try things.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Working with people like this drags down the entire Team. It lowers morale because it becomes harder to make the changes that energise the working environment. The Team knows that it can never get better because the naysayers will do their best to block change and maintain the &lt;/span&gt;&lt;i style="font-family: arial;"&gt;status quo&lt;/i&gt;&lt;span style="font-family: arial;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;If only people would spend time and energy actually fixing the problems instead of finding reasons to justify substandard tools, processes, practices and behaviours.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-9054051128121724500?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/9054051128121724500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=9054051128121724500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/9054051128121724500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/9054051128121724500'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2008/02/if-you-think-youre-beaten-then-you-are.html' title='If you think you&apos;re beaten...'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-880656054007956571</id><published>2007-12-11T15:29:00.001Z</published><updated>2008-07-03T18:22:31.936+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='xpday'/><title type='text'>XP Day: Agile is a brand</title><content type='html'>&lt;span style="font-family:arial;"&gt;    An interesting truism from XP Day's final session, &lt;/span&gt;&lt;a style="font-family: arial;" title="Have We Lost our Mojo" target="_blank" href="http://www.xpday.org/node/48" id="fw2o"&gt;Have We Lost our Mojo&lt;/a&gt;&lt;span style="font-family:arial;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;"Agile is a brand."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;If it is, then it must have some kind of value. Therefore it is worth protecting from second rate imitations.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-880656054007956571?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/880656054007956571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=880656054007956571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/880656054007956571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/880656054007956571'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/12/xp-day-agile-is-brand.html' title='XP Day: Agile is a brand'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-326045910474566767</id><published>2007-12-11T15:14:00.000Z</published><updated>2007-12-11T15:15:55.802Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='quality'/><title type='text'>Schrodinger's bug</title><content type='html'>&lt;span style="font-family: arial;"&gt;A bug does not definitely exist or not until you exercise the code.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;You can either let your users find it, or you can write tests to flush it out.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;It's your call.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-326045910474566767?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/326045910474566767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=326045910474566767' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/326045910474566767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/326045910474566767'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/12/bug-does-not-definitely-exist-or-not.html' title='Schrodinger&apos;s bug'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-3500978413049318003</id><published>2007-12-10T15:01:00.001Z</published><updated>2008-07-03T18:21:26.085+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compromise'/><category scheme='http://www.blogger.com/atom/ns#' term='xpday'/><title type='text'>XP Day: Have You Compromised Your Agility?</title><content type='html'>&lt;p class="western" style="margin-bottom: 0in; font-family: Arial;"&gt;One of the more interesting sessions I went to during XP Day this year was the "&lt;a href="http://www.xpday.org/node/49" target="_blank"&gt;&lt;u&gt;&lt;span style="color:#0000ff;"&gt;Have You Compromised Your Agility?&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;" session run by &lt;a href="http://www.energizedwork.com/" target="_blank"&gt;&lt;u&gt;&lt;span style="color:#0000ff;"&gt;Gus Power and Simon Baker.&lt;/span&gt;&lt;/u&gt;&lt;/a&gt; Run in &lt;a href="http://www.theworldcafe.com/principles.htm" target="_blank"&gt;&lt;u&gt;&lt;span style="color:#0000ff;"&gt;World Cafe&lt;/span&gt;&lt;/u&gt;&lt;/a&gt; format (complete with tablecloths and candles!) it set out to create an informal environment to discuss whether corporate attitudes are forcing agile and lean thinkers to compromise a step too far in order to become acceptable to traditional corporate culture.&lt;br /&gt;&lt;br /&gt;OK, I admit it. I was a plant. No I wasn't quietly photosynthesizing in the corner, I was invited there by Gus and Simon to be deliberately provocative, forcing difficult issues out into the daylight. My table was focussed on "&lt;a title="Values mindmap" target="_blank" href="http://www.flickr.com/photos/agileinaction/2062236736/" id="sea6"&gt;Values&lt;/a&gt;". Specifically, the premise was that some organisations have internal Values (and hence behaviours) that do not permit agile processes to develop and prosper but instead force them to mutate into grotesque, ineffectual parodies.&lt;br /&gt;&lt;br /&gt;The reactions were interesting. On the one hand there were a handful of aggressive &lt;i&gt;ad hominem&lt;/i&gt; challenges. "Who was I to question what a company calls 'agile software development'?"  "Who was I to question the value of bug ridden software to the customer?" "If I couldn't work with the &lt;i&gt;status quo&lt;/i&gt; of a company then &lt;b&gt;&lt;i&gt;I&lt;/i&gt;&lt;/b&gt; should be the one to get out rather than try to change it" (even if I had been paid to come in and coach/mentor!). And so on. I was genuinely shocked at the ferocity of some of these challenges, especially since they were targetted at a personal level and entirely missed the points being made. Perhaps I was being a little &lt;i&gt;too &lt;/i&gt;provocative at first, but I obviously touched a raw nerve....&lt;br /&gt;&lt;br /&gt;However, most of those involved recognised the issue many having experienced it first hand. But there seemed to be a general inability to address the fundamental problems. No-one seemed to feel suitably empowered to do anything. In some cases the deeper problem was justified by external pressures (delivery date being a common theme - "do whatever it takes to meet the date and functionality and to hell with the quality/risk"), others did not feel that they could make the changes needed alone (which is not surprising - people will not change unless they want to change). Only one or two said they would go back and try to change things.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0in; font-family: Arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0in; font-family: Arial;"&gt;So was the session useful? Judging by the feedback received by Gus and Simon, the answer is a resounding "yes". Did I find it useful from my position as a hired hand?  Yes - I got an interesting insight into the current state of the agile nation from people who are in the trenches and trying to get things done using agile/lean thinking in what is sometimes an extremely (sic) hostile environment. Yes, agile is adapting for best fit. But the session confirmed my worst fears that in many cases it is being forced to adapt a step too far.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-3500978413049318003?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/3500978413049318003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=3500978413049318003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3500978413049318003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3500978413049318003'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/12/one-of-more-interesting-sessions-i-went.html' title='XP Day: Have You Compromised Your Agility?'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8675330218177093321</id><published>2007-11-29T11:12:00.000Z</published><updated>2007-11-29T11:23:49.826Z</updated><title type='text'>Planning Poker Cards Prototype Deck</title><content type='html'>&lt;span style="font-family:arial;"&gt;Finally.... I have finished a full suit of Thirsty Bear Software Planning Poker cards:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_tpWAicrRTb4/R06fRfpYfLI/AAAAAAAAAAM/9m46FA5Kp8Q/s1600-h/Picture+011web.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_tpWAicrRTb4/R06fRfpYfLI/AAAAAAAAAAM/9m46FA5Kp8Q/s320/Picture+011web.jpg" alt="" id="BLOGGER_PHOTO_ID_5138219347777977522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;   OK, it's still a prototype built from laminated pouches, inkjet printouts and a lot of patience, but they make a &lt;span style="font-style: italic;"&gt;huge&lt;/span&gt; difference to the flow of a Planning Game. Even using a small subset (0, 1, 2, 3 and '?') has a significant impact by removing the "follow the leader" behaviour that conventional planning encourages.&lt;br /&gt;&lt;br /&gt;Now to find a printer that can supply a small run as "real" playing cards.....&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8675330218177093321?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8675330218177093321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8675330218177093321' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8675330218177093321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8675330218177093321'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/11/planning-poker-cards-prototype-deck.html' title='Planning Poker Cards Prototype Deck'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_tpWAicrRTb4/R06fRfpYfLI/AAAAAAAAAAM/9m46FA5Kp8Q/s72-c/Picture+011web.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8573281611770481330</id><published>2007-11-06T13:54:00.001Z</published><updated>2007-11-06T14:04:55.050Z</updated><title type='text'>What's in a name?</title><content type='html'>&lt;span style="font-family:arial;"&gt;I think I might have stumbled upon a better name for what I was originally calling "&lt;/span&gt;&lt;a href="http://christechblog.blogspot.com/2007/04/learning-is-not-compulsory-dangers-of.html"&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;faux agile&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;".&lt;br /&gt;&lt;br /&gt;"&lt;span style="font-style: italic;"&gt;Cargo Cult Agile&lt;/span&gt;" seems to convey the sentiment far better by linking it to the &lt;a href="http://en.wikipedia.org/wiki/Cargo_cult"&gt;cargo cult&lt;/a&gt; religions around the world. In short, it's when a team/organisation blindly adopts agile practices without really understanding them in order to get benefit from them.&lt;br /&gt;&lt;br /&gt;I picked it up from an &lt;a href="http://www.xpday.org/node/48"&gt;XP Day session description&lt;/a&gt;, but it has appeared elsewhere as well (drop me a line if you believe you invented the term, and I will attribute the source). I only wish I had thought of it.....&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8573281611770481330?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8573281611770481330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8573281611770481330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8573281611770481330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8573281611770481330'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/11/whats-in-name.html' title='What&apos;s in a name?'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8970048402705807292</id><published>2007-10-10T14:03:00.001+01:00</published><updated>2007-10-10T14:03:09.228+01:00</updated><title type='text'>Continuous Improvement</title><content type='html'>&lt;strong style="font-family: arial,helvetica,sans-serif; font-weight: normal;"  &gt;An &lt;a href="http://www.exampler.com/discipline-and-skill.html"  &gt;interesting insight&lt;/a&gt; into continuous learning and improvement from &lt;a href="http://www.exampler.com/blog/"  &gt;Brian Marick:&lt;/a&gt;&lt;br  &gt;&lt;br  &gt;"At the end of each iteration, each team member should be able to say why she is worth more money to her employer than she was at the beginning&lt;/strong&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"  &gt;."&lt;br  &gt;&lt;br  &gt;Can you put your hand on your heart and say that you are improving yourself every two weeks? It's certainly something to aspire to.&lt;br  &gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8970048402705807292?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8970048402705807292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8970048402705807292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8970048402705807292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8970048402705807292'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/10/continuous-improvement.html' title='Continuous Improvement'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-1859044112400645544</id><published>2007-09-29T17:17:00.000+01:00</published><updated>2007-09-29T17:41:19.413+01:00</updated><title type='text'>Agile teams should be like a bowl of thick custard...</title><content type='html'>&lt;span style="font-family: arial;"&gt;No, I haven't lost it. After seeing some interactions recently I think it's safe to say that a successful Agile Team can (and should) be "&lt;/span&gt;&lt;a style="font-family: arial; font-style: italic;" href="http://en.wikipedia.org/wiki/Dilatant"&gt;dilatant&lt;/a&gt;&lt;span style="font-family: arial;"&gt;". &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;Be open to well thought out changes that obviously improve productivity, but push back against fast, ill thought out, knee-jerk responses, and also politically motivated decisions from outside the Team that compromise working values.&lt;br /&gt;&lt;br /&gt;Take inspiration from your bowl of custard and get your just desserts.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-1859044112400645544?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/1859044112400645544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=1859044112400645544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1859044112400645544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/1859044112400645544'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/09/agile-teams-should-be-like-bowl-of.html' title='Agile teams should be like a bowl of thick custard...'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-6604400387338425603</id><published>2007-08-07T13:05:00.001+01:00</published><updated>2007-08-07T13:05:25.116+01:00</updated><title type='text'>TDD is an approach, not a task</title><content type='html'>&lt;a href="http://objectmentor.com/omTeam/ottinger_t.html"&gt;Tim Ottinger&lt;/a&gt; has written an &lt;a href="http://blog.objectmentor.com/articles/2007/08/02/not-a-task-but-an-approach"&gt;interesting entry&lt;/a&gt; in his blog about test driven design.&lt;br&gt;&lt;br&gt;His mantra? "&lt;span style="font-style: italic;" class="caps"&gt;TDD&lt;/span&gt;&lt;span style="font-style: italic;"&gt; isn’t a task. It is not something you do.  It is an approach.  It is how you write your programs.&lt;/span&gt;"&lt;br&gt;&lt;br&gt;Couldn't have put it better myself!&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-6604400387338425603?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/6604400387338425603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=6604400387338425603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/6604400387338425603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/6604400387338425603'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/08/tdd-is-approach-not-task.html' title='TDD is an approach, not a task'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-3436647320767590155</id><published>2007-07-30T21:05:00.001+01:00</published><updated>2007-07-30T21:41:19.055+01:00</updated><title type='text'>Come and join our agile team...yeah, right</title><content type='html'>I have recently been invited to join a(nother) "Agile Team" as a senior developer rather than coach. You might have already gathered that &lt;a title="" target="" href="http://christechblog.blogspot.com/2007/04/learning-is-not-compulsory-dangers-of.html"&gt;I am becoming increasingly sceptical about these claims&lt;/a&gt; having been caught out before. &lt;br&gt;&lt;br&gt;I have no idea whether the latest offer is truly agile, or &lt;span style="font-style: italic;"&gt;faux agile&lt;/span&gt;, but it got me thinking. What &lt;span style="font-style: italic;"&gt;am&lt;/span&gt; I looking for in an Agile Team before I can join it while feeling safe enough to leave my coaching hat at home? Here are my initial thoughts:&lt;br&gt;&lt;ul&gt;&lt;li&gt;fixed, short iterations with regular retrospectives  &lt;/li&gt;&lt;li&gt;story based scope specification with a suitable Customer involved  with the Team  &lt;/li&gt;&lt;li&gt;regular replanning based on real, measurable progress  &lt;/li&gt;&lt;li&gt;full integration of QA within the team  &lt;/li&gt;&lt;li&gt;test coverage greater than 80%  &lt;/li&gt;&lt;li&gt;regular (ie multiple times per day) automated integration testing  &lt;/li&gt;&lt;/ul&gt;I'm sure there are more but these seem to be the essentials that are most often missing.&lt;br&gt;&lt;br&gt;If you can't check these basic boxes then please have the &lt;a href="http://christechblog.blogspot.com/2007/07/i-wouldnt-start-from-here.html"&gt;courage and wisdom&lt;/a&gt; to recognise that something is wrong and get help!&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-3436647320767590155?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/3436647320767590155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=3436647320767590155' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3436647320767590155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3436647320767590155'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/07/come-and-join-our-agile-teamyeah-right.html' title='Come and join our agile team...yeah, right'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-247501072179007626</id><published>2007-07-20T13:55:00.001+01:00</published><updated>2009-11-03T12:47:21.704Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='failure'/><title type='text'>Teaching pigs to sing....</title><content type='html'>&lt;font size="3"&gt;&lt;span style="font-style: italic; font-family: arial,helvetica,sans-serif;"&gt;"Never try to teach a pig to sing. It wastes your time and annoys the pig" (Robert Heinlein, Time Enough for Love)&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;When trying to become agile, Team members &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;quickly &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;tend to fall into three main categories (the percentages are purely based on my empirical observations and should not be seen as set in stone or based on scientific study!).&lt;br&gt;&lt;br&gt;10-20% will "get it". These are the guys and girls who will be able to use the techniques to learn from their mistakes, spread their wings and perform. They are the future of the new, agile Company.&lt;br&gt;&lt;br&gt;60-80% don't "get it", but are willing to try, or at least toe the line. They need more guidance about how to work efficiently, and that things are OK. They need more reassurance that the Team does not need this, that and the other supporting items (eg the massive Big Up Front Design documents, or a full specification signed in triplicate). With careful nurturing some people in this bracket will "get agile" (and trust me, the lightbulb moment when they do is one of the most satisfying moments of any Coach's career...). However those that don't really understand the principles do follow the basic ground rules and are not actively damaging to the agile process or the Team as a whole. In fact gentle pushback and respectful challenge from people who don't fully understand is healthy and productive.&lt;br&gt;&lt;br&gt;10-20% of the Team don't "get it", will never "get it", and in fact really, truly don't want to "get it". These people are the biggest danger to any agile transition since they are not always obvious but will actively undermine changes to the &lt;span style="font-style: italic;"&gt;status quo&lt;/span&gt;. More obvious behaviours that I have witnessed have included aggressive, disrespectful and/or unecessary challenge, refusal to adopt new working practices agreed by their Team (including themselves!), continuing to use old heavyweight processes in addition to the lightweight replacements, refusal to engage with the Team as an equal member and so on.&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-family: arial,helvetica,sans-serif;"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;Anyone falling into this final group can cause huge amounts of damage to any agile Team but this damage is multiplied in a fledgling agile environment since the result will be bad decision making in order to placate someone who has no interest in working smarter.&lt;br&gt;&lt;br&gt;So what to do? A difficult decision needs to be made but ultimately the damaging disruption has to be neutralised as quickly as possible - usually the easiest remedy is to transfer them from the agile Team to one more suited to their skills and temperament.&amp;nbsp;&lt;br&gt;&lt;br&gt;Alternatively you can keep trying to educate...how are you at giving singing lessons?&lt;br&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-family: arial,helvetica,sans-serif;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-247501072179007626?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/247501072179007626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=247501072179007626' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/247501072179007626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/247501072179007626'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/07/teaching-pigs-to-sing.html' title='Teaching pigs to sing....'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-770795045523360549</id><published>2007-07-06T10:34:00.000+01:00</published><updated>2007-07-11T13:50:16.961+01:00</updated><title type='text'>"I wouldn't start from here"</title><content type='html'>There’s an old joke that goes something like this:&lt;br /&gt;&lt;br /&gt;“A driver is lost in the darkest depths of the countryside trying to find his way back to the hotel where he is staying. In desperation he pulls over to ask directions from one of the locals. “Excuse me”, he says, “Can you direct me to the Hotel please?”. The local looks at him for a moment, sucks his teeth and says “I wouldn’t start from ‘ere, Bor’”.&lt;br /&gt;&lt;br /&gt;When switching to agile processes there is a temptation to not “start from here”, but to try and create a sort of alternative reality before you start where it will be easier to migrate to the new process. This misses the point.&lt;br /&gt;&lt;br /&gt;To “&lt;span style="font-style:italic;"&gt;be agile&lt;/span&gt;” you need to&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Have the &lt;span style="font-style:italic;"&gt;honesty&lt;/span&gt; to recognise where you are right now&lt;br /&gt;&lt;li&gt;Have the &lt;span style="font-style:italic;"&gt;courage &lt;/span&gt;to admit where you are, warts’n’all&lt;br /&gt;&lt;li&gt;Now &lt;span style="font-style:italic;"&gt;fix it&lt;/span&gt; one step at a time&lt;br /&gt;&lt;li&gt;Repeat...&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-770795045523360549?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/770795045523360549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=770795045523360549' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/770795045523360549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/770795045523360549'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/07/i-wouldnt-start-from-here.html' title='&quot;I wouldn&apos;t start from here&quot;'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-4271774351242549887</id><published>2007-06-12T13:46:00.000+01:00</published><updated>2007-06-12T13:54:58.102+01:00</updated><title type='text'>Cruise Control health meter addendum</title><content type='html'>&lt;span style="font-family: arial;"&gt;A while back I pointed out that high performing teams tend to break their automated build. This might be misconstrued, so to clarify the point.&lt;br /&gt;&lt;br /&gt;A successful, productive Team will inevitably discover unexpected issues that will break the build. &lt;span style="font-style: italic;"&gt;However&lt;/span&gt; this does not make breaking the build acceptable so do make sure that this message is reinforced albeit gently and with good humour, for example with &lt;a href="http://www.think-box.co.uk/blog/2006/10/silly-hats-for-failing-build.html"&gt;silly hats&lt;/a&gt; or similar.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-4271774351242549887?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/4271774351242549887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=4271774351242549887' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4271774351242549887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4271774351242549887'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/06/cruise-control-health-meter-addendum.html' title='Cruise Control health meter addendum'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-8521191712005384434</id><published>2007-06-07T13:41:00.001+01:00</published><updated>2007-06-07T13:44:18.736+01:00</updated><title type='text'>Travelling Light</title><content type='html'>&lt;p style="font-family: arial;" class="western"&gt;&lt;span lang="en-US"  style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;I  like to travel light. I hate carrying things, especially big, bulky laptops.  But as part of my work I need to take notes, and also have access to a  range of reference materials that can be used to help some Teams to understand what I  am explaining - slideshows, summary documents etc can help get  the agile message across. The problem is I often don't know that I need a specific document until I need it. I also have a (growing!) backlog of blog entries that need thinking about and finishing - it would be nice to be able to work on these when I can wherever I am but without the encumberance of a laptop.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: arial;" class="western"&gt;&lt;span lang="en-US"  style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;In order to solve this  'write once access anywhere problem' I have been playing with the online storage service provided by  &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);font-size:100%;" &gt;&lt;u&gt;&lt;a href="http://www.omnidrive.com/"&gt;&lt;span lang="en-US"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Omnidrive&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;span lang="en-US"  style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  to provide a central location for data I use regularly and "in progress" documents. The system integrates &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);font-size:100%;" &gt;&lt;u&gt;&lt;a href="http://writer.zoho.com/"&gt;&lt;span lang="en-US"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Zoho  Writer&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;span lang="en-US"  style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  with the storage so documents can be edited online anywhere - but  also  they can be posted to a blog. This looked promising except the version of Zoho integrated with Omnidrive won't post to Blogger.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="font-family: arial;" class="western"&gt;&lt;span lang="en-US"  style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Yet all is not lost! &lt;a href="http://www.zoho.com/"&gt;Zoho&lt;/a&gt; also host documents, so it should be able to store work in progress online to be picked up later and published from anywhere.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="font-family: arial;" class="western"&gt;&lt;span lang="en-US"  style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The  proof as always is in the actual doing rather than the talking (we  value working software over up to date documentation, remember). So  hopefully this experimental entry will  publish to the blog in one piece...! &lt;/span&gt;&lt;/span&gt;  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-8521191712005384434?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/8521191712005384434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=8521191712005384434' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8521191712005384434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/8521191712005384434'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/06/travelling-light.html' title='Travelling Light'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-4652754426877275193</id><published>2007-04-18T13:20:00.000+01:00</published><updated>2007-04-18T13:24:23.240+01:00</updated><title type='text'>Understanding Agile, Take 1</title><content type='html'>&lt;pre&gt;&lt;span style="font-family: arial;"&gt;To the optimist the glass is half full.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;To the pessimist the glass is half-empty.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;To the agilist the glass is twice as big as it needs to be....&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-4652754426877275193?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/4652754426877275193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=4652754426877275193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4652754426877275193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4652754426877275193'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/04/understanding-agile-take-1.html' title='Understanding Agile, Take 1'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-3162835527411413510</id><published>2007-04-03T13:23:00.000+01:00</published><updated>2009-11-03T12:48:35.829Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='team health'/><title type='text'>Cruise Control health meter</title><content type='html'>&lt;p class="MsoNormal"&gt;I use Cruise Control. It’s my automated build weapon of choice. Why? For no other reason that it was the first one that I got my hands on. I (mostly) understand it, trust it and know its quirks and foibles.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;It also has a neat feature – it shows project metrics. These are shown as pie and scatter charts displaying successful and unsuccessful builds. Both of these provide useful indicators about the health of a given project.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Taking the scatter chart first. This is a calendar with day on the X axis, and time on the Y axis. A dot is placed on a calendar every time there is a build – red for fail, blue for success. From this you can get a feel for the following:&lt;/p&gt;    &lt;ul style="margin-top: 0cm;" type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;How      many checkins are being done per day &lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;How      successful they are&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;How      long a build stays broken&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Whether      the Team is staying unusually late or coming in at weekends&lt;/li&gt;&lt;/ul&gt;    &lt;p class="MsoNormal"&gt;All of these are useful indicators as to how things are going in general. I look for regular checkins during standard working hours and fast recovery from breakage – and I encourage the Team to investigate if this pattern is broken. All fairly straightforward and uncontroversial in the agile world.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;The pie chart does something similar – it shows the proportion of broken to successful builds in isolation. Not necessarily as useful as the calendar scatter, or is it?&lt;/p&gt;    &lt;p class="MsoNormal"&gt;I have noticed an interesting trend with the pie chart in Cruise Control. At the moment it is nothing more than a gut feel or rule of thumb based on the observation of several teams, and I certainly have no data to back this up….but successful, dynamic teams appear to break somewhere between 15% and 25% of builds.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Shock! Horror! Agile teams break the build!&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Well, yes. Breaking stuff unexpectedly is how you learn and improve. It is also the motivation to fix structure and design. So the point I am making is: Yes, teams should &lt;span style="font-style: italic;"&gt;expect &lt;/span&gt;to break the build once in a while and question if they are not. It would seem that somewhere around 20% is the sweet spot where the Team is behaving optimally. Much more than this and something is going seriously wrong. Less than this and there is either not enough refactoring pressure on the design or the design is almost perfect (I know which of these I would suspect initially).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-3162835527411413510?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/3162835527411413510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=3162835527411413510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3162835527411413510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/3162835527411413510'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2006/11/cruise-control-health-meter.html' title='Cruise Control health meter'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-6931670735049033754</id><published>2007-04-03T11:54:00.000+01:00</published><updated>2009-11-03T12:47:21.704Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='failure'/><title type='text'>"Learning is not compulsory" - The Dangers of Faux Agile</title><content type='html'>&lt;span style="font-family:Arial;"&gt;I am noticing a worrying trend amongst companies wanting to take advantage of the perceived benefits of the Agile Revolution – specifically the &lt;i style=""&gt;faux-agile&lt;/i&gt; project. These are projects that have stamped themselves as “agile” but do not adhere to even the most fundamental good practice. When you scratch the surface they do not continually build and test, nor do they actively refactor bad design out. Unit tests are at best given lip service, and coverage is low. In most cases the only nod towards anything remotely agile is the lack of unnecessary – or indeed &lt;i style=""&gt;any&lt;/i&gt; –­­ documentation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;          &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;When asked, the excuses for the shortcomings are many and varied – “&lt;i style=""&gt;We know the structure of the software is awful but we don’t have enough time to refactor it right now, but we will get around to it later when we have more time&lt;/i&gt;” (yeah, right…), “&lt;i style=""&gt;Our Company culture does not allow the Quality Department to be integrated into development teams&lt;/i&gt;”, “&lt;i style=""&gt;We don’t know how to implement the automated build&lt;/i&gt;”. The list of excuses given by &lt;i style=""&gt;faux-agile&lt;/i&gt; apologists to explain away their inability to address core agile principles is endless. And yet when the proverbial hits the fan and the project is not delivering, someone always has the audacity to claim that &lt;i style=""&gt;it was the agile process that failed&lt;/i&gt;! In reality the Team was using that time-honoured (but dishonourable) process called &lt;i style=""&gt;hacking &lt;/i&gt;and hiding it behind the Agile flag of convenience. I am sure I don’t need to expand on the potential damage that this can do the the Agile cause.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;br /&gt;So why are these pseudo-agile projects becoming more common? First of all I am convinced that it is not deliberate dishonesty – all the members of &lt;i style=""&gt;faux-agile &lt;/i&gt;teams I have met and worked with are genuine, honest software developers. Some have even convinced themselves that they are following the &lt;a href="http://www.agilemanifesto.org/"&gt;Agile Manifesto&lt;/a&gt;.&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;So if it is not deliberate subterfuge, what drives these behaviours?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;My opinion is that it derives from the interaction of several issues.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;ol style="margin-top: 0cm;" start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-family:Arial;"&gt;The cost of initial implementation of agile.      Kicking off (or converting) a project to ‘agile’ requires some up-front      investment. Setting up an automated build machine, defining an acceptance      framework, educating the Team in agile process and so on.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-family:Arial;"&gt;Management cynicism. I believe that Management      in general is still suspicious of agile methods because they transfer a      significant amount of power from the manager to the development team. Add      to this any significant cost of implementation (including development      down-time), and a pinch of failed previous &lt;i style=""&gt;faux-agile&lt;/i&gt; projects and suddenly the tension rises – “&lt;i style=""&gt;Why should I, a traditional manager,      risk losing a large amount of budget on an experiment like this? You can      do it as long as I don’t see any downtime or schedule slip&lt;/i&gt;”. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-family:Arial;"&gt;Lack of understanding of the “&lt;st1:street st="on"&gt;&lt;st1:address st="on"&gt;Agile Way&lt;/st1:address&gt;&lt;/st1:street&gt;”. When a Team does not fully      understand the holistic nature of an agile process, they will be tempted      to cut corners and only implement specific parts, leaving the rest “until      later”. This is &lt;i style=""&gt;especially&lt;/i&gt; true      if they are under pressure to put it into place with no downtime or schedule      slip. This is a direct consequence of skimping on Agile training – buying      the Team a copy of &lt;i style=""&gt;Extreme      Programming Explained&lt;/i&gt; does not usually magically make the Team agile…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;And so the Team begins to stray towards the dreaded Whirlpool of Doom….not all the framework is in place so the Team works a bit harder to make the process work which means they don’t have time to fix the framework which means they have to work a bit harder which means they have even less time to fix the framework….&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;So how can we fix this? I would suggest: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;ol style="margin-top: 0cm;" start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-family:Arial;"&gt;Companies must begin to recognise that “agile” is      not a silver bullet. It is an alternative way of developing software, and      as such it &lt;i style=""&gt;does&lt;/i&gt; have a high risk      of failure if not installed correctly. As such it &lt;i style=""&gt;will&lt;/i&gt; have a cost of implementation. This will involve proper      training of the Team &lt;i style=""&gt;and&lt;/i&gt;      Management &lt;i style=""&gt;and&lt;/i&gt; Customer. It will      also involve the setting up of the infrastructure – automated build      machine, acceptance test framework and so on. The exact cost depends      entirely on how close to the agile ideal you are before you start – in      other words how far away you are from your destination.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-family:Arial;"&gt;As with any major change, give the Team space to      make initial mistakes. They will be better and stronger for it. Give the      feedback process a chance to work. &lt;span style="font-style: italic;"&gt;Enable &lt;/span&gt;the Team. Let the Team &lt;i style=""&gt;learn&lt;/i&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-family:Arial;"&gt;Don’t be afraid to get help! This is not simply      a sales pitch for the Coaches and Mentors out there (myself included), it is an observation from      the trenches. There are many guys (and girls!) out there who have “been      there, done that, got it wrong, then got it right”. Some have decided to      share their knowledge to help your Team avoid the mistakes &lt;span style="font-style: italic;"&gt;they &lt;/span&gt;made initially. The right Coach will set up the Team and leave it in a state      where it can be used to seed other teams later, ultimately making your Company      self-sufficient in agile training. The short term cost  outweighs by far the long term benefit of getting it right.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;And what if your Company is not prepared to adapt and implement agile process in a responsible manner, instead insisting on perpetuating the faux-agile anti-pattern? The best advice I can give is to ponder a quote from Lord Deming – “&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Learning is not compulsory... neither is survival&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-6931670735049033754?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/6931670735049033754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=6931670735049033754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/6931670735049033754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/6931670735049033754'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2007/04/learning-is-not-compulsory-dangers-of.html' title='&quot;Learning is not compulsory&quot; - The Dangers of Faux Agile'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-7720898185425637819</id><published>2006-12-30T17:30:00.000Z</published><updated>2006-12-30T17:40:09.263Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='xp mentor coach'/><title type='text'>What does an XP Coach/Mentor actually do?</title><content type='html'>One of the things I do is XP coaching and mentoring. But a question that keeps cropping up (bizarrely, often &lt;span style="font-style: italic;"&gt;after &lt;/span&gt;I have been hired!) is "&lt;span style="font-style: italic;"&gt;What does an XP coach/mentor actually do?&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;Interesting question. And is there a difference between a Coach and Mentor?&lt;br /&gt;&lt;br /&gt;In my opinion there is a slight difference, but first the common ground.&lt;br /&gt;&lt;br /&gt;What both do is to guide a given team through the learning process of implementing XP. It is the responsibility of the Coach/Mentor to gently guide the team around the pitfalls by encouraging the good agile behaviours - communication, testing, team self review etc. Equally, destructive behaviours - slipping into mini-waterfall process, not talking to (or not having!!) customers etc - are discouraged.&lt;br /&gt;&lt;br /&gt;Often the best way of doing this will be from inside the team, demonstrating by example the power of the techniques. IMO this is the "Coach" part of the job description.&lt;br /&gt;&lt;br /&gt;As the team begins to understand and becomes truly self-organising, the Coach must become less involved if the team are to stand by themselves. But they must still have the skills to keep themselves on-track. This is the "Mentor" stage - when the team is trying to stay agile after getting the idea. This stage involves acting as more of a sounding board for ideas; a sanity check that the decisions made as the development process adapts and evolves are correct and not reverting to traditional waterfall. I have found that this often involves acting as an über-team lead, advising the existing team leader and/or experienced engineers on how to handle specific situations but generally not solving the problems for them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-7720898185425637819?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/7720898185425637819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=7720898185425637819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/7720898185425637819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/7720898185425637819'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2006/12/what-does-xp-coachmentor-actually-do.html' title='What does an XP Coach/Mentor actually do?'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-4014319092632634460</id><published>2006-11-19T17:10:00.000Z</published><updated>2009-11-03T12:49:13.806Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='fear of change'/><title type='text'>Change code?  Be afraid. Be very afraid....</title><content type='html'>In my role as a software developer I have come across many  strange attitudes to coding, but none so strange as the fear of changing code.&lt;br /&gt;&lt;br /&gt;A good example - I was working with a team trying to use XP techniques. I was hired as a XP developer to strengthen the team and get them over a busy patch - not as coach, but simply as someone who had developed Java code in an extreme agile environment. No problem there.&lt;br /&gt;&lt;br /&gt;The product we were working on required new functionality added to it. Since the current software structure did not easily accommodate the new stuff I mentioned in the stand-up that I would be restructuring the internals to make it fit more elegantly. This kind of refactoring is normal practice in any agile team, and is necessary to evolve the design with emerging requirements, keeping it coherent and stopping it from descending into a meaningless Ball Of Mud antipattern. I thought nothing of it.  But one of the senior engineers threw his hands up in horror at the thought. "You can't do that!  You might break something!".&lt;br /&gt;&lt;br /&gt;The thinking went something like this:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;"Currently the code works. The area of code being touched took a long time to get right and there is a load of undocumented features we discovered along the way but we cannot remember exactly what these were. Therefore to change it is likely to break the end product. Also we don't have tests that check what the code should do so your changes might break the software without us even knowing it is broken. So any changes must not affect existing code. But we cannot test it so we can't tell if it does affect it...."&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;R-i-g-h-t.....so let's get this straight. The code "does something". We don't know what that something is (we don't have tests) but we suspect that this unknown something will change if anyone touches any existing code in a certain area. Therefore we cannot change the code, only add to it even though the new functionality should really require a structural change to maintain architectural integrity. But we can't even tell if the external changes have affected anything &lt;span style="font-style: italic;"&gt;because we don't actually know what this thing does!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;So the burning question is "&lt;span style="font-style: italic;"&gt;How can anyone change any code anywhere if we (1) don't want any existing functionality to change and (2) we can have no certainty that a change has not affected existing functionality&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Now I should add at this stage that the guy in question is fundamentally a good, competent, normally coherent engineer (and is also a representation of several real-life engineers who I have come across in this situation!).  Which raises the question why good, competent engineers can get themselves into this logical black hole and fear making changes in code.&lt;br /&gt;&lt;br /&gt;There are several key issues here:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;No tests. So we cannot reproduce what the product should do.&lt;/li&gt;&lt;li&gt;Lost information. The Team has not been sharing information effectively so nobody really understands why things are structured the way they are.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Undocumented features discovered in a third party library.&lt;/li&gt;&lt;li&gt;Unclear code. The code in question is satisfying several sets of responsibilities resulting in a monster 1500 line class.&lt;/li&gt;&lt;/ol&gt;The issues do highlight deeper issues with the way the specific team is working. They are indicative of several common behavioural antipatterns that often cause agile processes to fail. I intend to try and pin down specifics in later blog entries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-4014319092632634460?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/4014319092632634460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=4014319092632634460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4014319092632634460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/4014319092632634460'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2006/11/change-code-be-afraid-be-very-afraid.html' title='Change code?  Be afraid. Be very afraid....'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1338078043432413205.post-5046089061134292288</id><published>2006-10-16T12:38:00.000+01:00</published><updated>2006-10-16T13:10:55.449+01:00</updated><title type='text'>It's finally happened....</title><content type='html'>Well, it's finally happened. After ages of deliberation, soul searching mixed in with good measures of apathy and procrastination I have started a Blog. So what finally gave me the boot up the proverbial backside to do this? Primarily an excellent &lt;a href="http://steve.yegge.googlepages.com/you-should-write-blogs"&gt;blog entry from Steve Yegge&lt;/a&gt; explaining why everyone should start a Blog.&lt;br /&gt;&lt;br /&gt;What will be in here? Good question. But I suspect it is going to be my thoughts, experiences and opinions in the field of software development, especially in agile processes. In addition it gives me somewhere to document all those irritating two-days-to-solve-a-simple-problem solutions for the amusement of others that knew the answer all along (and hopefully help at least one other person struggling to solve the same problem...).&lt;br /&gt;&lt;br /&gt;So bear with me while I work out how this blog-thing will work in the Real World - always the hardest thing for an engineer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1338078043432413205-5046089061134292288?l=blog.thirstybear.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.thirstybear.co.uk/feeds/5046089061134292288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1338078043432413205&amp;postID=5046089061134292288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5046089061134292288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1338078043432413205/posts/default/5046089061134292288'/><link rel='alternate' type='text/html' href='http://blog.thirstybear.co.uk/2006/10/its-finally-happened.html' title='It&apos;s finally happened....'/><author><name>Chris</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_tpWAicrRTb4/SYCajwk7v0I/AAAAAAAAAFQ/PYIA1_DIl2U/S220/IMG_0646.jpg'/></author><thr:total>0</thr:total></entry></feed>
