<?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>Conscious Development &#187; teamwork</title>
	<atom:link href="http://samipoimala.com/it/tag/teamwork/feed/" rel="self" type="application/rss+xml" />
	<link>http://samipoimala.com/it</link>
	<description>Curious perversions from software development</description>
	<lastBuildDate>Wed, 07 Mar 2012 06:53:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>What&#8217;s wrong with typical resourcing</title>
		<link>http://samipoimala.com/it/2010/03/18/whats-wrong-with-typical-resourcing/</link>
		<comments>http://samipoimala.com/it/2010/03/18/whats-wrong-with-typical-resourcing/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 22:12:15 +0000</pubDate>
		<dc:creator>Sami Poimala</dc:creator>
				<category><![CDATA[Conscious development]]></category>
		<category><![CDATA[Project work]]></category>
		<category><![CDATA[peopleware]]></category>
		<category><![CDATA[teamwork]]></category>

		<guid isPermaLink="false">http://samipoimala.com/it/?p=87</guid>
		<description><![CDATA[Oftentimes people are assigned into projects by looking into resource pools and determining some key characteristics of each resource: what is the current utilization rate, what do reservation calendars look like and on some more sophisticated scenarios, also each person’s skill sets are taken into consideration. But this model is far from ideal for numerous [...]]]></description>
			<content:encoded><![CDATA[<p>Oftentimes people are assigned into projects by looking into <em>resource pools</em> and determining some key characteristics of each resource: what is the current utilization rate, what do reservation calendars look like and on some more sophisticated scenarios, also each person’s skill sets are taken into consideration. But this model is far from ideal for numerous reasons.<span id="more-87"></span></p>
<p><strong>Skill sets</strong></p>
<p>First of all, the skill sets that really are taken into consideration, are mostly technological. Like &#8220;Sally is a java programmer, Joe is database administrator specializing on Oracle and Harry is a tester while Sophia is a UI designer&#8221;. Someone has somehow calculated how many units of each resource type project needs and thus a project team is formed.</p>
<p>This model doesn&#8217;t take into account what kind of personality types the specific project needs. Should we take Sally the java programmer who is not comfortable with iterating but usually produces error-free code from decent design, or Scott the java programmer who is at his best at trying different things out but doesn&#8217;t want to wait for design to be finished? Should we take Sophia the UI designer, who is considered more senior and competent on her own but is unable to work with customers or should we take Chris the UI designer who shines with customers but who often gets to argue with other team members?</p>
<p>Furthermore, this model completely ignores the fact that a team is more than the sum of it’s parts. A team may vastly benefit from a person who is complete junior on every technological aspect but really makes the people work as a team.</p>
<p>If these decisions are not made consciously, the project will most probably meet unexpected challenges in getting into working effectively.</p>
<p><strong>Productivity differences</strong></p>
<p>In any given resource pool you have many people with similar skill sets. Are each of them similarly productive? We have significant evidence that between two programmers there can be 20-time (the multiplier varies from 10 to as far as 50 on different studies) difference in their productivity. Do you know the productivity characteristics of each member on your resource pools?</p>
<p><strong>Team is more than a group of people</strong></p>
<p>By assigning project teams merely resourcing each member from their respective pools you do not get an actual <em>team</em>. Instead you&#8217;ll just put up a group of people who are not enjoying the empowering effects of a well-working team. A team in which every member knows each other will have productivity that is far more than the sum of its each individual member.</p>
<p>Teams are not something that any single person can mandate to exists: a group of people decides to work as a team or the do not. Finally, if you happen to come up with a jelling team, resource pooling often breaks each team after every project. So you’ll face the team building phase on every project. It’s not the most efficient way of working.</p>
<p><strong>So what to do about it?</strong><strong></strong></p>
<p>1)       Forget resources</p>
<p>The first step into the right direction is to quit speaking of people as <em>resources</em>. Considering people as resources proposes the usage of <em>resource pools</em> and ignores the notion of a well-functioning team. Instead of focusing on setting up resource pools and optimizing individual utilization we should focus on building highly efficient teams that are capable of organizing themselves at all times. Teams should be big enough to allow assigning the best person to any given task but small enough so that the number of communication channels does not overwhelm the benefits of people knowing each other.</p>
<p>2)      Consider organizational structure</p>
<p>Do you have your workforce organized by functional expertise? Project management team, UI design team and development team, database team and testing team? This grouping doesn’t encourage self-organization and introduces many possible bottlenecks to your workflow. People working together should stay together and have a common organizatory goal.</p>
<p>3)      Let teams build themselves</p>
<p>A jelling team can typically consist of 10 or less people. Bigger than that and the communication channels get far too many and the diversity of the persons get in the way of efficient collaboration. You may have organization units that are bigger, but inside units you may have more teams. If you as a unit manager see some people getting along especially well, why not letting them work together as a team?</p>
<p>4)      Emphasize specializing generalists, not pure specialists</p>
<p>Each person who has strictly limited expertise is a bottleneck to productivity. Specialists need a well-defined role, they need a project that can use a specialist of his profession. When your people are capable, and willing, to act on a multitude of roles, your staffing problems get a lot easier.</p>
<p>A group of specialists can make – and usually do &#8211; products in which any given area is crafted well, but the product as a whole doesn’t work at all. To make anything remarkable you need a group of people who understand what others are doing, people who understand the product as a whole.</p>
<p>Surely you need the <em>specializing</em> part, too. A group of pure generalists will surely do something that works somehow, but it won’t shine on any aspect. The optimal situation is having a team full of generalists, each of which could carry any role in the project, but where each has her own specialty on top of good general knowledge.</p>
<p>=&gt;  Sami’s first law of productivity: Productivity is directly proportional to the amount of overlap in team members’ skill-area / expertise-level –space.</p>
]]></content:encoded>
			<wfw:commentRss>http://samipoimala.com/it/2010/03/18/whats-wrong-with-typical-resourcing/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>What is your inner story?</title>
		<link>http://samipoimala.com/it/2010/01/09/what-is-your-inner-story/</link>
		<comments>http://samipoimala.com/it/2010/01/09/what-is-your-inner-story/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 13:18:58 +0000</pubDate>
		<dc:creator>Sami Poimala</dc:creator>
				<category><![CDATA[Conscious development]]></category>
		<category><![CDATA[Project work]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[teamwork]]></category>

		<guid isPermaLink="false">http://samipoimala.com/it/?p=83</guid>
		<description><![CDATA[Behind every person is an inner story. A story that describes her world-view and thus her behaviour. The story may not be consciously written but silently adopted – and adapted &#8211; from local contemporary culture, childhood, genes and so on. All the books you read and stories you heard contributed to your story. But there [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rebelzen.com/2008/07/ego-and-the-inner-story/">Behind every person is an inner story</a>. A story that describes her world-view and thus her behaviour. The story may not be consciously written but silently adopted – and adapted &#8211; from local contemporary culture, childhood, genes and so on. All the books you read and stories you heard contributed to your story.</p>
<p>But there are sub-stories also. <a href="http://www.ratical.org/co-globalize/MaeWanHo/future.pdf">In physics we have had Newtonian and Einsteinian stories</a>, and these <a href="http://ozpk.tripod.com/para">stories constantly change</a>. In this post I urge you to think what are your stories of software development. There are at least three different types of stories that define you as a software developer.<br />
<span id="more-83"></span></p>
<h3>What is software development at very high level -story</h3>
<p>In the last decades of software development we have not been in lack of paradigms to choose from. Many have come, many have gone. And I agree, <a href="http://www.ddj.com/embedded/187002099">we still are trapped in nonfunctional paradigms</a>. Here are a few different paradigms that Alistair Cockburn pointed out:<br />
<img title="Image51-.gif" src="http://alistair.cockburn.us/get/2350" alt="Image51-.gif" /></p>
<p>Of course, these are a bit philosophical paradigms from methodologists and as such do not define very strictly how you will behave in every situation. But it is a foundation on top of which the other stories build. Do you have a different metaphor for software development that describes your style better? Let me know!</p>
<h3>What is a software project –story</h3>
<p>This is the type of story that has caused most <em>process wars</em>, manifestos to be written, different schools of thought to be born and continuous flux on the science side.</p>
<h4>Educated 90´s software development</h4>
<p>Perhaps the most common story is what was teached at school in the 90´s, being a mixture of Meyer´s engineering, Humphrey´s discipline and Jacobson´s model building. This most often resulted in the traditional waterfall-development in which each activity is carried out sequentially by specialists of each phase.</p>
<p>This story encourages for big, upfront design, comprehensive documentation and project management as a separate task. And testing postponed to the end of the project.</p>
<h4>Software project is a collaborative game</h4>
<p>In many parts, this is the original way of writing software – that is doing an reincarnation in the names of lighter-weight methodologies. You basically take a cross-functional team (preferably small) of people and trust them to get the job done. This philosophy is behind the many <em>agile methods</em> that coming with varying set of practices, principles and rules on the game.</p>
<p>Usually this story comes with iterations, incremental development, continuous integration, behavior driven design and test driven development etc.</p>
<p>Alistair Cockburn has even composed a <a href="http://alistair.cockburn.us/Cooperative+game+manifesto+for+software+development">manifesto</a> for this style:</p>
<blockquote><p>“Software development is a (series of) cooperative game(s), in which people use markers and props to inform, remind and inspire themselves and each other in getting to the next move in the game. The endpoint of the game is an operating software system; the residue of the game is a set of markers to inform and assist the players of the next game. The next game is the alteration or replacement of the system, or creation of a neighboring system.”</p></blockquote>
<h4>Cowboys on the desert</h4>
<p>In practice, many software teams are not willing – or capable of – carrying out monstrous project framework and processes that 90´s style requires. Further, they do not have the discipline neither responsibility that collaborative game needs. Instead they work like cowboys on an unknown land: without any idea where to go, they take each confronting sack, changing direction continuously and ultimately ending somewhere leaving a disastrous mess behind.</p>
<p>In software terms this means that there is a bunch of individuals who are not collaborating fluently, requirements drop unexpectedly from customer and there´s virtually no communication between the customer and developing team except what is absolutely required to hand off the requirements and at the end, deploying some piece of somehow working software.</p>
<p>Requirements change wildly and they are implemented right away without thinking the architecture and keeping the code clean.</p>
<h4>Systems thinking</h4>
<p>Some go as far as saying you should not have projects at all, but think development artifacts as products. Usually projects have up-front funding, scope fixed at the beginning and success is measured in terms of meeting the scope in given time at given cost. What´s worse, the team is often disbanded and each member goes on to new projects. A new team will step in and take care of the maintenance.</p>
<p>Alternatively, in systems thinking the development is funded incrementally, scope is expected to evolve along the way and success is measured in terms of market share and profitability. The same development team often stays with product.</p>
<h3>What am I as a developer –story</h3>
<p>Finally, after each person´s beliefs about development in general and reckoning about projects (or products) each still has a different attitude towards his work</p>
<h4>Stonecutters, living earners and cathedral builders</h4>
<p>There´s is a great story about three stonecutters in <em>Kitchen Table Wisdom.</em></p>
<blockquote><p>It’s a story offered by psychologist Roberto Assagioli, who tells of a man who goes to interview three stonecutters engaged in building a very large cathedral. When he asks the first stonecutter what he is doing, the man bitterly replies that he is cutting stones into blocks, a foot by a foot by three quarters of a foot. With frustration, he describes a life in which he has done this over and over, and expects to continue to do so until he dies.</p>
<p>The second stonecutter also says that he is cutting stones into blocks, a foot by a foot by three quarters of a foot, but he adds an important piece. He lets the man know that he is earning a living for his family; through his work his children will have clothes to keep them warm and food for them to grow strong, and that he and his wife will be able to maintain their home, which they built with so much love.</p>
<p>But it is the third man’s response that astounds the interviewer. In an enthusiastic voice, he tells the man how joyous and grateful he is to have the privilege of building a great cathedral, so strong that it will stand as a holy beacon for a thousand years.</p>
<p><a title="http://clf.uua.org/quest/2008/12/janamanchi.html" href="http://clf.uua.org/quest/2008/12/janamanchi.html">http://clf.uua.org/quest/2008/12/janamanchi.html</a></p></blockquote>
<p>Are you just typing some freakin´ code, putting up darned CSS styles, &lt;put here your current day-to-day activity&gt; or are you part of  team who is building an exciting new product? Or are you just doing whatever you´re told to do so that you can feed your kids? When you are annoyed by your job what do you do? Complain about it? Ignore it? Fix the problem?</p>
<h4>Technology lovers, tool blamers and superheroes</h4>
<p>Besides the overall attitude to your work there are some characterizing ministories that you may have absorbed.</p>
<p>Are you a superhero that often works night´n´days, sacrificing your own life because “it´s the only way to save the project”. Do you think the other people on your team are inferior and you are the only competent guy?</p>
<p>Or do you think that you and your team are perfectly competent and suitable for the project – except that the <a href="http://thedailywtf.com/Articles/Tool_Blame.aspx">tools are always wrong</a>. Be it the operating system, version control software, time-tracking software, internet browser… You are doing your job perfectly but the tool just prevents you to be productive. And there is nothing you can do about it.</p>
<p>You may also have fallen in love with technology. Be it all the new technology in general or any given brand that has dazzled you. Anything you think is from the point of view of the newest technology.</p>
<h4>Different types of developers</h4>
<p>Alex Love has written a nice overview of <a href="http://blog.lowesoftware.com/software-development/types-of-software-developers-what-are-you">different types of developers</a>. Do you recognize one of the types to describe yourself?</p>
<h3>Afterthoughts</h3>
<p>While it may be hard to find a single story that works for you all the times, it´s important to understand your own way of thinking. Equally important is to understand the stories that your team mates carry with them. Conscious team leaders make up teams that consist of people with compatible inner stories.</p>
<p>Have you noticed different types of stories that define software developers? Feedback is welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://samipoimala.com/it/2010/01/09/what-is-your-inner-story/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The essence of smart methodology is bridging the gaps</title>
		<link>http://samipoimala.com/it/2009/12/15/the-essence-of-smart-methodology-is-bridging-the-gaps/</link>
		<comments>http://samipoimala.com/it/2009/12/15/the-essence-of-smart-methodology-is-bridging-the-gaps/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 18:57:03 +0000</pubDate>
		<dc:creator>Sami Poimala</dc:creator>
				<category><![CDATA[Conscious development]]></category>
		<category><![CDATA[teamwork]]></category>

		<guid isPermaLink="false">http://samipoimala.com/it/2009/12/15/the-essence-of-smart-methodology-is-bridging-the-gaps/</guid>
		<description><![CDATA[Listening to Ivar Jacobson’s talk about closing the gap between business and IT gave me an idea, what software development methodologies are all about. During the 50 years of software development we have seen a plethora of software development methods. Every ten years comes a new methodology, a new solution, to the same old problems [...]]]></description>
			<content:encoded><![CDATA[<p>Listening to Ivar Jacobson’s talk about <a href="http://ivarblog.com/2009/11/17/closing-the-gap-between-business-and-it/">closing the gap between business and IT</a> gave me an idea, what software development methodologies are all about.</p>
<p>During the 50 years of software development we have seen a plethora of software development methods. Every ten years comes a new methodology, a new solution, to the same old problems we have been fighting for the whole 50 years. And will be fighting, dare I say, the next 50 years. One weapon used in the war is <em>development methodologies</em>. But what really is the essence of a methodology?</p>
<p> <span id="more-81"></span><br />
<h3>A lone coder</h3>
<p>Imagine you are developing software alone for yourself. You know perfectly well, WHAT it is you want to achieve. You are effectively a business analyst. Also, you alone specify HOW you are going to implement the software. Naturally you write the code and test the solution yourself.</p>
<p>I bet anyone who has wrote any non-trivial software for himself, did find some opportunities to make the software better than originally thought. When you work alone it’s usually not a problem, you change your mind and are happy with that. </p>
<p>You don’t need much ceremony for this to work.</p>
<h3>Enter external client</h3>
<p>Things get a lot more difficult when another person comes into the game. Especially if the other guy is your client who is going to tell you WHAT to do.</p>
<p>When two or more people work together (you are working together, aren’t you?) they need a way to coordinate their work, share knowledge and find a way to make decisions. </p>
<p>This comes extremely important when you need to agree on WHAT to build.</p>
<h3>Bigger team, more roles</h3>
<p>Usually as one person turns to an organization and projects grow bigger, more roles become involved in the game. Most often first person to enter is an hybrid of project manager and analyst taking care of the client and telling the developer WHAT to do. What effectively occurs, is more loss of information (according to many studies ca. 50% of information gets lost on a handoff).</p>
<p>Next people to come into an project are architects, designers (telling developer HOW to do) and testers (trying to validate whether the developers did what the analyst told them to do, no matter is it what the client wants, no matter was it done how designer thought). More coders. More clients with conflicting ideas on WHAT to do. More problems. Many methodologies have been born to solve these questions, many theories about teamwork have existed many decades, so we are perfectly suited for a successful project?</p>
<p>Each new person presents new demands for the development methodology.</p>
<h3>And the ultimate question is…</h3>
<p>So now we have a team of people (without going into discussion on what is the essence of a team) consisting of many specialists perfectly suited to do their own craft. And the team has a client who has a business process to be improved using software. The only remaining problem is that the team should produce what the client needs. And it needs answering the ultimate question WHY. Why is the software being developed? Why is client asking for what she asks? Why is designer proposing a given solution?</p>
<p>To answer that question (and also to further specify the WHAT) business processes are modeled and various diagrams are drawn. </p>
<h3>The problem</h3>
<p>Developers have their own methods, business has it’s own methods and IT operations has it’s own methods. Unluckily, there’s very little common ground between the different stakeholders. There are huge gaps between the different sides. And after a few thoughts, we find that our specialists-driven team has also many gaps: designer doesn’t understand what each decision means development-wise, developer doesn’t understand the UI designer etc.</p>
<p>We need something to help us bridge the gap or even better, remove them totally.</p>
<h3>The solution</h3>
<p>Each project has it’s very own characteristics: it has a unique combination of skills, unique value definitions, unique scheduling, unique state of the world and – what’s most important – unique human beings. This means that the project needs to find a way to work effectively together under these unique circumstances.</p>
<p>I have written before on <a href="http://samipoimala.com/it/2009/09/30/multi-competence-required-today/">cross-functional teams</a>. But it doesn’t stop on the software development team. We need a cross-functional <em>business development team</em>. Most software is written because of business change, and as business changes continuously, so do software.</p>
<p>For any project to succeed it needs all the stakeholders speaking the same language, sharing objectives, collaboration, building trust and enabling business agility. Real methodologies always try to find practices that bridge the gaps between end users and client, between client and analyst, between members of development team etc.</p>
<p><em>“The essence of Lean is thinking in context”</em> someone said. I couldn’t agree more. Thinking in context is the very essence of software development. We have come too far in determining readymade methodologies. Think in context, define your own methodology for your project and bridge the gaps.</p>
<h3>Afterthought</h3>
<p>A football team consists of highly trained specialists. They have goalkeeper, defensemen, middle-field and the forwards. Each one is focusing primarily on his role. What is the difference between a football team and a typical software development team? Each member on a football team know how to play football! Every single player can kick the ball, they know the strategy, the are able to serve the ball, they know how to tackle the opponent etc.</p>
<p>Typically on a software development team you find testers who can’t write code, you have designers who can’t write code, you have coders who know nothing about user interfaces (or even the users…). Why is that?</p>
]]></content:encoded>
			<wfw:commentRss>http://samipoimala.com/it/2009/12/15/the-essence-of-smart-methodology-is-bridging-the-gaps/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

