<?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-532202694626269476</id><updated>2011-09-12T16:47:26.701+03:00</updated><category term='essence'/><category term='lean'/><category term='fun'/><category term='interactions'/><category term='tools'/><category term='testing'/><category term='scrum'/><category term='leadership'/><title type='text'>Ari's Blog</title><subtitle type='html'>Thoughts about agile and lean software development, and life.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-1299577905384540938</id><published>2010-05-16T08:39:00.003+03:00</published><updated>2010-09-21T11:13:04.032+03:00</updated><title type='text'>Agile Saturday talk: Scrum is Not Enough 2.0</title><content type='html'>I gave a talk in Agile Saturday organized by the good people of Agile Estonia. It was about how Scrum is not enough for solving the problems that a good Scrum implementation surfaces. Here are the slides.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_4113507"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/aritanninen/scrum-is-not-enough-v20" title="Scrum is not enough v2.0"&gt;Scrum is not enough v2.0&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse4113507" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scrumisnotenoughv2-0-100516003411-phpapp01&amp;stripped_title=scrum-is-not-enough-v20" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse4113507" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scrumisnotenoughv2-0-100516003411-phpapp01&amp;stripped_title=scrum-is-not-enough-v20" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/aritanninen"&gt;aritanninen&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Thanks to all organizes and especially Stan and Heiti who took such good care of us! It was a fun day with lots of excitement and good energy. :o)&lt;br /&gt;&lt;br /&gt;I would love to hear your comments on my presentation! And if you are one of the people I shared a meter of beer with yesterday evening, drop a comment, too!&lt;br /&gt;&lt;br /&gt;Update: I am on video, too!&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://player.vimeo.com/video/14239378?portrait=0" width="400" height="225" frameborder="0"&gt;&lt;/iframe&gt;&lt;p&gt;&lt;a href="http://vimeo.com/14239378"&gt;Scrum Is Not Enough v2.0&lt;/a&gt; from &lt;a href="http://vimeo.com/devtraining"&gt;devtraining.ee&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-1299577905384540938?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/1299577905384540938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2010/05/agile-saturday-talk-scrum-is-not-enough.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/1299577905384540938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/1299577905384540938'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2010/05/agile-saturday-talk-scrum-is-not-enough.html' title='Agile Saturday talk: Scrum is Not Enough 2.0'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-18512225954667835</id><published>2009-12-09T23:53:00.005+02:00</published><updated>2010-01-07T10:53:12.293+02:00</updated><title type='text'>OO Day 2009 presentation: Scrum Is Not Enough</title><content type='html'>Here are the slides for a presentation I gave with &lt;a href="huitale.blogspot.com/"&gt;Marko&lt;/a&gt; today at &lt;a href="http://www.cs.tut.fi/tapahtumat/olio2009/"&gt;OO Day 2009&lt;/a&gt; in Tampere, Finland. We had around 400 people in the audience - more than there were attendees in Scan-Agile 2009!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZGsXKWjfC0Q/S0Wfv2gTjEI/AAAAAAAAADQ/4Rl7UgCxY8I/s1600-h/huitale.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_ZGsXKWjfC0Q/S0Wfv2gTjEI/AAAAAAAAADQ/4Rl7UgCxY8I/s400/huitale.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Since the presentation was in Finnish so are the slides. I might write more on the subject later on.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_2685682"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/aritanninen/scrum-is-not-enough" title="Scrum Is Not Enough"&gt;Scrum Is Not Enough&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scrumisnotenough-091209155053-phpapp02&amp;stripped_title=scrum-is-not-enough" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scrumisnotenough-091209155053-phpapp02&amp;stripped_title=scrum-is-not-enough" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/aritanninen"&gt;aritanninen&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-18512225954667835?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/18512225954667835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/12/scrum-is-not-enough.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/18512225954667835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/18512225954667835'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/12/scrum-is-not-enough.html' title='OO Day 2009 presentation: Scrum Is Not Enough'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/S0Wfv2gTjEI/AAAAAAAAADQ/4Rl7UgCxY8I/s72-c/huitale.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-8739115242870019445</id><published>2009-12-09T23:29:00.002+02:00</published><updated>2009-12-09T23:39:28.832+02:00</updated><title type='text'>Paper on TDD and architecture</title><content type='html'>Couple of years ago me and Marko Taipale wrote an experience report on our experiment in using TDD (in the strict, XP definition) to build a game platform. The idea was to try and see if an architecture would emerge like XP claims (it did not).&lt;br /&gt;&lt;br /&gt;Originally the paper was intended as an experience report for the XP2008 conference but was rejected due to insufficient research data. It is fair to say that the paper is our take on the &lt;a href="http://community.ative.dk/blogs/ative/archive/2007/09/28/the-tdd-controversy-jaoo-2007.aspx"&gt;TDD controversy&lt;/a&gt; that raged at that time, and we did write it at Jim Coplien's suggestion.&lt;br /&gt;&lt;br /&gt;The paper is a couple of years old but since at least two people asked for a copy I decided to put the paper online. Perhaps you will find it interesting.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.iki.fi/ari.tanninen/xp2008_experience_report_marko_taipale_ari_tanninen.pdf"&gt;xp2008_experience_report_marko_taipale_ari_tanninen.pdf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-8739115242870019445?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/8739115242870019445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/12/paper-on-tdd-and-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/8739115242870019445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/8739115242870019445'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/12/paper-on-tdd-and-architecture.html' title='Paper on TDD and architecture'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-2718620198077209343</id><published>2009-12-02T15:36:00.002+02:00</published><updated>2009-12-02T15:37:25.821+02:00</updated><title type='text'>Testing In Agile presentation</title><content type='html'>I gave a thirty-minute talk about testing in agile projects in &lt;a href="http://confluence.agilefinland.com/display/af/Agile+Dinner+Helsinki+20091201"&gt;December's Agile Dinner in Helsinki&lt;/a&gt;. Here are the slides.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_2631902"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/aritanninen/testing-in-agile" title="Testing In Agile"&gt;Testing In Agile&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=testinginagile-091202073317-phpapp01&amp;stripped_title=testing-in-agile" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=testinginagile-091202073317-phpapp01&amp;stripped_title=testing-in-agile" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/aritanninen"&gt;aritanninen&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;It was nice to have so many participants from &lt;a href="http://testausosy.ttlry.fi/"&gt;TestausOSY&lt;/a&gt; visiting our dinner! Too bad not many stayed for the beers (read: actual conversation) afterwards.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-2718620198077209343?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/2718620198077209343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/12/testing-in-agile.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/2718620198077209343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/2718620198077209343'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/12/testing-in-agile.html' title='Testing In Agile presentation'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-2088620095648602642</id><published>2009-11-10T14:17:00.002+02:00</published><updated>2009-11-10T15:04:58.169+02:00</updated><title type='text'>Dr. Deming's Management's Five Deadly Diseases</title><content type='html'>Here is an Encyclopaedia Britannica Film from 1984 featuring Dr. Deming himself: Management's Five Deadly Diseases. Awesome.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ehMAwIHGN0Y&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ehMAwIHGN0Y&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1) Lack of constancy of purpose&lt;/b&gt;&lt;br /&gt;No planning for the future&lt;br /&gt;Lack of long-term definition and goals&lt;br /&gt;&lt;br /&gt;"People haven't decided what it is that they're in business for. They really don't know. Do they define it in terms of a service? To produce product and service that has a market of the future? Or is just to have jobs - get paid? Have jobs, live a little while, then get into something else? Lack of consciousness of purpose means: short term thinking."&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2) Emphasis on short term profits&lt;/b&gt;&lt;br /&gt;Worship the quarterly dividend&lt;br /&gt;Sacrificing long-term growth of the company&lt;br /&gt;&lt;br /&gt;"Dividends. No matter what, creative accounting, shipping stuff out, no matter what. Make it look good. Devastating to long term planning with a plan to stay in business, through improvement of quality, of product and service. They cannot do it together."&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3) Annual rating of performance&lt;/b&gt;&lt;br /&gt;Arbitrary and unjust system&lt;br /&gt;Demoralizing to employees&lt;br /&gt;Nourishes short-term performance&lt;br /&gt;Annihilates team work, encourages fear&lt;br /&gt;&lt;br /&gt;"Pay for merit! Pay for what you get! Reward for performance. Can't be done! Unfortunately it can't be done short-range. In ten years? Perhaps. In twenty years? Yes."&lt;br /&gt;&lt;br /&gt;"The effect is devastating, people must have something to show, something to count. In other words the merit system nourishes short term performance. It annihilates short term planning. It annihilates teamwork. People can't work together."&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4) Mobility of management&lt;/b&gt;&lt;br /&gt;No roots in the company&lt;br /&gt;No knowledge of the company&lt;br /&gt;No understanding of its problems&lt;br /&gt;&lt;br /&gt;"Annual rating encourages mobility of management. Somebody does not get the top rating which means a raise he looks around for another job. People move around. Not having roots in the company. Not understanding the company, just trying to bring in some abilities, learn some more, move along. Management requires knowledge in the company, roots in the company, knowledge of the problems. A production of sales, and service. Takes a long time."&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5) Use of visible figures only&lt;/b&gt;&lt;br /&gt;No use of figures that are unknown and unknowable&lt;br /&gt;Encouraged by business schools&lt;br /&gt;&lt;br /&gt;"What are the figures of the multiplying effect of a happy customer? The multiplying effects of an unhappy customer? I don't see the figures. They're very important. Those who run the company without them have no company. They're not teaching transformation, they're teaching use of visible figures, creative accounting. How to maximize the price of the company's stock. Keeping up that quarterly dividend."&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;"We're [americans] number one, for under development. Are people not used, mismanaged, misused and abused and underused by a management that worships sacred cows. Style of management that was never right, that made good fortune for this country between 1950 and 1968 because the rest of the world was devastated. You couldn't go wrong no matter what you did. Those days are over! About time for american management to wake up!"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-2088620095648602642?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/2088620095648602642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/11/dr-demings-managements-five-deadly.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/2088620095648602642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/2088620095648602642'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/11/dr-demings-managements-five-deadly.html' title='Dr. Deming&apos;s Management&apos;s Five Deadly Diseases'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-3270747094223563320</id><published>2009-10-27T08:04:00.000+02:00</published><updated>2009-10-27T08:05:05.735+02:00</updated><title type='text'>Open Space Session: Think!</title><content type='html'>&lt;b&gt;Intro &amp; thinking principles&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This blog entry is about the open space session with similar title I held at &lt;a href="http://www.scan-agile.org/openspace"&gt;Scan-Agile 2009&lt;/a&gt;. It took me a while to write since I have never actually organized my thoughts on this. My intention was not to host a session but after hearing fifteen sessions announced about tools and methods I felt compelled to since a very important ingredient was missing: thinking and the principles that guide thinking.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SuXvpP2O_JI/AAAAAAAAADE/ypS23Px6SJA/s1600-h/IMG_2796_2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 184px;" src="http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SuXvpP2O_JI/AAAAAAAAADE/ypS23Px6SJA/s400/IMG_2796_2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5396983220381088914" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;Photo courtesy my fellow conference organizer &lt;a href="http://aritikka.wordpress.com/"&gt;Ari Tikka&lt;/a&gt;.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I will start this blog like I started my open space session: let me share with you the three principles of the most productive Scrum team I have ever been in. These principles guided our everyday life from choosing technologies to improving our ways of working. Agile architecture absolutely requires them. But even though these principles have arisen from agile software development, they are valid for most aspects of life. I exercise them daily in my personal life.&lt;br /&gt;&lt;br /&gt;The thinking principles are:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;1) Do only what is needed&lt;br /&gt;2) First the problem, then the solution&lt;br /&gt;3) Challenge everything&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Principle 1: Do only what is needed&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Doing only what is needed should be a give but it rarely is. If you think about it it is almost going along with the energy minimum principle. Do the bare minimum required, no more, no less. The problem is that figuring out what needs to be done is sometimes much more difficult than just doing a whole bunch of things (and there goes the energy minimum principle flying out the window). Most people and organizations for that matter seem to be awfully busy doing stuff they have no idea why it needs doing.&lt;br /&gt;&lt;br /&gt;If you really think about it doing only what is needed is kind of a super-principle - the desired end state of things. But how to only do what is needed? My two following principles help achieving that.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Principle 2: First the problem, then the solution&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The principle first the problem makes sure all newly created things serve a purpose and exist for a reason. It brings focus and clarity of purpose to problem solving, and is essential for working effectively. Having a clear problem statement prevents solutions from piling up and causing you to miss the forest for the trees in the long run.&lt;br /&gt;&lt;br /&gt;Here's a helpful sentence for implementing this principle: "Yes very interesting, but what problem does that solve?". I drive my peers nuts with that sentence.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Principle 3: Challenge everything&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Please have a look at an &lt;a href="http://stopandfix.blogspot.com/2009/03/challenge-everything.html"&gt;earlier blog&lt;/a&gt; I wrote on the very subject.&lt;br /&gt;&lt;br /&gt;Challenging everything is really easy, just ask "Why?" enough. About five times should do it, as pointed out in the open space.&lt;br /&gt;&lt;br /&gt;Another open space observation from Jukka Laurila: challenging everything and asking why a lot is the key to rational improvement - as opposed to religion.&lt;br /&gt;&lt;br /&gt;By the way asking "why?" drives people nuts, too.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Relevance to agile&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Not only do these principles align nicely with agile and lean, I daresay they are necessary for both. What else is lean about except pull, and only delivering when there is a need? Where do you think KISS comes from, and YAGNI? Why, from doing only what is needed and understanding the solution before applying a problem. It is all about minimalism.&lt;br /&gt;&lt;br /&gt;Now on to agile adoption. I have heard of too many teams and companies having problems with adopting agile. Usually because they haven't thought about why they think they need agile hard enough. Introducing an agile practice or a concept is much more easier once you have a problem the practice solves. Instead of implementing dogma blindly, think, find concrete problems that agile can help solve and adopting agile becomes so much more easier.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Extreme real-life example&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;My intention was to host a completely non-technical open space session but alas - I had to bring in an example from my old life as software architect. Unfortunately that example tipped the entire discussion into architecture and the difficult job of software architect and other techy topics and I think over half of my audience vanished. Mea culpa.&lt;br /&gt;&lt;br /&gt;In any case, I have written about my experience in my &lt;a href="http://stopandfix.blogspot.com/2009/03/challenge-everything.html"&gt;earlier blog&lt;/a&gt; about challenging everything. I spent two months getting rid of a single extra parameter in the integration interface to a system. Suffice to say, had anyone in my old organization been careful to first define the problem before coming up with a solution - or defining the need for all the functionality behind that extra parameter - man-months would have been saved.&lt;br /&gt;&lt;br /&gt;Oh yeah, and the architecture of four systems would have been simplified. As a function of features complexity increases exponentially, remember?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Thought experiment: broken legs&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Sometimes you have to look in deep to find purpose for work, and challenge quite a few surface-level goals by asking why a lot. A thought experiment I sometimes torment my friends with goes like this:&lt;br /&gt;&lt;br /&gt;You break a leg and go to the doctor's to get it fixed. The doctor puts a cast on the leg. Why are casts put on broken legs? What problem do they solve?&lt;br /&gt;&lt;br /&gt;"Because broken legs are supposed to be in casts!"&lt;br /&gt;&lt;br /&gt;Yes, but why? Why are casts needed?&lt;br /&gt;&lt;br /&gt;"Because broken legs are supposed to be fixed!"&lt;br /&gt;&lt;br /&gt;Why do broken legs have to be fixed? What do you care?&lt;br /&gt;&lt;br /&gt;"Because it hurts, stupid! And I can't walk with a broken leg!"&lt;br /&gt;&lt;br /&gt;Bingo! The problem solved by casts is immobilization and pain making your life miserable.&lt;br /&gt;&lt;br /&gt;By the way my open space audience aced this experiment and got the correct answer in two tries. Sometimes I've squeezed people for twenty minutes before getting them to think deep and get the right answer. Good job!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Koskela Principle&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is a bit redundant but since I brought it up in the open space it is only fair I share it here. I coined the term The Koskela Principle years ago to describe the attitude of Second Lieutenant Koskela, the Finnish hero from &lt;a href="http://en.wikipedia.org/wiki/The_Unknown_Soldier_(novel)"&gt;The Unknown Soldier&lt;/a&gt;. My apologies to my foreign readers but I cannot translate the following without losing all connotations to Finnish culture or spending a day describing them.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The Koskela Principle: "Asialliset hommat hoidetaan, muuten ollaan kuin Ellun kanat."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;That about says it all.&lt;br /&gt;&lt;br /&gt;By the way, Lt. Koskela understands Lean.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Do only what is needed - it's almost like pull.&lt;br /&gt;First the problem, then the solution - to avoid waste.&lt;br /&gt;Challenge everything - to remove existing waste.&lt;br /&gt;&lt;br /&gt;If you attended my open space session, it would be nice to hear from you! I did promise a few attendees to blog about my session and it would be cool to know if this blog reached you or not. I welcome everyone's thoughts, of course!&lt;br /&gt;&lt;br /&gt;I am unsure how to end this blog since it is a bit of a rambling account of the open space, so I shall end it with a period.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-3270747094223563320?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/3270747094223563320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/10/open-space-session-think.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/3270747094223563320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/3270747094223563320'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/10/open-space-session-think.html' title='Open Space Session: Think!'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SuXvpP2O_JI/AAAAAAAAADE/ypS23Px6SJA/s72-c/IMG_2796_2.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-4748351704056704344</id><published>2009-10-14T11:40:00.000+03:00</published><updated>2009-10-14T11:40:25.768+03:00</updated><title type='text'>Leadership and self-organization</title><content type='html'>"The only truly self-organizing team I know of was Apollo 13 after the pop."&lt;br /&gt;&lt;br /&gt;(Thanks for that one, Mom!)&lt;br /&gt;&lt;br /&gt;Teams do not spontaneously materialize out of thin air, and just by accident happen to pick a goal that by coincidence is in line with the surrounding organization's objectives. Teams need to be formed, and they need to be given a purpose. Sometimes that is done by a memeber of the team and sometimes by an external party.&lt;br /&gt;&lt;br /&gt;I call the process of forming a team and giving it purpose  &lt;a href="http://stopandfix.blogspot.com/2009/09/essence-of-leadership.html"&gt;leadership&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Leadership is not only vital to self-organization it is usually a pre-requisite for it. Without leadership there is no team, and without a team there is no self-organization. Apollo 13 teams who are driven by a single, overwhelming imperative pushing them to self-organize are rare in the modern corporate world.&lt;br /&gt;&lt;br /&gt;Besides team-forming and goal-setting leadership can serve other purposes in teamwork. These can be guiding the team's daily work, keeping the team on the right course, removing team dysfunctions and in general all activities that help the team. Whether this kind of leadership is needed or not, and wheter it should be internal or external to theam depends entirely on circumstance. What is important that leadership can serve a purpose and is probably needed in one form or another during the life-span of a team.&lt;br /&gt;&lt;br /&gt;The idea that leadership is not necessary because teams &lt;i&gt;self-organize&lt;/i&gt; is wishful thinking at best.&lt;br /&gt;&lt;br /&gt;It will be interesting to hear what Mary Poppendieck has to say about this subject in her &lt;a href="http://www.scan-agile.org/speaker"&gt;keynote&lt;/a&gt; tomorrow at Scandinavian Agile Conference 2009.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-4748351704056704344?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/4748351704056704344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/10/leadership-and-self-organization.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/4748351704056704344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/4748351704056704344'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/10/leadership-and-self-organization.html' title='Leadership and self-organization'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-4803503249068000950</id><published>2009-09-11T23:15:00.004+03:00</published><updated>2009-10-14T09:18:55.587+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='leadership'/><category scheme='http://www.blogger.com/atom/ns#' term='essence'/><title type='text'>The essence of leadership</title><content type='html'>I have been thinking about leadership - especially the effects of it's absence - for along while know. After &lt;a href="http://twitter.com/ellnestam/statuses/3776815978"&gt;exchanging&lt;/a&gt; &lt;a href="http://twitter.com/aritanninen/statuses/3814595312"&gt;a&lt;/a&gt; &lt;a href="http://twitter.com/ellnestam/statuses/3814628996"&gt;few&lt;/a&gt; &lt;a href="http://twitter.com/aritanninen/statuses/3816140185"&gt;messages&lt;/a&gt; &lt;a href="http://twitter.com/ellnestam/statuses/3816708173"&gt;with&lt;/a&gt; &lt;a href="http://ellnestam.wordpress.com/"&gt;Ola Ellnestam&lt;/a&gt; on Twitter about it last week, I have finally decided to write down my thoughts.&lt;br /&gt;&lt;br /&gt;Leadership is a difficult concept to define. The word is overloaded, subject to interpretation and Wikipedia alone lists over ten theories to explain it:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Types of leadership and other theories: Agentic Leadership, Coaching, Communal Leadership, Max Weber's Charismatic authority, Antonio Gramsci's theory of Cultural hegemony, Ethical leadership, Islamic leadership, Ideal leadership, Leader-Member Exchange Theory (LMX), Leadership Character Model, Leadership development, Servant leadership, Toxic Leadership, Youth leadership, Collaborative leadership, Outstanding leadership theory&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Mind boggling. Surely it cannot be such a difficult concept?&lt;br /&gt;&lt;br /&gt;What makes things more interesting is the emotional and cultural load associated with leadership. For some the word conjures up images of charismatic leaders like Patton or Winston Churchill, for others the images are of micro-managers for hell, breathing down their necks constantly.&lt;br /&gt;&lt;br /&gt;The Finnish culture has a special antipathy towards the concept, causing people to grumble when you even mention leadership in a corporate context. For that I blame Lieutenant Lammio, the pompous, by-the-book spit and polish caricature of a career officer from the Finnish national epoch &lt;a href="http://en.wikipedia.org/wiki/The_Unknown_Soldier_%28novel%29"&gt;The Unknown Soldier&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I am not really interested in getting entangled in all that, rather I want to dig in to the problem that leadership solves - the reason for its existence. My interest? I believe lack of leadership is the greatest problem in the industry, and the root cause of most failures companies have. (Especially so in agile methods with their emphasis on self-organization, but I'll get to that later.)&lt;br /&gt;&lt;br /&gt;Note that I only talk about leadership and will consciously avoid entering the "management vs. leadership" territory. Nor do I want to speculate whose primary job it is to lead in a modern organization. I merely want to point out that leadership is absolutely necessary, much neglected, and much simpler than you think. So without further ado...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The purpose of leadership is to get a bunch of people to accomplish something together.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;The essence of leadership consists of three parts:&lt;br /&gt;&lt;br /&gt;1) Organizing doers&lt;br /&gt;2) Deciding objective(s), communicating to doers&lt;br /&gt;3) Helping doers succeed in achieving objective&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Miss one of the previous, and all the theories on motivation, fancy pep-talks by management, team building events, company parties by HR and the rest of the fluffy stuff associated with "leadership" become completely irrelevant. No amount of motivation will work on a group that has lost it's purpose of existence!&lt;br /&gt;&lt;br /&gt;My list works at any level, by the way. Whether leading an individual, a team, department or a division. If the goal is to get something done with a bunch of individuals, all three things need to happen. The bunch must be formed, an objective chosen and - usually - the bunch need to be supported on their pursuit of the objective. Miss one of the three and likely nothing will ever get done. Simple?&lt;br /&gt;&lt;br /&gt;Why is it, then, that so many organizations spend energy on schemes to motivate their employees while one or more of the three parts is missing? I don't know, but my bet is because they have lost the reason for their existence, and are trying to keep themselves busy earning money without no greater purpose. It is very difficult to set goals locally for a group if there is no overall strategy nor greater goals to serve. &lt;br /&gt;&lt;br /&gt;Here is another point I want to drive home:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;If a team, group or any organizational unit has lost its goal or the reason for its existence, it is not being lead. Simple as that.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Did I mention that leadership is vital for happiness and contentment? I will get to that later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-4803503249068000950?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/4803503249068000950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/09/essence-of-leadership.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/4803503249068000950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/4803503249068000950'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/09/essence-of-leadership.html' title='The essence of leadership'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-2545327592548480413</id><published>2009-08-24T20:19:00.009+03:00</published><updated>2009-08-24T22:31:06.814+03:00</updated><title type='text'>Blog reboot</title><content type='html'>The last few months I have been busy either enjoying the sunshine or thinking about my goals in life, and trying to decide where to take my career. I haven't had time to focus on writing my blog and time has come to remedy that.&lt;br /&gt;&lt;br /&gt;This blog initially had two purposes. It was a notebook for things I found interesting and a way to make me a smartass who supposedly knows something about agile.&lt;br /&gt;&lt;br /&gt;The problem in writing good blog entries is the time required for making a balanced argument. If you don't take that time, you end up writing flamebait or simply repeating what others have said. Where's the fun in that?&lt;br /&gt;&lt;br /&gt;So what's next? I will start organizing my thoughts and start writing about the things that I really find interesting, the stuff that keeps me motivated and awake at nights. Some of those things include agile, lean, software architecture, leadership, and what makes people happy.&lt;br /&gt;&lt;br /&gt;I need a new name for this blog, though, since it won't really be about agile anymore. Suggestions?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-2545327592548480413?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/2545327592548480413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/08/blog-reboot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/2545327592548480413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/2545327592548480413'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/08/blog-reboot.html' title='Blog reboot'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-1357106126438514153</id><published>2009-06-08T13:49:00.006+03:00</published><updated>2009-06-08T15:10:16.264+03:00</updated><title type='text'>Specialization and generalization</title><content type='html'>This blog was inspired by Vasco Duarte's blog &lt;a href="http://softwaredevelopmenttoday.blogspot.com/2009/06/why-specialization-in-software.html"&gt;Why specialization in Software development is bad for business&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I maintain that specialization is crucial for software development, and that overgeneralization can be just as harmful as overspecialization. The following figure will illustrate my point.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZGsXKWjfC0Q/SiztPEox_JI/AAAAAAAAABY/pwy8lvZHIbg/s1600-h/specialization.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;" src="http://4.bp.blogspot.com/_ZGsXKWjfC0Q/SiztPEox_JI/AAAAAAAAABY/pwy8lvZHIbg/s400/specialization.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5344907700980546706" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;At the top of the figure is a team of three with each having a specialty skill. Each team member happily sits in their own comfort zone and there is very little understanding of adjacent specialities. Since finishing an item of work needs all three specializations there will be handoffs and theory of constraints applies. Even if the team is working on more than one item time is wasted on waiting for bottleneck resources and so on. The good news is that since there is a lot of expertise in the team the finished product will reflect that expertise (if it ever gets finished).&lt;br /&gt;&lt;br /&gt;Now let's look at the other extreme at the bottom of the figure. A team with nothing but generalists will work most efficiently since everyone is able to do everyone else's job. Very little time is wasted since there are no handoffs and everyone is able to support each other. The caveat is that since everyone is a generalist the team lacks mastery in any field, and thefore can build mediocre products at best. Jack of all trades, master of none applies.&lt;br /&gt;&lt;br /&gt;In summary pure specialists produce excellent products late and pure generalists sub-standard products on-time.&lt;br /&gt;&lt;br /&gt;How about the middle road then, the "generalizing specialists"? The guys who are specialists in their field, but know enough of their surroundings to be able to work effectively with other specialists. Perhaps they have the social and teamworking skills to also pick up new skills and broaden their specialty. Such a team should be able to work efficiently and still utilize the expertise of individuals to build good products.&lt;br /&gt;&lt;br /&gt;A mixture of specialization and generalization is needed, though I will grant that overspecialization may be a bigger problem in the industry.&lt;br /&gt;&lt;br /&gt;By the way, how does generalization work in a truly cross-functional team that includes other disciplines besides software development? Is it feasible to train graphic designers software design, and vice-versa? What about marketing and sales? In the long run it probably is beneficial to send all developers on a marketing crash-course but in a project environment I wonder if it is feasible?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-1357106126438514153?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/1357106126438514153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/06/specialization-and-generalization.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/1357106126438514153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/1357106126438514153'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/06/specialization-and-generalization.html' title='Specialization and generalization'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZGsXKWjfC0Q/SiztPEox_JI/AAAAAAAAABY/pwy8lvZHIbg/s72-c/specialization.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-6695596721633245029</id><published>2009-05-28T11:57:00.003+03:00</published><updated>2009-05-28T12:06:30.175+03:00</updated><title type='text'>Theory and Practice</title><content type='html'>&lt;i&gt;Experience by itself teaches nothing... Without theory, experience has no meaning. Without theory, one has no questions to ask. Hence, without theory, there is no learning.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;- W. Edwards Deming: The New Economics for Industry, Government, Education&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Theory by itself teaches nothing. Application by itself teaches nothing. Learning is the result of dynamic interplay between the two.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;- Peter Scholtes: The Leader’s Handbook: A Guide To Inspiring Your People and Managing the Daily Workflow&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-6695596721633245029?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/6695596721633245029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/05/theory-and-practice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/6695596721633245029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/6695596721633245029'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/05/theory-and-practice.html' title='Theory and Practice'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-9085308563361391352</id><published>2009-04-06T16:39:00.001+03:00</published><updated>2009-04-06T16:39:19.668+03:00</updated><title type='text'>The importance of failure</title><content type='html'>&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/OiaPNlR5A4I&amp;hl=en&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/OiaPNlR5A4I&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=OiaPNlR5A4I"&gt;http://www.youtube.com/watch?v=OiaPNlR5A4I&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-9085308563361391352?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/9085308563361391352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/04/importance-of-failure.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/9085308563361391352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/9085308563361391352'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/04/importance-of-failure.html' title='The importance of failure'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-3482243140961592956</id><published>2009-04-06T12:32:00.007+03:00</published><updated>2009-04-08T10:37:11.787+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>All about testing</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Introduction&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Here is a matrix from &lt;a href="http://www.exampler.com/blog/"&gt;Brian Marick&lt;/a&gt; enhanced by &lt;a href="http://www.poppendieck.com/"&gt;Mary Poppendieck&lt;/a&gt; that has everything about testing in an agile context. It is simple and clarifies the intent of different kinds of tests which I have found valuable when communicating with QA people.&lt;br /&gt;&lt;br /&gt;I have used the matrix for a couple of years and decided to blog about it since I like it so much. &lt;a href="http://huitale.blogspot.com/2008/09/everything-about-testing-does-your.html"&gt;Others&lt;/a&gt; have blogged about this too, but I try to dig in a bit deeper.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZGsXKWjfC0Q/SdxUCmn3kDI/AAAAAAAAABI/oro52zYdkjw/s1600-h/all_about_testing.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 376px;" src="http://4.bp.blogspot.com/_ZGsXKWjfC0Q/SdxUCmn3kDI/AAAAAAAAABI/oro52zYdkjw/s400/all_about_testing.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322221263349321778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The matrix has two axis. The first describes the goal of tests, whether it is to support programming or critique the end result like traditional QA. Some QA people find the idea of tests whose primary purpose is not testing but something else a bit odd, but that is a key point. Certain kinds of tests exist to allow a development team to go faster, not so much to find bugs.&lt;br /&gt;&lt;br /&gt;The second axis describes the level and vocabulary of the tests. Business facing tests are understandable to business stakeholders and end users and operate at their abstraction level (think black box testing). Technology facing tests on the other hand are at a lower abstraction level and use technical jargon. They test either a small part of the system or some property of the system like performance.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Unit tests&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Unit_tests"&gt;Unit tests&lt;/a&gt; test the smallest possible units of code. In an (semi) object oriented language like Java that means individual functions/methods or classes. Some tests may involve a couple of classes, but those are the rare exception. &lt;br /&gt;&lt;br /&gt;Actually my definition is a bit of a simplification. Unit tests test individual responsibilities of code and not the code itself. This is an important distinction as responsibilities are an abstraction level higher than code, but I digress.&lt;br /&gt; &lt;br /&gt;Note that due to &lt;a href="http://martinfowler.com/bliki/SemanticDiffusion.html"&gt;semantic diffusion&lt;/a&gt; unit testing can mean a variety of things. I know at least two organiations that use the for any kind of testing done by the development team themselves ("Has the database designer unit tested his database schema?"). Let's stick with the original meanings of terms, shall we? A unit test tests a unit of &lt;span style="text-decoration:line-through;"&gt;code&lt;/span&gt; responsibility, period.&lt;br /&gt;&lt;br /&gt;The purpose of unit tests is to drive the design of the code through test-first development and refactoring. They act as regression test harness that allows developers to change the codebase with impunity. A secondary purpose is to document the developer's intent about what his code should do and how it should be used. Good unit tests can almost be used as API usage examples.&lt;br /&gt;&lt;br /&gt;Unit tests are always automated and executed in batches (often called test suites). They should run quickly enough so that developers can run them every couple of minutes. Several frameworks exist for unit testing, most based on Kent Beck's SUnit framework. Ward's Wiki has a &lt;a href="http://c2.com/cgi/wiki?TestingFramework"&gt;comprehensive&lt;/a&gt; list of xUnit frameworks.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Acceptance tests&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Acceptance_test"&gt;Acceptance tests&lt;/a&gt; are functional system level black box regression tests. Traditionally the bread and butter of QA and testing departments, though agile suggests that acceptance tests shold be automated to free up testers from slavery to do more useful things like exploratory testing. Whether acceptance tests are written by end users like XP advocates or by someone else I don't really care.&lt;br /&gt;&lt;br /&gt;The purpose of acceptance tests is to verify that the fully integrated, complete, up-and-running system works as expected from the end user's (man or machine) point of view. They communicate the business intent of the system, and document usage scenarios for the system. Like unit tests acceptance tests allow developers to change the system at will. And if unit tests drive the design of the code, then acceptance tests drive the design of the entire system.&lt;br /&gt;&lt;br /&gt;Acceptance tests should be automated as far as possible. Several frameworks exist for testing different kinds of user interfaces from the browser-based &lt;a href="http://seleniumhq.org/"&gt;Selenium&lt;/a&gt; for Web applications to &lt;a href="http://en.wikipedia.org/wiki/Optical_character_recognition"&gt;OCR&lt;/a&gt;-based frameworks that use the mouse and keyboard like a user would. Often acceptance tests require much more work to set-up the state of the world before executing a test. Databases have to be cleaned and initialized, systems started up, and so on and so forth. Custom code is almost always needed even with fancy tools. It is not uncommon to see acceptance tests executed over an xUnit testing framework, but they are acceptance tests regardless of the tool used.&lt;br /&gt;&lt;br /&gt;When it comes to functional testing acceptance tests are The Truth. They tell you if your system works as intended, your unit tests do not. If acceptance tests could be executed in seconds instead of minutes or hours, I wounder if we would bother with unit tests? Some even claim that &lt;a href="http://huitale.blogspot.com/2009/03/unit-testing-is-overrated.html"&gt;unit testing is overrated&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Usability and exploratory tests&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Usability_testing"&gt;Usability testing&lt;/a&gt; is evaluating the usability of a system by inspecting users in the act of using the system. Usually done with a study where users carry out tasks under observation. Measured things can be the time to perform a task, number of errors, and such.&lt;br /&gt;&lt;br /&gt;Usability testing is an art-form on its own, and needless to say impossible to automate. I will not go deep into it since it is not my specialty and since there is nothing special about usability testing in agile software development, except that it cannot be done test-first. :)&lt;br /&gt;&lt;br /&gt;While lots of fancy things have been written about &lt;a href="http://en.wikipedia.org/wiki/Exploratory_testing"&gt;exploratory testing&lt;/a&gt; it basically is a bunch of ruthless, evil-minded testers running amok trying to intentionally break your system. It requires creativity and insight and, surprise surprise, cannot be automated.  This is what testers should be doing instead of brainlessly executing manual test cases.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Property testing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Property testing investigates the emergent properties of a system. These can include performance, scalability, security or other SLAs. The goals of property testing can vary from ensuring that the system can cope with peak loads to ensuring that it cannot be hacked in certain ways.&lt;br /&gt;&lt;br /&gt;Most property tests require tools of some sort to create load, set up the system and so on. Of all the kinds of testing property testing probably requires the most expertise and knowledge of the system being tested. Tools must always be accompanied by a thinking brain. Tests can be automated to an extent, but in performance testing for example analysing results and troubleshooting problems often takes the most time and those cannot be fully automated.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;More information&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.exampler.com/old-blog/2003/08/21/#agile-testing-project-1"&gt;Brian Marick's original blog entry&lt;/a&gt;, read the follow-ups too&lt;br /&gt;&lt;a href="http://video.google.com/videoplay?docid=-5105910452864283694&amp;ei=daPVSabYBYPg2gLUyITcCA"&gt;Mary Poppendick: Competing On The Basis Of Speed&lt;/a&gt;, the testing segment starts at 18 minutes in the video&lt;br /&gt;&lt;a href=""&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-3482243140961592956?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/3482243140961592956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/04/all-about-testing.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/3482243140961592956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/3482243140961592956'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/04/all-about-testing.html' title='All about testing'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZGsXKWjfC0Q/SdxUCmn3kDI/AAAAAAAAABI/oro52zYdkjw/s72-c/all_about_testing.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-4970710024155287673</id><published>2009-03-31T12:53:00.003+03:00</published><updated>2009-03-31T12:58:33.260+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>Remarkable error message</title><content type='html'>Youtube search crashed for me two minutes ago.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;500 Internal Server Error&lt;br /&gt;&lt;br /&gt;Sorry, something went wrong.&lt;br /&gt;&lt;br /&gt;A team of highly trained monkeys has been dispatched to deal with this situation.&lt;br /&gt;Also, please include the following information in your error report:&lt;br /&gt;&lt;br /&gt;h3Uu0TiSf93ZIfuwp-CZYrMc-0pjnkweTODRkB21PG_E7kj0dypM_0LBebqg&lt;br /&gt;5UWTJZ5oMaZaHimqIuZRjbe27wVZhjKQ3iNeCoFS3pye8FB3fUMj4rnYoekV&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Who said software has to be boring?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-4970710024155287673?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/4970710024155287673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/remarkable-error-message.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/4970710024155287673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/4970710024155287673'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/remarkable-error-message.html' title='Remarkable error message'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-6796908628154488966</id><published>2009-03-30T13:53:00.003+03:00</published><updated>2009-03-30T14:01:04.324+03:00</updated><title type='text'>James Shore on Mediocrity</title><content type='html'>&lt;a href="http://jamesshore.com/Blog/Stumbling-Through-Mediocrity.html"&gt;James Shore: Stumbling on Mediocrity&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Brilliant. Makes me want to weep.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-6796908628154488966?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/6796908628154488966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/james-shore-on-mediocrity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/6796908628154488966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/6796908628154488966'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/james-shore-on-mediocrity.html' title='James Shore on Mediocrity'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-8747863897358992006</id><published>2009-03-30T12:27:00.002+03:00</published><updated>2009-03-30T12:31:22.254+03:00</updated><title type='text'>Agile certification</title><content type='html'>&lt;a href="http://www.agilecertificationnow.com/"&gt;Fastest Agile Certification On The Web!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Be sure to press the pink button.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-8747863897358992006?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/8747863897358992006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/agile-certification.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/8747863897358992006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/8747863897358992006'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/agile-certification.html' title='Agile certification'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-2302976530991939136</id><published>2009-03-30T10:37:00.007+03:00</published><updated>2009-03-31T12:27:27.663+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Scrum Basics</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vmGMpME_phg&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/vmGMpME_phg&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=OWsHuMNbQRk"&gt;http://www.youtube.com/watch?v=OWsHuMNbQRk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You might see a familiar face or two in the movie. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-2302976530991939136?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/2302976530991939136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/scrum-basics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/2302976530991939136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/2302976530991939136'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/scrum-basics.html' title='Scrum Basics'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-527821182758702826</id><published>2009-03-27T15:00:00.009+02:00</published><updated>2009-03-30T12:24:47.552+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interactions'/><title type='text'>Shu Ha Ri</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Shuhari"&gt;Shu Ha Ri&lt;/a&gt; is a Japanese martial arts concept that describes the three levels of learning.&lt;br /&gt;&lt;br /&gt;I have always liked the concept since it provides a simple model that can help with communicating with people. The idea is to be aware of the level of your audience and  match your message to their level. For example if you are an expert trying to explain a beginner how to do agile software development quoting principles only frustrates him; he needs practical advice to practical problems - not spiritual guidance.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Shu&lt;/span&gt;: Imitation, learning rules and individual techniques, tradition&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ha&lt;/span&gt;: Understanding, learning exceptions to rules, adapting techniques, breaking from tradition&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ri&lt;/span&gt;: Mastery, transcending the rules; flow, intuitive use of techniques&lt;br /&gt;&lt;br /&gt;The Shu level is all about following the master and learning the rules. You don't really understand the big picture yet so you follow the book as best as you can.&lt;br /&gt;&lt;br /&gt;At Ha level you have gained deep understanding. You understand why certain techniques work and can choose the best one for the situation. You also understand the limitations of techniques and when their use is not appropriate and when not.&lt;br /&gt;&lt;br /&gt;By the time you reach Ri level you apply techniques naturally without thinking. You have transcended the rules.&lt;br /&gt;&lt;br /&gt;Last year in &lt;a href="http://www.cs.tut.fi/tapahtumat/olio2008/"&gt;Nääsvillen Oliopäivät&lt;/a&gt; Alistair Cockburn began his keynote by describing Shu Ha Ri. After his talk a member of the audience asked a longish question about a problem in applying agile in his organization. Having explained Shu Ha Ri just moments before, Alistair begun his reply:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;You expect a Shu level answer to a Ri level question.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Further reading:&lt;br /&gt;&lt;a href="http://alistair.cockburn.us/Shu+Ha+Ri"&gt;Shu Ha Ri&lt;/a&gt; by Alistair Cockburn&lt;br /&gt;&lt;a href="http://c2.com/cgi/wiki?ThreeLevelsOfAudience"&gt;Three Levels of Audience&lt;/a&gt; in Ward's Wiki&lt;br /&gt;&lt;a href="http://agile-commentary.blogspot.com/2008/10/what-is-shu-ha-ri.html"&gt;What is Shu Ha Ri?&lt;/a&gt; an excellent blog entry by Kevin E. Schlabach&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-527821182758702826?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/527821182758702826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/shu-ha-ri.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/527821182758702826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/527821182758702826'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/shu-ha-ri.html' title='Shu Ha Ri'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-743045961787151908</id><published>2009-03-21T21:57:00.014+02:00</published><updated>2009-03-24T18:34:12.229+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Ken Schwaber on Google Tech Talk</title><content type='html'>&lt;a href="http://video.google.com/videoplay?docid=-7230144396191025011&amp;ei=MEbFSaGHDpna2wKGw_D8AQ&amp;q=scrum&amp;emb=1"&gt;Here&lt;/a&gt; is an excellent video where Ken Schwaber (co-creator of Scrum) explains what Scrum is and where it came from. He also explains how everyone can create their own design dead software and how to avoid it.&lt;br /&gt;&lt;br /&gt;I have summarized and paraphrased some of the key points.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Scrum is not a methodology - you are on your own&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Scrum isn't a methodology and as such does not have answers on how to do things. It frees us from the belief that someone else can tell us what to do in every circumstance and that it'll work. Scrum's assumption is that you are intelligent and that you will use that intelligence and your experience to come up with the best solution for whatever circumstance you are in right then.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Most Scrum implementations fail because of denial&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Scrum gets all of the news visible, whether it's good or bad. It assumes that intelligent people will want the news so they can do what is best for the entire organization. Because of this only about 30-35% of organizations manage to implement Scrum successfully. Most organizations don't want to be faced with something they don't want to see.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Core problem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Very common problem in all organizations is Core or infrastructure software that all the company's software depends on. Usually such software is fragile, does not have a test harness and there are only few developers in the company who know it and are willing to work on it. The Core software then effectively constrains all development in the company. If you don't have enough money to rebuild your Core and competition is breathing down your neck, you should shift into another market or sell your company.&lt;br /&gt;&lt;br /&gt;You don't have to buy your Core, you can make your own. Squeezing a bit more "must have" features into your releases works in short term, but leads into cutting quality. Soon your team's capability to deliver starts dropping because they are working on a worse codebase. That leads into more squeezing, and after five years you have your own design dead product that will kill your business.&lt;br /&gt;&lt;br /&gt;There are two main problems here. First, when developers are told to do more they cut quality without telling a soul. Second, product management beliefs in magic that to do more all they have to do is tell developers.&lt;br /&gt;&lt;br /&gt;The solution is incremental and iterative development, and managing releases by scope rather than by time. In Scrum also every team has a Scrum Master (the prick), whose job is to make sure the team does not cut quality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-743045961787151908?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/743045961787151908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/ken-schwaber-on-google-tech-talk.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/743045961787151908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/743045961787151908'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/ken-schwaber-on-google-tech-talk.html' title='Ken Schwaber on Google Tech Talk'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-9196462821285942099</id><published>2009-03-20T10:10:00.001+02:00</published><updated>2009-03-20T10:11:56.930+02:00</updated><title type='text'>The wrong question</title><content type='html'>Ask not &lt;span style="font-style:italic;"&gt;what agile can do to my organization?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Rather ask &lt;span style="font-style:italic;"&gt;how can I change my organization to becoming more agile?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On a similar vein, an excellent blog from Ron Jeffries: &lt;a href="http://xprogramming.com/blog/2009/01/30/context-my-foot/"&gt;Context my Foot&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-9196462821285942099?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/9196462821285942099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/wrong-question.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/9196462821285942099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/9196462821285942099'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/wrong-question.html' title='The wrong question'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-376206282652392108</id><published>2009-03-20T08:52:00.006+02:00</published><updated>2009-03-20T11:11:08.910+02:00</updated><title type='text'>Levels of consulting</title><content type='html'>Here is a quick categorization of consulting work that I came up with some friends some time ago.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Level 1: Introduction&lt;/span&gt;&lt;br /&gt;Basic concepts, sales pitches, two-day training course, lectures and exercises&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Level 2: Consulting&lt;/span&gt;&lt;br /&gt;Discussing or planning how a customer should use the material in his/her context&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Level 3: Coaching&lt;/span&gt;&lt;br /&gt;Implementing changes with the daily or weekly help of a coach, may include an intensive training period&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Level 4: Follow-up&lt;/span&gt;&lt;br /&gt;Coach periodically returns to customer after a couple of months to see how things are going and adjust as necessary&lt;br /&gt;&lt;br /&gt;What has this to do with agile? When "going agile" many companies only buy level 1, then go and run their heads to the wall. I have heard both Jeff Sutherland and Jim Coplien state that "70% of Scrum implementations fail". Wonder why.&lt;br /&gt;&lt;br /&gt;By the way, Certified ScrumMaster training is level 1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-376206282652392108?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/376206282652392108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/levels-of-consulting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/376206282652392108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/376206282652392108'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/levels-of-consulting.html' title='Levels of consulting'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-4514336308858156465</id><published>2009-03-19T23:05:00.003+02:00</published><updated>2009-03-20T11:01:44.937+02:00</updated><title type='text'>Turku Agile Day 2009</title><content type='html'>Just came back from the &lt;a href="http://www.turkuagileday.fi/"&gt;Turku Agile Day 2009&lt;/a&gt;. Good to see the agile movement on the rise in Turku. Thanks for the organizers, keep up the good work, guys! Next time I am staying for the party.&lt;br /&gt;&lt;br /&gt;A few tidbits stuck in my mind:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;"The human execution of a process cannot be copied." said Pekka Abrahamsson when he was discussing the difficulty of duplicating successful practices in projects.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Agilists often add the fourth dimension of quality to the holy trinity of software projects: features, time, and resources. Ola Ellnestam added a fifth, forming the iron pentagon of software development: features, time, resources, quality, customer satisfaction.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ola also suggested viewing software development as a system from which customers pull features out. Contrast this with the traditional way of pushing features into the system as requirements, which then pushes them out to the user. Pull instead of push is the starting point for Lean and all kinds of good things come from it, but I have not previously thought of pull as a way of making sure you deliver only what is needed. How silly is that?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Something I enjoyed was Petri Taavila's frank, down to earth presentation about Nokia Siemens Network's agile transformation with wrinkles and everything. Wonderful to have an honest presentation about the good, the bad and the ugly of turning agile. Thanks, Petri!&lt;/li&gt;&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/532202694626269476-4514336308858156465?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/4514336308858156465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/turku-agile-day-2009.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/4514336308858156465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/4514336308858156465'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/turku-agile-day-2009.html' title='Turku Agile Day 2009'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-8966974474447243286</id><published>2009-03-11T20:35:00.016+02:00</published><updated>2009-03-12T09:06:55.229+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>The key to test automation</title><content type='html'>The key to test automation is called &lt;span style="font-style:italic;"&gt;software engineering&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I have met many testing teams and Quality Assurance people searching for the silver bullet that would speed their team or department on its way to test automation and all it promises. Usually these people have no software development background, and while their teams may have some scripting knowledge they often lack proper software development skills. As such, they are heavily dependent on tools, preferably those that come with a GUI or that can be extensively configured. If push comes to shove they can maybe manage with a scripting language, but that's about it.&lt;br /&gt;&lt;br /&gt;Good tools are essential to software development, and I daresay even more so in agile software development. What is the problem with depending on tools, then? &lt;br /&gt;&lt;br /&gt;First of all, many commercial testing tools are expensive and complex. Since they cater the needs of a wide audience they have many features, and often come with elaborate XML configuration languages or custom scripting languages. Complexity steepens the learning curve and slows down troubleshooting. While troubleshooting is may not be much of a problem for functional testing, it is a major issue in performance testing where it can take more time than executing the actual tests.&lt;br /&gt;&lt;br /&gt;Once you have chosen and bought an expensive tool you are pretty much stuck with it. In choosing a tool you have to anticipate all your future testing needs which increases the likelihood of you choosing the most complex tool with the most features. The vicious circle is complete.&lt;br /&gt;&lt;br /&gt;Another issue is that all tools have their limitations. No enterprise testing solution is as flexible or powerful as a good programming library or a language and you cannot iteratively and incrementally develop and improve a commercial tool. You must choose one in a big bang and then stick with it. It is impossible to start with something simple that you can evolve with time as your needs become greater.&lt;br /&gt;&lt;br /&gt;There is an entire industry building testing &lt;span style="font-style:italic;"&gt;solutions&lt;/span&gt; designed around the idea that programming skills are not needed for test automation. Hogwash! Automation of any kind implies a certain level of design skill that cannot be substituted with a tool! The meaning of "test automation" is "automated test case execution and reporting", not "automated test case design".&lt;br /&gt;&lt;br /&gt;If you have recently started doing agile software development and (still) have a dedicated testing team that is confused about test automation my advice is this: send your testers to a programming course, and introduce a software developer or two to the team. The developers can then devise any tools your team needs, and help your testers with programming.&lt;br /&gt;&lt;br /&gt;Adding developers to a testing team also brings testers and developers closer which you should be doing in the first place if you are trying to become agile.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-8966974474447243286?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/8966974474447243286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/key-to-test-automation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/8966974474447243286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/8966974474447243286'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/key-to-test-automation.html' title='The key to test automation'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-2120019738410192288</id><published>2009-03-11T10:01:00.006+02:00</published><updated>2009-03-24T18:31:25.703+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>Explaining things without a whiteboard</title><content type='html'>An ex-colleague of mine Samuli sent me a link to this Dilbert. Thanks!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZGsXKWjfC0Q/SbdzVHUlZ2I/AAAAAAAAAA4/-7EKOGYi1K0/s1600-h/20090311.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 99px;" src="http://3.bp.blogspot.com/_ZGsXKWjfC0Q/SbdzVHUlZ2I/AAAAAAAAAA4/-7EKOGYi1K0/s320/20090311.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5311841092086622050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That's me!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-2120019738410192288?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/2120019738410192288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/explaining-things-without-whiteboard.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/2120019738410192288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/2120019738410192288'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/explaining-things-without-whiteboard.html' title='Explaining things without a whiteboard'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZGsXKWjfC0Q/SbdzVHUlZ2I/AAAAAAAAAA4/-7EKOGYi1K0/s72-c/20090311.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-8927043024993484964</id><published>2009-03-09T18:19:00.002+02:00</published><updated>2009-03-09T18:31:43.589+02:00</updated><title type='text'>Agile software development summarized in Agile Dinner</title><content type='html'>Last month I organized the monthly &lt;a href="http://confluence.agilefinland.com/display/af/Agile+Dinners"&gt;Agile Dinner&lt;/a&gt; in Helsinki with the theme "what have you done right in your previous software projects?". I specifically asked people to forget literature and just focus on what they have directly experienced. The &lt;a href="http://confluence.agilefinland.com/display/af/Agile+Dinner+Helsinki+20090203"&gt;outcome&lt;/a&gt; could be the table of contents of any agile software development book!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Form a cross-functional team, put them in one room where they are surrounded by information radiators and whiteboards and can work in peace. Provide them direct access to business people and end users and make sure they understand the goals of the project. Maintain the big picture and provide an environment that facilitates learning and try to involve experienced developers and maybe a coach. Use metrics to measure progress. The technical environment should allow for continuous integration and automated regression testing. Consider laying down basic architecture. Be honest, deliver frequently and think a lot.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-8927043024993484964?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/8927043024993484964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/agile-software-development-summarized.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/8927043024993484964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/8927043024993484964'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/agile-software-development-summarized.html' title='Agile software development summarized in Agile Dinner'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-1636776444417593467</id><published>2009-03-06T09:38:00.005+02:00</published><updated>2009-03-06T13:11:24.422+02:00</updated><title type='text'>Challenge everything</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Challenge everything, accept nothing at face value.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Drive this philosophy into everyone in your software organization from marketing and sales to project management and individual team members and good things will follow.&lt;br /&gt;&lt;br /&gt;But why? Isn't challenging people's decisions and choices destructive? Isn't it mistrusting your colleagues, and slowing down work? Instead of getting things done, you spend time discussing the same issues over and over again when everybody has their round of challenging? Doesn't it set up kind of an environment where people constantly have to defend their ideas, and provoke confrontation?&lt;br /&gt;&lt;br /&gt;That exactly is the point! Sparring ideas, working them on the whiteboard and discussing them over coffee is cheap. Spending months implementing the wrong features or bad marketing strategy is expensive.&lt;br /&gt;&lt;br /&gt;Challenging everything is really a safety net for your organization. It prevents brainfarts from destroying your business or technology. It is also a personal safety net since it allows you to test your ideas in a safe environment. It is better to have a trusted colleague torpedo your cool idea right from the start than fail publicly six months later, is it not? And imagine the kind of confidence you can proceed with your Next Big Thing after you have had your first five sparring sessions about it.&lt;br /&gt;&lt;br /&gt;Building an environment and culture that allows ideas to be challenged may be difficult though. It requires certain maturity from the involved, they have to understand that it's people's ideas that argue, not the people. It helps to keep in mind that the word challenge is not a negative word, it is just a request for more information or a sanity check. Challenging is not a destructive or distrustful process but a process for creating mutual understanding and confidence. It is the starting point for a conversation, not a finishing one.&lt;br /&gt;&lt;br /&gt;Avoiding rumpling other people's feathers is tricky, but the actual act of challenging could not be easier. Just keep on asking "why" until things make sense to you.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;A real-life example&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here is a (pretty convoluted) example. In a certain project in the past I was re-designing a public interface of an accounting system that, among other things, processed monetary transactions. A function of that interface was to transfer money to a user's account. The function had four parameters: transaction ID, account ID, and two monetary amounts.&lt;br /&gt;&lt;br /&gt;Two moneys? Why?&lt;br /&gt;&lt;br /&gt;"Because for taxation reasons - or something like that - certain transactions cannot be deposited in a lump sum" said the architect of the accounting system. OK, fair enough, but sounds like he is not completely sure. I checked with the architect of the business system using the accounting system, who told me that the accounting team demanded the feature for taxation reasons, and that the reporting team also has a stake. So I call up the reporting people, who tell me that the feature is a pain in the ass but that it is very important for the customer and the accounting team requires it. They also mentioned that a fourth team who monitor the transactional integrity of all system has a stake. So I contact the monitor team, who are a bit confused about my question and in the end could not care less. At the same time a business person - after double-checking with the customer - confirms that the feature, in fact, is not needed.&lt;br /&gt;&lt;br /&gt;Very interesting, I thought. Everyone takes the feature of splitting lump sums for granted. After all it is an feature supported by three different systems so it &lt;span style="font-style: italic;"&gt;must&lt;/span&gt; be needed by someone! But no one knows by whom.&lt;br /&gt;&lt;br /&gt;In the end I spent two months bothering fifteen people from four teams to remove a single parameter from a function. Of course functionality considered "a pain in the ass" could now be removed from three systems which would simplify the life of four teams.&lt;br /&gt;&lt;br /&gt;Buy why was the rather expensive feature that no one needs implemented in the first place? Certainly there is fault in the software process, but would this had happened if any of the people involved had challenged the need for the feature?&lt;br /&gt;&lt;br /&gt;Morale of the story: it may take more effort to challenge the rationale of doing something than just doing it. But it probably pays off in the long term.&lt;br /&gt;&lt;br /&gt;Which brings us to...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Impact on software architecture&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Simple software is cheaper, runs faster, is easier to use, document, test, deploy, operate, maintain and is generally more pleasant than complex software. Common sense dictates that software should be as simple as possible (but not simpler). But how to make simple software?&lt;br /&gt;&lt;br /&gt;Using the latest programming paradigm? Buying the fanciest Enterprise Platform on the market? Grabbing the hottest open source framework where you don't have to write code anymore, just configure XML, use annotations, or let the built in artificial intelligence run the show?&lt;br /&gt;&lt;br /&gt;Maybe not. As a function of features complexity increases exponentially, not linearly. Therefore the key to keeping things simple (stupid), is to minimize the number of features and moving parts in your software. Disciplined processes for capturing user needs and designing software can help, but the key thing is simply to challenge the necessity of every feature and nut and bolt before adding it to your system.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;In short, challenging everything&lt;/span&gt; &lt;ul&gt;&lt;li&gt;Is a cheap way of improving ideas, and weeding out bad ones&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Builds mutual understanding and trust, and kills assumptions (the mothers of all fuck-ups)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Is a safety net that prevents your organization from doing stupid things&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Is a personal safety net that prevents you from doing stupid things&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Can be challenging :)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Is the basis for good software architecture&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The lesser primate committee thinking experiment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Start with a cage containing five apes.&lt;br /&gt;&lt;br /&gt;In the cage, hang a banana on a string and put stairs under it. Before long, an ape will go to the stairs and start to climb towards the Banana, but as soon as he touches the stairs, spray all of the apes with cold water. After a while, another ape makes an attempt with the same result-all the apes are sprayed with cold water. Turn off the cold water. If, later, another ape tries to climb the stairs, the other apes will try to prevent it even though no water sprays them.&lt;br /&gt;&lt;br /&gt;Now, remove one ape from the cage and replace it with a new one. The New ape sees the banana and wants to climb the stairs. To his horror, all of the other apes attack him. After another attempt and attack, he knows that if he tries to climb the stairs, he will be assaulted.&lt;br /&gt;&lt;br /&gt;Next, remove another of the original five apes and replace it with a new one. The newcomer goes to the stairs and is attacked. The previous Newcomer takes part in the punishment with enthusiasm.&lt;br /&gt;&lt;br /&gt;Again, replace a third original ape with a new one. The new one makes it to the stairs and is attacked as well. Two of the four apes that beat him have no idea why they were not permitted to climb the stairs, or why they are participating in the beating of the newest ape. After replacing the fourth and fifth original apes, all the apes which have been sprayed with cold water have been replaced. Nevertheless, no ape ever again approaches the stairs.&lt;br /&gt;&lt;br /&gt;Why not?&lt;br /&gt;&lt;br /&gt;"Because that's the way it's always been around here."&lt;br /&gt;&lt;br /&gt;Sound familiar?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-1636776444417593467?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/1636776444417593467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/challenge-everything.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/1636776444417593467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/1636776444417593467'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/challenge-everything.html' title='Challenge everything'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-3621446208062888698</id><published>2009-03-04T17:01:00.006+02:00</published><updated>2009-03-31T12:26:55.264+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interactions'/><title type='text'>Fundamental attribution error</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Fundamental_attribution_error"&gt;Fundamental attribution error&lt;/a&gt; is a phenomenon in social psychology that describes a tendency in us to explain the behavior of others in terms of their personal qualities rather than circumstance. We "attribute" a person's actions to his persona rather than the immediate situation or social context.&lt;br /&gt;&lt;br /&gt;I think this is quite a natural tendency. It is a bit like the energy minimum principle, we are always looking for simple explanations to complex issues. Much easier labeling others lazy or stupid rather than spending energy investigating the circumstances they are operating from.&lt;br /&gt;&lt;br /&gt;And by the way, this door swings both ways. Other people are likely to think we are incompetent or not caring rather than bothering to consider that perhaps we are overworked, or having the worst hangover of our lives.&lt;br /&gt;&lt;br /&gt;So the next time you are aggravated by your compatriots give them the benefit of the doubt. You might be missing something from the big picture that makes their (in)actions perfectly justified.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-3621446208062888698?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/3621446208062888698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/fundamental-attribution-error.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/3621446208062888698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/3621446208062888698'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/fundamental-attribution-error.html' title='Fundamental attribution error'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-2560925599163743214</id><published>2009-03-04T12:06:00.008+02:00</published><updated>2009-03-24T18:31:56.054+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>Der Führer's take on nightly builds, Scrum and REAL Agile.</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Azl4nqLn4-Y&amp;hl=en&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Azl4nqLn4-Y&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=Azl4nqLn4-Y"&gt;http://www.youtube.com/watch?v=Azl4nqLn4-Y&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Almost feel camaraderie with the man. Hilarious!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-2560925599163743214?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/2560925599163743214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/03/der-fuhrers-take-on-nightly-builds.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/2560925599163743214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/2560925599163743214'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/03/der-fuhrers-take-on-nightly-builds.html' title='Der Führer&apos;s take on nightly builds, Scrum and REAL Agile.'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-532202694626269476.post-8793698493828742212</id><published>2009-02-03T12:06:00.001+02:00</published><updated>2009-03-24T18:31:43.627+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lean'/><title type='text'>A bicycle story</title><content type='html'>&lt;span style="font-style: italic;"&gt;Here is a favorite story of mine often told by Hannu Lehessaari, the long-time CEO of one of the oldest software companies in Finland.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You are driving your bicycle in a great hurry to reach your destination. You are expected, and already late. Suddenly, your bicycle's chain breaks. What do you do?&lt;br /&gt;&lt;br /&gt;Waste no time, throw your cycle over your shoulder and start running like crazy?&lt;br /&gt;&lt;br /&gt;Or stop and fix the chain, and continue cycling?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/532202694626269476-8793698493828742212?l=stopandfix.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopandfix.blogspot.com/feeds/8793698493828742212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stopandfix.blogspot.com/2009/02/bicycle-story.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/8793698493828742212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/532202694626269476/posts/default/8793698493828742212'/><link rel='alternate' type='text/html' href='http://stopandfix.blogspot.com/2009/02/bicycle-story.html' title='A bicycle story'/><author><name>Ari Tanninen</name><uri>http://www.blogger.com/profile/12276397305104688720</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_ZGsXKWjfC0Q/SrCe4y7opEI/AAAAAAAAACA/LQAdjyPVrB8/S220/IMG_0061_2.jpg'/></author><thr:total>0</thr:total></entry></feed>
