<?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; Project work</title>
	<atom:link href="http://samipoimala.com/it/category/project-work/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>Rethinking software development project staffing</title>
		<link>http://samipoimala.com/it/2011/04/09/rethinking-software-development-project-staffing/</link>
		<comments>http://samipoimala.com/it/2011/04/09/rethinking-software-development-project-staffing/#comments</comments>
		<pubDate>Sat, 09 Apr 2011 10:05:30 +0000</pubDate>
		<dc:creator>Sami Poimala</dc:creator>
				<category><![CDATA[Conscious development]]></category>
		<category><![CDATA[Project work]]></category>

		<guid isPermaLink="false">http://samipoimala.com/it/?p=148</guid>
		<description><![CDATA[You are about to start a new project and are considering what kind of people you need. Typically people take a project manager, a designer, some developers and a tester so it must be the perfect recipe? Scrum and other agile methodologies came to the scene and confused people: they have roles like “Product Owner, [...]]]></description>
			<content:encoded><![CDATA[<p>You are about to start a new project and are considering what kind of people you need. Typically people take a project manager, a designer, some developers and a tester so it must be the perfect recipe? Scrum and other agile methodologies came to the scene and confused people: they have roles like “Product Owner, Scrum Master, Coach and ‘the Team’”. Still, you have people with diverse set of skills and you need to staff your team. What should you search for? Here I explain why you should build your project on top of generalists and try to keep the team as small as possible, but no smaller.<span id="more-148"></span></p>
<div class="wp-caption alignleft" style="width: 314px"><a href="http://samipoimala.com/it/files/2011/04/image.png"><img style="background-image: none; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0pt none;" title="image" src="http://samipoimala.com/it/files/2011/04/image_thumb.png" alt="image" width="304" height="233" align="left" border="0" /></a><p class="wp-caption-text">Recognised roles</p></div>
<p>Any project needs all sorts of expertise. In the picture 1 I have illustrated a typical, yet simple, scenario where the project needs some management, architecture, user interface design, development and it operations. The easiest and arguably most common solution is to assign one or more people into each expertise.</p>
<div class="wp-caption alignright" style="width: 314px"><a href="http://samipoimala.com/it/files/2011/04/image1.png"><img style="background-image: none; margin: 0px 0px 0px 10px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0pt none;" title="image" src="http://samipoimala.com/it/files/2011/04/image_thumb1.png" alt="image" width="304" height="239" align="right" border="0" /></a><p class="wp-caption-text">Person per role</p></div>
<p>This seems obvious: if we have a work to do, we need a person to do it. But this leads to problems well known: people are not collaborating effectively, they have their own silos, most of the decisions need to be done upfront which leads to waterfallish development no matter what your official methodology is. Most challenges in real world have cross-cutting concerns. Solving any such problem needs broad understanding of many aspects and in this setup this means you need many people work together. Collaboration is not bad in itself, but when you have two specialists who don’t understand each other’s expertise, it is not as efficient as it should be.</p>
<p>The solution to this problem has been examined before (see for example my <a href="http://samipoimala.com/it/2010/03/18/whats-wrong-with-typical-resourcing/">problems in current resourcing</a>). But as I see this one of the major hurdles to efficient (dare I say, agile?) development and I don’t see it being handled properly I need to keep refreshing on it. So, what we should aim for?</p>
<div class="wp-caption alignleft" style="width: 314px"><a href="http://samipoimala.com/it/files/2011/04/image2.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0pt none;" title="image" src="http://samipoimala.com/it/files/2011/04/image_thumb2.png" alt="image" width="304" height="233" border="0" /></a><p class="wp-caption-text">Person per gap between role: 10 required</p></div>
<p>Instead of using simple “person(s) per expertise” -method, we should probably use “minimal number of people that is enough to fill all the gaps between silos” –method. First you need to identify all the expertise areas that are needed to accomplish the desired end result. Then you need to find such persons that fulfill every gap between any two expertise areas. In our example, we had identified the five expertise areas so we have 10 gaps to fulfill.</p>
<p>Again, each of these gaps does not directly map into one person. Soon it becomes evident that if each team member only has one or two areas she is comfortable working in, you have a problem. Should each member have only two areas of competence, you’d really need 10 people. But, if even one of them possesses three different skills, the number of required people counts down to 8. If you have one “superstar” that is competent in four areas, you need only two people to fulfill every gap.</p>
<div id="attachment_149" class="wp-caption alignright" style="width: 310px"><a href="http://samipoimala.com/it/files/2011/04/overlappingskills.png"><img class="size-medium wp-image-149" title="overlappingskills" src="http://samipoimala.com/it/files/2011/04/overlappingskills-300x267.png" alt="" width="300" height="267" /></a><p class="wp-caption-text">Persons with overlapping skills: only 3 required!</p></div>
<p>In any real-life project you have probably more than just 5 types of expertise needed: concept design, usability design, graphic design, requirements gathering, database programming, UI programming, testing, it operations, mathematical analysis, domain-specific knowledge etc. And as we know, <a href="http://www.stevemcconnell.com/articles/art06.htm">the more people there are in the project, the more demanding the communication</a>. And communication happens to be one of the most important aspects of any project, especially one of software deveopment (see: <a href="http://alistair.cockburn.us/Software+development+as+a+cooperative+game">software development as a cooperative game</a>). This reminds us about the <a href="http://samipoimala.com/it/2009/09/30/multi-competence-required-today/">importance of multi-competence</a>.</p>
<p>So as a summary, the suggested method to project staffing is:</p>
<ul>
<li>identify the required expertise areas</li>
<li>find the least amount of people that cover all the required areas</li>
<li>if you need more firepower into any area, only then can you add a specialist</li>
</ul>
<p>=&gt; Sami&#8217;s rule of project staffing: Build the project on top of generalists, only add specialists if needed.</p>
]]></content:encoded>
			<wfw:commentRss>http://samipoimala.com/it/2011/04/09/rethinking-software-development-project-staffing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>What customers expect from their IT-partner?</title>
		<link>http://samipoimala.com/it/2009/10/04/what-customers-expect-from-their-it-partner/</link>
		<comments>http://samipoimala.com/it/2009/10/04/what-customers-expect-from-their-it-partner/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 17:52:40 +0000</pubDate>
		<dc:creator>Sami Poimala</dc:creator>
				<category><![CDATA[Conscious development]]></category>
		<category><![CDATA[Project work]]></category>

		<guid isPermaLink="false">http://samipoimala.com/it/?p=45</guid>
		<description><![CDATA[A while ago I attended an evening organized by Tietotoviikko. They had a few presentations and an ending panel discussion having members from both client and supplier side and also a researcher. The topics of discussion were IT-suppliers ability to keep their promises, customers&#8217; expectations towards their suppliers and what makes real partnership. Customers expect [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago I attended an evening organized by <a href="http://www.tietoviikko.fi">Tietotoviikko</a>. They had a few presentations and an ending panel discussion having members from both client and supplier side and also a researcher.<br />
The topics of discussion were IT-suppliers ability to keep their promises, customers&#8217; expectations towards their suppliers and what makes real partnership.<br />
<span id="more-45"></span><strong>Customers expect commitment and understanding</strong></p>
<p>The most important thing that customers expect from the sales of their it-partner is the understanding of customer&#8217;s business. They want to be treated well and salesmen should be active. Customers are usually willing to listen the opinions of it-suppliers. The biggest expenses usually come from massive customizations that are often done to fulfill all the listed requirements from customers&#8217; side. But most often these are not absolutely necessary. Suppliers should be interested in knowing what are the real needs of customers &#8211; and how they can be reached with minimum cost.</p>
<p>In the long run customers want that their supplier can fulfill their contemporary requirements. You should always solve the today&#8217;s problem, not tomorrows. And the solutions of today should always scale both up and down according to changes in customers&#8217; business.</p>
<p>One of the biggest problem (from the customers&#8217; side) it-suppliers have is their lack of decent account management. A good account manager is not a salesman, but a person that understands customer&#8217;s business and problems thoroughly and is able to suggest solutions. Add to that the fact that usually sales and supply organizations are separate, it&#8217;s no wonder that suppliers most often supply solutions that the customers are not satisfied with.</p>
<p>A surprising fact was to hear that now that the economy is low, the actual quality of sales work has lowered significantly! That is wrong direction: when the are less customers and less cases to compete on, suppliers should especially concentrate on the quality of their sales.</p>
<p>For real partnership to break out, suppliers must commit to improve customer&#8217;s operation. Suppliers must be willing to take some responsibility from the results.</p>
<p><strong>There&#8217;s no free lunch</strong></p>
<p>Of course, these services are not free and are often the first things to cut when customers want to lower prices. Way too often new projects are tendered and the lowest bidder gets chosen. And after one supplier gets chosen, usually it has only one incentive: to maximize the profits from the project.</p>
<p>So what eventually happens is that the supplier cannot enjoy the long-term profits from whole lifecycle and the customer suffers from inferior service. One could say: you get what you pay for. Real partnership is always most profiting to supplier and best serving method to customer. Why is it so hard to form real partnership these days? Toyota found it out on 70&#8242;s that it is most useful to count on real partnership instead of tendering all the suppliers every year.</p>
]]></content:encoded>
			<wfw:commentRss>http://samipoimala.com/it/2009/10/04/what-customers-expect-from-their-it-partner/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

