<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lasse Koskela</title>
	<atom:link href="http://lassekoskela.com/thoughts/feed/" rel="self" type="application/rss+xml" />
	<link>http://lassekoskela.com/thoughts</link>
	<description>software product development consultant, coach, trainer, and practitioner.</description>
	<lastBuildDate>Mon, 24 Jan 2011 06:07:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>What users want</title>
		<link>http://lassekoskela.com/thoughts/29/what-users-want/</link>
		<comments>http://lassekoskela.com/thoughts/29/what-users-want/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 23:08:49 +0000</pubDate>
		<dc:creator>Lasse Koskela</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[userstories]]></category>

		<guid isPermaLink="false">http://lassekoskela.com/thoughts/?p=29</guid>
		<description><![CDATA[I just read Joel Semeniuk&#8217;s blog about personas. If you don&#8217;t feel like jumping over to Joel&#8217;s blog and would rather get the executive summary, he&#8217;s saying that personas are really useful for understanding the value and direction of a user story. I&#8217;m with Joel on the value of personas. There is something else, however, related [...]]]></description>
			<content:encoded><![CDATA[<p>I just read <a href="http://blogs.telerik.com/joelsemeniuk/posts/11-01-14/personas_help_drive_requirements_really.aspx"><span style="color: #000000;">Joel Semeniuk&#8217;s blog about personas</span></a>. If you don&#8217;t feel like jumping over to Joel&#8217;s blog and would rather get the executive summary, he&#8217;s saying that personas are really useful for understanding the value and direction of a user story. I&#8217;m with Joel on the value of personas. There is something else, however, related to users that I felt moved to write about – user stories and what users &#8220;want&#8221;.</p>
<p>Regardless of whether a team has devised personas or not, I tend to see user stories written too much from a what-the-software-does perspective. I&#8217;ll just use Joel&#8217;s off-the-cuff example for a user story, reproduced below, as an example to highlight this failure mode that so many teams suffer from:</p>
<div>
<blockquote>
<div><em><span style="text-decoration: underline;">Feature: Shovel Snow<br />
</span></em><em>As a Home Owner<br />
</em><em>I want to Shovel Snow<br />
</em><em>So that I can get out of my driveway to get to work</em></div>
</blockquote>
</div>
<div>
<div>
<p><em><span style="font-style: normal;">Fairly simple and universally understandable user story, right? (Assuming you know what snow is. Not all people do. Although even Floridans seem to get blizzards these days.)</span></em></p>
<p><em><span style="font-style: normal;">So what&#8217;s the failure mode here? Home owners don&#8217;t </span>want<span style="font-style: normal;"> to shovel snow. They want snow to be removed from their driveway. Shoveling snow is something they </span>accept as a solution<span style="font-style: normal;"> because they don&#8217;t have an alternative in mind. What we should aim to do with user stories is to provide the connection between a user&#8217;s goals – what they need – and a </span>placeholder<span style="font-style: normal;"> for how we might give them just that.</span></em></p>
<p>Who knows, maybe the home owner would rather pay for a heated driveway than pick up a snow shovel. If we write down stuff about shovels, it&#8217;s that much less likely that anyone will think of offering such a drastically different alternative such as laying pipes under the driveway. Or replacing the Cooper Mini with a 4&#215;4 SUV.</p>
<p>To illustrate what we&#8217;re talking about here, let&#8217;s see how we might rephrase Joel&#8217;s example:</p>
<div>
<blockquote>
<div><span style="text-decoration: underline;"><em>Feature: Accessible Driveway</em></span></div>
<div><em>As a Home Owner</em></div>
<div><em>I want my driveway to be cleared of snow<br />
So that I can drive in and out of my driveway to get to work</em></div>
</blockquote>
</div>
<div>
<div>In summary, resist the temptation to describe a solution in your user story. There&#8217;s no need to put our imagination into a straightjacket like that.</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://lassekoskela.com/thoughts/29/what-users-want/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Refactoring Manifesto</title>
		<link>http://lassekoskela.com/thoughts/27/refactoring-manifesto/</link>
		<comments>http://lassekoskela.com/thoughts/27/refactoring-manifesto/#comments</comments>
		<pubDate>Sat, 11 Dec 2010 05:02:37 +0000</pubDate>
		<dc:creator>Lasse Koskela</dc:creator>
				<category><![CDATA[Articles]]></category>

		<guid isPermaLink="false">http://lassekoskela.com/thoughts/?p=27</guid>
		<description><![CDATA[http://refactoringmanifesto.org &#8211; because the world needs better code.]]></description>
			<content:encoded><![CDATA[<p><a title="RefactoringManifesto.org" href="http://refactoringmanifesto.org">http://refactoringmanifesto.org</a> &#8211; because the world needs better code.</p>
]]></content:encoded>
			<wfw:commentRss>http://lassekoskela.com/thoughts/27/refactoring-manifesto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test Everything, but not Private Methods</title>
		<link>http://lassekoskela.com/thoughts/24/test-everything-but-not-private-methods/</link>
		<comments>http://lassekoskela.com/thoughts/24/test-everything-but-not-private-methods/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 16:52:52 +0000</pubDate>
		<dc:creator>Lasse Koskela</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://lassekoskela.com/thoughts/?p=24</guid>
		<description><![CDATA[Stumbling onto Ron Jeffries&#8217; blog about testing everything but not accessors I was reminded of a question I get asked surprisingly often – how can I test private methods in [programming language]? When somebody pops this question I always say, you shouldn&#8217;t test private methods. And you shouldn&#8217;t. The conversation then typically continues with a [...]]]></description>
			<content:encoded><![CDATA[<p>Stumbling onto Ron Jeffries&#8217; blog about <a href="http://xprogramming.com/articles/contradiction-test-everything-but-not-accessors/">testing everything but not accessors</a> I was reminded of a question I get asked surprisingly often – <em>how can I test private methods in [programming language]?</em> When somebody pops this question I always say, <em>you shouldn&#8217;t test private methods</em>. And you shouldn&#8217;t.</p>
<p>The conversation then typically continues with a &#8220;But&#8230;&#8221; and I end up elaborating on why I say that. This time I&#8217;ll elaborate in the Internet, which hopefully helps spread this thought.</p>
<h3>&#8220;I want to test a private method&#8221;</h3>
<p>The fundamental motivation for wanting to test private methods is fear. We fear that our code coverage report&#8217;s 100% result isn&#8217;t the whole truth (and it isn&#8217;t) and we don&#8217;t trust our unit tests – the ones that already test the private method <em>indirectly</em> – to have kept out all critters from that piece of code encapsulated behind the magic keyword <em>private</em>.</p>
<p>Why don&#8217;t we trust our tests? First of all, in most of the cases when this question is popped the code hasn&#8217;t been written test-first. Tests that are written afterward tend to suffer from confirmation bias – we write them to prove to ourselves that we are indeed the great programming geniuses who never make a mistake. Such tests can indeed be much less than a full-cover insurance.</p>
<p>The code is also to blame for our lack of trust. We rationalize our need to write direct tests for a private method by pointing out how hideously long, complex and ugly that method is. This line of thinking exhibits itself quite clearly when people respond to my strict statement with, &#8220;&#8230;but you just said that we should test &#8216;everything that could possibly  break&#8217; and this private method here looks so ugly that it could break  at any time!&#8221;</p>
<h3>&#8220;I understand. And you should not test that method if it&#8217;s private.&#8221;</h3>
<p>In this phase of the dialogue we&#8217;ve typically establish one thing:  the person asking the question really wants to test that private method,  usually for the reasons mentioned above. And that is perfectly reasonable. Yet, I persist and restate that they should not write tests for that private method. So what am I thinking? Why shouldn&#8217;t we test it directly?</p>
<p>For one, writing tests for a private method might not be technically possible in your chosen programming language without obnoxious trickery like invoking a private method through Java&#8217;s Reflection API. Such tests are also bound to break when you swoosh ahead with those lightning-fast refactorings your IDE vendor has graciously automated for you – because referring to methods and classes through literal strings makes the IDE blind to that link, effectively cutting your tests off from the reach of the Rename Method refactoring you just pulled off in Eclipse.</p>
<p>Second, private methods are details that you clearly don&#8217;t want to expose through the class&#8217;s public API. After all, if you&#8217;d be OK with making that private method public then you wouldn&#8217;t have asked the question in the first place. Package private and protected methods are a bit of a gray area in this regard. Bumping up the private method&#8217;s visibility so that the tests can invoke it but not so much as to make it part of the public API kind of solves the problem of resorting to ugly hacks – you can now invoke the method without reflection. However, the artery is still exposed and your class&#8217;s internals are leaking on the floor. Your tests are testing the object&#8217;s implementation, not its intended behavior.</p>
<h3>&#8220;So what would you do?&#8221;</h3>
<p>At this point we&#8217;ve usually established that the method in question is covered indirectly by other tests but that it&#8217;s so complex or important that you want to test it directly. So what would I do?</p>
<p>I would test it as a public method on another class.</p>
<p>The whole pain of seeing that private method, wondering whether it truly works or not, and struggling to decide whether to leave it like it is, whether to increase its visibility and test it directly, or whether to resort to the mortal sin of reflection – all of this pain is trying to tell us something. The <em>code</em> is trying to tell us something.</p>
<p>Clearly that piece of code is important and essential enough that it should get a new home and become a public method on some other class – quite possibly on a whole new class. Writing direct tests for it over there would not be an issue anymore.</p>
<p>A place for everything and everything in its place. It seems that Mr. Franklin was a programmer himself.</p>
]]></content:encoded>
			<wfw:commentRss>http://lassekoskela.com/thoughts/24/test-everything-but-not-private-methods/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Iterative UX</title>
		<link>http://lassekoskela.com/thoughts/17/iterative-ux/</link>
		<comments>http://lassekoskela.com/thoughts/17/iterative-ux/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 13:16:54 +0000</pubDate>
		<dc:creator>Lasse Koskela</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[product]]></category>
		<category><![CDATA[reaktor]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://lassekoskela.com/thoughts/?p=17</guid>
		<description><![CDATA[My personal interests have shifted through a number of phases since I found the iterative and incremental world of agile methods in the beginning of this past decade. While my intent with this article is to share some of my thoughts and experiences with merging the discipline of user interaction design into agile methods, I [...]]]></description>
			<content:encoded><![CDATA[<p>My personal interests have shifted through a number of phases since I found the iterative and incremental world of agile methods in the beginning of this past decade. While my intent with this article is to share some of my thoughts and experiences with merging the discipline of user interaction design into agile methods, I find it useful to first explain how my interests have evolved over the years to the point where I stand today.</p>
<h2>My journey from code to design</h2>
<p>At first my attention was consumed by the engineering practices that XP imposed on the kind of cowboy programming I had seen around me – and performing myself – both in the context of ad hoc and of supposedly highly disciplined methods. I forced myself to write my code test-first, I asked to pair program with others, and I checked in code in far smaller batches than before.</p>
<p>Looking back at around five years ago I can see my interests starting to move towards team work and project management. There was still plenty of improvement to make as far as engineering practices went but that work wasn’t consuming as much of my learning cycles as it had before. I routinely ran classes on test-driven development and spent a lot of time pair programming with clients, coaching them in writing better unit tests but I was increasingly more curious about the kind of insanity and waste I observed happening outside of an individual programmer’s sphere of influence.</p>
<p>Since about 2005 the majority of product development efforts I’ve been involved with have been “Scrum projects”. Considering the Scrum trifecta of a development team, a Scrum Master, and a Product Owner, I can see a slight trend of my work starting from the more technically oriented end of a development team through the more team work and facilitation-oriented domain of Scrum Master, and lately more and more towards the prioritization and product design-oriented world of the Product Owner.</p>
<h2>The constant through this change</h2>
<p>The single common thread throughout these years has been that my goal has been to help clients succeed with their product development efforts. At first I saw severe problems with code quality and discipline that I could help alleviate with certain engineering practices and processes. Later I saw dysfunction in collaboration between people in different roles and strived to improve that collaboration with facilitation and coaching, applying methods like Scrum. Then I saw dysfunction in the Product Backlog and around the Product Owner’s role, seeking to help the people involved understand the system and how they can influence its behavior in more productive, more effective ways.</p>
<p>Other people have had the same goal of helping clients succeed with their product development efforts for at least as long as I have. I work with some of those people. Many of those people also have had a vastly different approach to reaching that goal. After all, we all have our individual experience, skills and quirks that we must play with and make the most out of them.</p>
<h2>Introducing user experience</h2>
<p>In 2005 <a title="Reaktor" href="http://www.reaktor.fi/en">we</a> hired a couple of professional interaction designers. They brought in just such vastly different skills. Up until then we had survived with our engineering-oriented, albeit multi-disciplined, staff, every now and then reaching for outsourced help with interface design. We had almost invariably been disappointed with the results from such outsourcing and yet we knew that we weren’t delivering the best user experience we could for our clients. Not that the clients were complaining but we knew and we do have a thing for perfection.</p>
<p>From the beginning our interaction designers were loudly proclaiming that “programming should only start when the interaction design is done.” Essentially their message was that interaction design was the king. That didn’t go down too well with the XP/Scrum-minded folks who were almost 100% programmers and very much into short iterations, incremental development, and generally allergic to big-design-up-front. After all, most of us have worked for major consulting companies and even the smallest hint of waterfall would give us the chills.</p>
<p>After a while the exaggerated soundbites started making room for more constructive discussion and more open-minded search of a Better Way. From one project to another our engineers and designers grew experience and formed a way of working that seemed to yield the best of both worlds, accommodating iterative and incremental development without a big design up front and the kind of smart user interface that truly was fit for purpose. We started being more and more pleased with the approach. We had a gold standard for how we want to run our application development projects.</p>
<p>We still had a problem as we only had a couple of interaction designers and plenty of projects that desperately needed their precious attention. We have found ways to alleviate that bottleneck – including hiring, of course – but we’ll come back to that topic later. Right now, I’d like to explain how we execute UI-intensive software projects today, combining user interaction design and agile methods into what I personally consider the best way I’m aware of to build such software products or applications.</p>
<h2>Just enough design up front</h2>
<p>Some of our engagements don’t involve any code to be written, some of our software delivery projects don’t involve a single graphical user interface, and some of our software delivery projects have a user interface that quite frankly isn’t all that important. When we do engage in a project where delivering a great user experience is essential, this is how we work.</p>
<p>To start with who’s involved, there’s a dedicated development team made up of generalist software developers capable of turning requirements into working software. There’s also a dedicated user interaction designer who’s capable of interpreting what different people are saying into a functional user interface design.</p>
<p>We start with what some might call “just enough design up front” where, over a time span of a couple of weeks, the user interaction designer digs into the problem domain and carries out a number of interviews with different people. Those different people may hold titles such as Product Owner, Product Manager, VP of Product Development or, if we’re lucky, titles such as Junior Sales Associate or Cashier. We want to talk to users, not somebody who pays the bills. Sometimes this luxury is available and sometimes we’re not that lucky.</p>
<p>Based on this work the user interaction designer identifies and documents the essential usage scenarios that represent the most significant, most valuable use of the system. With these scenarios to work with the designer starts iterating toward a user interface design that supports these scenarios with the best possible design, starting with just one scenario and incrementally expanding and editing the design one additional scenario at a time. At some point the designer starts involving the client’s staff to help validate the designs, which at this point are generally sketches or paper prototypes.</p>
<p>When the designer feels confident enough that the main cruces of the problem domain and the main usage scenarios have been solved, the design is considered stable enough to start programming. Up until this point in time, the development team has usually set up their infrastructure or worked on specific bits of implementation that do not involve the user interface.</p>
<p>The very reason we don’t start implementing the user interface on day one along with the user interaction design work is that it’s much, much more expensive to iterate in code than it is to iterate on paper. There’s a lot of rework to be saved by investing some time up front on this work.</p>
<h2>Working with the designs</h2>
<p>Once implementation begins, what the development team works with is a Product Backlog derived from general system requirements and the functional design – the sketches and paper prototypes – provided by the user interaction designers. By the iteration planning meeting the Product Owner and the user interaction designer have identified vertical slices of end-to-end functionality that could be implemented in the next iteration.</p>
<p>Sometimes those vertical slices are straight from the designs, e.g. a panel that displays information. Sometimes, those vertical slices are a stripped down version of the design resulting from a decision to down-prioritize a particular usage scenario. Sometimes, however, there’s a need for an intermediary design that introduces partial functionality with the intent that this is a temporary solution. In those cases, the development team and the user interaction designer are looking for a compromise that delivers the best user experience feasible with the boundaries of implementation effort and iteration length.</p>
<p>During an iteration the interaction designer reviews and validates the implementation as it progresses and serves as a quality gate – “reviewed by interaction designer” is often part of the team’s Definition of Done. Essentially, the interaction designer’s attention is split between this iteration and the next iteration(s), very much like that of the Product Owner’s. Just like the Product Backlog continues to live and evolve our user interface designs continue to live and evolve.</p>
<h2>Beyond the bottleneck</h2>
<p>As I said before, we hired a couple of trained professionals in interaction design back in 2005 and that wasn’t even remotely enough to staff all of our web development or desktop application projects with a full-time interaction designer. I also said that we’ve found ways to alleviate that problem.</p>
<p>The most obvious solution is, of course, to hire. That has proven to be somewhat difficult and even though we received almost a thousand applications last year only a tiny fraction of those applicants have had the right profile. Instead, we’ve had to find ways to source that talent from within.</p>
<p>A couple of years ago we started an internal apprenticeship program and a handful of solid programmers jumped on the user interaction train. Our experienced interaction designers taught their apprentices in regular training days and mentored them almost on a daily basis. In practice this meant that our senior designers had to take on much less work than before. On the other hand, we immediately had a wider spread of limited knowledge and skill – enough to fulfill the immediate needs of a development team – and bigger designs would still be reviewed together with a senior colleague.</p>
<p>Seeing the apprenticeship program become as successful as it has makes me wonder at the courage and drive of the individuals who saw the importance and dared to make the leap. Others have also taken part in the trainings and the whole company is more or less familiar – at least on a theoretical level – of how user interfaces are designed with our iterative method.</p>
<h2>Personal touch</h2>
<p>Some time ago I was a developer on a software project where we had an apprentice user interaction designer on staff and a senior designer paying us a visit one or two days a week. It was a relatively big project for one designer, however, with multiple teams working on an application where a good user interface was considered crucial for commercial success. Our sole full-time designer frequently had her hands full when a larger UI change was approaching and user stories would pile up towards the “interaction designer’s review” column on our story board.</p>
<p>I took part in one of those larger UI changes in a small team of four developers. The whole thing had bubbled through the Product Backlog very quickly and we didn’t have a single sketch or prototype to work with. We could’ve said, “no, we can’t do this before the designer has time” but instead we said, “yes, we can do it.” After all, it’s not a problem for us to take collective ownership of code given that we all know a bit of everything in the code base so why should the UI be any different?</p>
<h2>Art of the possible</h2>
<p>We decided to take the reality by the horns and make the best of what we had. We started preparing for the upcoming implementation between ourselves, trying to verify that we really do understand the big picture, identify the relevant usage scenarios, and sketch solutions that would support those scenarios as best we could. Stepping outside of our respective comfort zones wasn’t anywhere near as frightening as it had sounded a couple of weeks earlier.</p>
<p>Once we had agreed about the overall design with the team I set off to create a more detailed design for one particular user interface geared at managing orders and their logistics. I looked at the usage scenarios and specified what kind of information does the user need at which stage, what kind of information does the service provider need, and what kind of a workflow and interface design would tie it all up such that all of the scenarios would be supported and that I wouldn’t be leading our team down the front end programmer’s equivalent of Dante’s Hell.</p>
<p>That was hard. Not because I couldn’t have designed a user interface but because nobody from our team knew what the people in logistics actually do, how they work currently, and what kind of a user interface would best support them in their task. Our Product Owner knew something about it but he also had just second hand information from the management of the logistics department. This was when it finally sunk in for me how crucially important it is to get to talk to actual users – I had no idea what the warehouse dudes actually have to do before Tom’s new mobile phone and Jean’s shiny new iPod leave the premises with the correct transport manifests and everything.</p>
<p>Again, I knew that I could only do my best with what we had. Besides, I had been through the basic training on user interface design, I’d read Alan Cooper’s classic about inmates and an asylum, I’d read “About Face”, I’d familiarized myself with user interface design patterns, and I’d seen many designs created by our awesome interaction designers. It wasn’t difficult to design a good user interface. Maybe not a great user interface but it’s perfectly doable to design a decent solution by following our method, focusing on the usage scenarios, and iterating the design, simulating against the scenarios.</p>
<h2>Creeping insecurity</h2>
<p>At this point I had a design that I thought was good but I also knew that I’m relying on the hearsay and babble of the Product Owner, which shed some insecurity into my doing. I had just leaned back in my chair, looking at the sketch in front of me and wondering whether it really is good enough when our senior interaction designer walked in. He wasn’t supposed to be at our disposal – he was there for another project – but I thought, “screw it, he’s there and this will only take a few minutes.” After all, I might get an opinion back in two seconds that could be compressed into something along the lines of “that’s the crappiest solution I remember seeing” but at least I would know so I walked over and asked if he had a moment to take a look at my design.</p>
<p>I explained the usage scenarios for which the design was made and what kind of widgets and behavior I had drawn in it. He asked me some clarifying questions and I did my best to answer them. Most of the questions were related to what happens at the logistics department when orders are coming in and how the logistics people juggle the orders internally, alone or collectively, grouping by customer or by product, whether the delivery address influences the way they are processed, etc.</p>
<p>After some five to ten minutes I walked away having crossed over one panel that wasn’t actually necessary for the scenarios and with a couple of other minor changes to make. We didn’t only have a better design but also a good feeling about having done our best despite our lack of availability for user interaction design expertise. We had likely done a good job (which later proved to be a correct assumption) and most certainly better than the CRUD-crap that we’d seen some competitors produce in the past.</p>
<h2>Parting thoughts</h2>
<p>It was definitely worth taking that step outside of the comfort zone. Looking back at this experience, it has provided me with a lot more perspective and tools for my coaching work with Product Owners. In fact, I’m certain that it wouldn’t hurt for a Product Owner to invest some time and effort to learn about user interaction design. After all, it’s all about product design, learning and knowing what your users need, working that knowledge into the Product Backlog, and refining your designs to allow for iterative and incremental implementation of that Product Backlog.</p>
]]></content:encoded>
			<wfw:commentRss>http://lassekoskela.com/thoughts/17/iterative-ux/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Master, Not Manager</title>
		<link>http://lassekoskela.com/thoughts/15/master-not-manager/</link>
		<comments>http://lassekoskela.com/thoughts/15/master-not-manager/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 08:34:36 +0000</pubDate>
		<dc:creator>Lasse Koskela</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[role]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[scrummaster]]></category>

		<guid isPermaLink="false">http://lassekoskela.com/thoughts/?p=15</guid>
		<description><![CDATA[My last article was about the role of a Scrum Master. I&#8217;d like to continue on that theme, exploring a pattern I&#8217;ve seen at many companies. The pattern I&#8217;m talking about can be observed in discussions and the kind of words used for describing the role of or talking about Scrum Masters. In short, many [...]]]></description>
			<content:encoded><![CDATA[<p>My last article was about the <a href="http://lassekoskela.com/thoughts/10/is-scrum-master-a-full-time-job/">role of a Scrum Master</a>. I&#8217;d like to continue on that theme, exploring a pattern I&#8217;ve seen at many companies. The pattern I&#8217;m talking about can be observed in discussions and the kind of words used for describing the role of or  talking about Scrum Masters. In short, many companies adopting Scrum are struggling to get over the particular misconception of the  Scrum Master being a management role.</p>
<p>Scrum Masters are not supposed to be managers. Scrum Masters are not  some kind of coordinating bodies between teams and Product Owners. Scrum  Masters don&#8217;t manage anyone but themselves. That&#8217;s one of the reasons why it&#8217;s often  easier for a non-manager to take on this role – lacking the baggage of  old habits of managing others.</p>
<p>It shouldn&#8217;t be a surprise that we may have established such mental  models, however. After all, even some <a href="http://top7business.com/?id=11112">Scrum tool vendors get it  somewhat wrong</a> and Wikipedia&#8217;s agile software development-related articles are notoriously flawed. Even the <a href="http://www.scrumalliance.org/">Scrum Alliance</a>, who&#8217;s supposed to be the official center of Scrum-related knowledge and information (along with the competing <a href="http://www.scrum.org">Scrum.org</a>), has such <a href="http://www.scrumalliance.org/pages/scrum_roles">utter bull</a><a href="http://www.scrumalliance.org/pages/scrum_roles" target="_blank"></a> on its website (I&#8217;m referring to the sidebar of that page and the Scrum  Master having &#8220;three primary responsibilities <em>in addition to leading  the daily scrums</em>&#8220;&#8230;) that we&#8217;re left without an authoritative source of  information beyond individuals we trust.</p>
<p>Personally, for such  authoritative source of information, I recommend reading writings by people such as Ken Schwaber, Craig Larman, and Bas Vodde.  These are predominantly books. One notable exception is the <a href="http://scrumtraininginstitute.com/home/stream_download/scrumprimer">Scrum  Primer</a><a href="http://scrumtraininginstitute.com/home/stream_download/scrumprimer" target="_blank"></a> (PDF), which I find to be perhaps the best description of Scrum available online.</p>
<p>The Scrum Alliance&#8217;s role description is not <em>total</em> bull, however. Namely, their list of Scrum Master&#8217;s  responsibilities isn&#8217;t <em>far</em> from what Certified Scrum Trainers have  taught for almost a decade now:</p>
<blockquote><p><strong>What the Scrum Alliance says about the Scrum Master&#8217;s  responsibilities</strong></p>
<p>The Scrum Master is a facilitative team leader who  ensures that the team adheres to its chosen process and removes blocking  issues.</p>
<ul>
<li>Ensures that the team is fully functional and productive</li>
<li>Enables close cooperation across all roles and functions</li>
<li>Removes barriers</li>
<li>Shields the team from external interferences</li>
<li>Ensures that the process is followed, including issuing invitations to daily scrums, sprint reviews, and sprint planning</li>
<li>Facilitates the daily scrums</li>
</ul>
</blockquote>
<p>Notice how the Scrum Alliance&#8217;s definition doesn&#8217;t put the Scrum   Master in between anyone else except between the team and &#8220;external   interferences&#8221;. The Scrum Master is not supposed to act as a single   point of contact towards other teams or towards the Product Owners. The   Scrum Master, according to the Scrum Alliance, does have administrative   responsibilities such as issuing meeting invitations to the Scrum   ceremonies (standup, review, planning) and the facilitation of the daily   standups.</p>
<p>I would personally go even further and say that the  first two bullets in  the above list imply that the Scrum Master should  seek to detach  himself from much of that administrative work over time,  as the team  begins to take responsibility over their own productivity,  cooperation  across roles and functions, removing more and more of  their barriers as  they empower themselves, learn to stand strong in the  face of external  interference, and facilitate their own collaboration.</p>
<p>Note that this doesn&#8217;t necessarily mean that the Scrum Master&#8217;s role wouldn&#8217;t be a <a href="http://lassekoskela.com/thoughts/10/is-scrum-master-a-full-time-job/">full-time job</a>.</p>
<p>For  a description of the Scrum Master&#8217;s responsibilities that is more in   line with the original spirit of Scrum and the role, this is how Ken   Schwaber and Jeff Sutherland, original creators of the method, describe   the role in the <a href="http://www.scrum.org/scrumguideenglish/">Scrum Guide</a>:</p>
<blockquote><p><strong>The  Scrum Master</strong></p>
<p>The Scrum Master is responsible for  ensuring that the  Scrum Team adheres to Scrum values, practices, and  rules. The Scrum  Master helps the Scrum Team and the organization adopt  Scrum. The Scrum  Master teaches the Scrum Team by coaching and by  leading it to be more  productive and produce higher quality products.  The Scrum Master helps  the Scrum Team understand and use  self-organization and  cross-functionality. The Scrum Master also helps  the Scrum Team do its  best in an organizational environment that may not  yet be optimized for  complex product development. When the Scrum Master  helps make these  changes, this is called &#8220;removing impediments.&#8221; The  Scrum Master&#8217;s role  is one of a servant-leader for the Scrum Team.</p></blockquote>
<p>This is much closer to the mindset that I&#8217;d like to see adopted   as far as the role or responsibilities of the Scrum Master are   concerned. Scrum was developed within a software company over several   years as the group devised and refined their engineering and product   management practices. It&#8217;s a designed system that creates a dynamic   equilibrium. If we move one lever the others will inevitably move as   well. If we compromise on one front or one aspect of our system we   shouldn&#8217;t expect too much on the other fronts either.</p>
<p>Assuming we  want to make the most of Scrum we need to pay attention to  Scrum, its roles, and what they entail. We need patience and drive to study, learn, and understand Scrum. Skimming a book or sitting through a presentation is clearly not enough.</p>
<p>The next time you catch yourself or someone else blurt that the Scrum Master &#8220;removes impediments&#8221; or &#8220;facilitates a standup&#8221;, stop for a moment to make sure that the parties involved in that conversation understand what these soundbites really mean and, perhaps even more importantly, what they <em>don&#8217;t</em> mean.</p>
]]></content:encoded>
			<wfw:commentRss>http://lassekoskela.com/thoughts/15/master-not-manager/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.362 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-01-11 21:43:24 -->
<!-- Compression = gzip -->
