<?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; Conscious development</title>
	<atom:link href="http://samipoimala.com/it/category/conscious-development/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>Iterations and increments explained</title>
		<link>http://samipoimala.com/it/2010/04/16/iterations-and-increments-explained/</link>
		<comments>http://samipoimala.com/it/2010/04/16/iterations-and-increments-explained/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 12:41:17 +0000</pubDate>
		<dc:creator>Sami Poimala</dc:creator>
				<category><![CDATA[Conscious development]]></category>
		<category><![CDATA[Increment]]></category>
		<category><![CDATA[Iteration]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Sprint]]></category>

		<guid isPermaLink="false">http://samipoimala.com/it/?p=95</guid>
		<description><![CDATA[These days many people talk and write about iterative and incremental development and most often those terms are used inter-changeably. Some people, specifically Scrum folks, even use the term sprint. Agile software development methods are said to be BOTH iterative and incremental. So what does it mean? Iterative development Wikipedia has the definitive explanation on [...]]]></description>
			<content:encoded><![CDATA[<p>These days many people talk and write about iterative and incremental development and most often those terms are used inter-changeably. Some people, specifically Scrum folks, even use the term <em>sprint</em>. Agile software development methods are said to be BOTH iterative and incremental. So what does it mean?</p>
<p><span id="more-95"></span><br />
<strong>Iterative development</strong></p>
<p>Wikipedia has the definitive explanation on what it means to iterate:</p>
<blockquote><p>Iteration means the act of repeating a process usually with the aim of approaching a desired goal or target or result. Each repetition of the process is also called an &#8220;iteration&#8221;, and the results of one iteration are used as the starting point for the next iteration.</p></blockquote>
<p>In software development the desired goal is of course a shippable software product. So instead of having a big bang one-shot release (as known from waterfall process) the development team comes up with one version, which is immediately iterated into next version. The product is <em>ready</em> as soon as the product reaches good-enough quality level.</p>
<p>Iterative development is good for providing rapid feedback from users, but it&#8217;s weakness is that the whole product must be taken into production in one shot. The whole product is iterated all the time. (This of course is in the purest iterative, non-incremental case)</p>
<p><strong>Incremental development</strong></p>
<p>Let&#8217;s again borrow the definition from Wikipedia:</p>
<blockquote><p>Incrementalism is a method of working by adding to a project using many small, incremental changes instead of a few (extensively planned) large jumps.</p></blockquote>
<p>So what this means is that incremental is what has been called <em>staged delivery</em> for decades. It means you develop one part of the system and when it&#8217;s ready you develop the next part. In the purest version, you can first make the analysis and design, then develop first increment then develop the next increment and so on as long as all the features are developed.</p>
<p><strong>The difference and the synergy</strong></p>
<p>The elevator pitch for iterative and incremental development goes like this: iterative means making better something that has been done earlier and incremental means adding new features on top of what has been done before. These two ideas can be used without each other (as shown earlier) but they can be used together as well &#8211; which is actually a Very Good Idea as it turns out.</p>
<div id="attachment_96" class="wp-caption alignright" style="width: 307px"><a href="http://samipoimala.com/it/files/2010/04/iterative_incremental.png"><img class="size-medium wp-image-96 " title="Iterative and incremental" src="http://samipoimala.com/it/files/2010/04/iterative_incremental-297x300.png" alt="" width="297" height="300" /></a><p class="wp-caption-text">Iterative-incremental method space</p></div>
<p><strong>Alternative view on iterativeness and incrementalism</strong></p>
<p>As incremental development goes through all the phases of development (analysis, testing, development, design, integration, production) it is a perfect tool to expose all problems in the process. Should the integration be difficult, using incremental process you&#8217;ll face it early and repeat it many times so you&#8217;ll have to fix the problem, not postpone it into the end of the project (when you&#8217;ll be already late).</p>
<p>Iterative process means rework on the existing product, so it doesn&#8217;t help that much on the process-side, but it makes the product better. Usually agile teams first come up with a <em>walking skeleton</em> which is an end-to-end solution to the problem but may miss some features. So after getting feedback from customer the skeleton is iterated into next version by adding some muscles onto it.</p>
<p>So we could state that:<br />
- incrementalism improves the process<br />
- iterativity improves the product</p>
<p><strong>Enter agile</strong></p>
<p>So agile methods are said to be both iterative AND incremental. As we learned from previous chapters they are different things and actually we can think of them orthogonal axes in the method space (see picture). Plain waterfall is non-iterative, non-incremental process (have you seen such in reality?) so it is in the lowest left corner. The good-old staged delivery is incremental but not iterative so it is in the lowest right corner.</p>
<div class="mceTemp">
<p>However, spiral model is highly iterative but not at all incremental so it is in upper left corner. Thus the last corner, upper right, is reserved for agile methods. I&#8217;ve drawn it as an area, not a point because there is not just one agile process but many different flavors. The process must be in that area to be agile by definition but the amount of iterativity and incrementalness can vary. This is actually one of the key questions when architecting the process for any given project.</p>
<div id="attachment_101" class="wp-caption alignright" style="width: 310px"><a href="http://samipoimala.com/it/files/2010/04/iteration_increment_sprint.png"><img class="size-medium wp-image-101 " title="Sprint, increments and iterations" src="http://samipoimala.com/it/files/2010/04/iteration_increment_sprint-300x187.png" alt="" width="300" height="187" /></a><p class="wp-caption-text">Sprint, increments and iterations</p></div>
<p><strong>What is a sprint anyway?</strong></p>
<p>In Scrum we use the term sprint. What does it mean, is it an iteration or an increment? The term <em>sprint</em> is merely a fixed timebox, and Scrum doesn&#8217;t care whether you are iterating or incrementing your project. Most scrum teams keeps doing both types of work in any given sprint.</p>
<p>A good pattern is to think of it this way: the sprint is one increment in which you do all the activities you need to, from analysis to deployment. Think of it as a release. Inside a release it is good idea to have a few iterations &#8211; or internal releases &#8211; to make sure your increment will meet the requirements of your customer who will be analyzing your work in the sprint review.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://samipoimala.com/it/2010/04/16/iterations-and-increments-explained/feed/</wfw:commentRss>
		<slash:comments>49</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>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>
		<item>
		<title>GoodReads &#8211; what I&#8217;ve read recently</title>
		<link>http://samipoimala.com/it/2009/10/23/goodreads-what-ive-read-recently/</link>
		<comments>http://samipoimala.com/it/2009/10/23/goodreads-what-ive-read-recently/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 06:14:07 +0000</pubDate>
		<dc:creator>Sami Poimala</dc:creator>
				<category><![CDATA[Conscious development]]></category>

		<guid isPermaLink="false">http://samipoimala.com/it/?p=75</guid>
		<description><![CDATA[Inspired by my colleaque&#8217;s post about best books on web development, I decided to share my list of books about software development on general. I found a good web site for sharing books and reviews, GoodReads. I&#8217;ve shared the most interesting books from past few years. Books vary from programming to designing, from project management [...]]]></description>
			<content:encoded><![CDATA[<p>Inspired by my colleaque&#8217;s post about <a href="http://akibjorklund.com/2009/best-books-on-web-development">best books on web development</a>, I decided to share my list of books about software development on general. I found a good web site for sharing books and reviews, <a href="http://www.goodreads.com">GoodReads</a>. I&#8217;ve shared the most interesting books from past few years. Books vary from programming to designing, from project management to team leading, from methodologies to practises. As I believe, that <a href="http://samipoimala.com/it/2009/09/30/multi-competence-required-today/">over-specialization kills productivity</a>, I like to have a broad understanding to the craft.</p>
<p>Here&#8217;s my list: <a href="http://www.goodreads.com/review/list/2854969?sort=rating">http://www.goodreads.com/review/list/2854969?sort=rating</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://samipoimala.com/it/2009/10/23/goodreads-what-ive-read-recently/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Day one at Scanagile</title>
		<link>http://samipoimala.com/it/2009/10/15/day-one-at-scanagile/</link>
		<comments>http://samipoimala.com/it/2009/10/15/day-one-at-scanagile/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 20:31:12 +0000</pubDate>
		<dc:creator>Sami Poimala</dc:creator>
				<category><![CDATA[Conscious development]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lean]]></category>

		<guid isPermaLink="false">http://samipoimala.com/it/?p=55</guid>
		<description><![CDATA[Here are some highlights from the first day in Scan-Agile conference. Mary Poppendieck &#8211; Leadership and Self-Organizing Teams &#8211; Incompatible or Synergistic? Leader&#8217;s job is to keep the team from their comfort zone! Too often &#8211; espeacially small &#8211; teams are aiming for consensus &#8211; leaving out most of the wisdom that individuals have. The [...]]]></description>
			<content:encoded><![CDATA[<p>Here are some highlights from the first day in <a href="http://www.scan-agile.org">Scan-Agile</a> conference.</p>
<p><span id="more-55"></span><strong>Mary Poppendieck &#8211; Leadership and Self-Organizing Teams &#8211; Incompatible or Synergistic?</strong></p>
<ul>
<li>Leader&#8217;s job is to keep the team from their comfort zone!<br />
Too often &#8211; espeacially small &#8211; teams are aiming for consensus &#8211; leaving out most of the wisdom that individuals have. The leader has to ask unpleasant questions.</li>
<li>What differentiates a team from a workgroup is &#8216;common purpose&#8217;.<br />
A workgroup or committee is a group of people doing work together &#8211; but they don&#8217;t necessarile have the same goal. A team by definition is a group of people working together towards a shared vision or goal &#8211; common purpose.</li>
<li>Teams are dependant on their ability to make good decisions. And good decisions need:<br />
1) Diversity of opinions &#8211; all people participate in decision making<br />
2) Independence &#8211; team members may not be dependant on each other<br />
3) Decentralization &#8211; tema members are needed to have different specializations<br />
4) Aggregation &#8211; team must be able to draw conclusion from diverse opinions that come from different expertises</li>
<li>Team need two kinds of leadership:<br />
Competence leadership &#8211; like a master teacher who tells you how to play violin<br />
Product champion- like a  band leader wo is guiding the whole group</li>
<li>Competence leader assists in specialization while product champion helps in aggregation</li>
<li>There are two types of management: 1) Mission command and 2) Detailed command</li>
<li>In agile and lean development, mission command is what we need.</li>
<li>Mission commanders job (leader) is to<br />
1) State intent<br />
2) Set the tone &amp; tempo<br />
3) Make better people<br />
4) Improve the system</li>
<li>Always consider the cultural aspects of any organization and remember that different countries have totally differnet biases on what&#8217;s acceptable and what&#8217;s not.</li>
<li>When reading ANY theory, always consider in what country the author was raised up.</li>
<li>Lean originates from Japan, Agile originates from US</li>
</ul>
<p><strong>Jim Coplien &#8211; Why Lean and Agile are in conflict, and how to resolve the conflicts</strong></p>
<ul>
<li>Scrum is not about some fancy practises</li>
<li>Even the much touted Nokia test doesn&#8217;t guarantee real, suscesful Scrum implementation</li>
<li>Lean is meant to deal with complicated things while agile is meant to deal with complex things</li>
<li>Productivity is actually waste! It causes queues and inventories. You need to concentrate on ROI and the flow of value through the whole stream</li>
<li>Agile is about &#8220;doing just enough to get just enough quality&#8221; while lean is about &#8220;doing the least you can to achieve excellence&#8221;</li>
<li>Irritating fact, that seems amazingly commonly to be surprise: A hope is not a plan.</li>
<li>Scrum is not about 30% not even 100% of improvement. It&#8217;s about 2-3 orders of magnitude improvement when done correctly</li>
</ul>
<p><strong>Petri Heiramo &#8211; Scrum from the customer point of view</strong></p>
<ul>
<li>First impressions: weird terminology and a little common ground</li>
<li>Key benefits<br />
1) Improved communication<br />
2) Better visibility<br />
3) Enabling changing requirements<br />
4) Faster feedback<br />
5) Building quality in<br />
=&gt; Higher ROI</li>
<li>Success and value cannot be managed through cost. Instead, focus on<br />
1) User research&amp;business analysis<br />
2) Competence &amp; motivation of team members<br />
3) Amount of knowledge generated in every iteration<br />
4) Ability to incorporate cost<br />
=&gt; Focus on value</li>
<li>Research is completely different from development. You cannot estimate research.</li>
<li>Start from the definion of value and aim only towards generating more of it</li>
<li>Software should not be buyed be spec but by a vision instead.</li>
<li>Buying on spec causes higher cost, lower value and loss of knowledge between different phases of the project</li>
<li>You need continuous integration at project level, especially on multi-supplier projects</li>
<li>Never fix scope on a contract, even if cost and duration are fixed</li>
<li>Enable changes and early termination</li>
<li>The finnish acquisiotion law actually do not state you need waterfall. It especially makes it possible to avoid so called &#8220;open conduct&#8221; and use a &#8220;negotiative conduct&#8221; instead whenever the nature of purchase is such that the requiremetns cannot be clearly stated beforehand.</li>
</ul>
<p><strong>Karl Scotland &#8211; Five steps to kanban</strong></p>
<ol>
<li>Map the value stream</li>
<li>Visualize it</li>
<li>Limit work in progress</li>
<li>Establish cadence (pull system doesn&#8217;t need timeboxing!)</li>
<li>Reduce the kanban tokens</li>
</ol>
<ul>
<li>You need to keep the work flowing, not the workers busy</li>
<li>Ideally, development of a new feature doesn&#8217;t start before customer has paid for it.</li>
<li>Visualize the work in progress and gradually limit the number of work items in progress</li>
<li>Ideally the whole team works on a single story all the time.</li>
</ul>
<p><strong>Ari Tikka &#8211; Understanding power</strong></p>
<ul>
<li>&#8216;Power distance&#8217; is an important aspect of everyday life</li>
<li>It&#8217;s easy to be dependant on other people<br />
- The other will take care of me<br />
- I don&#8217;t have to decide<br />
=&gt; A tempting trap</li>
<li>Use of power is often constraining the system. There are two types of constraining.</li>
<li>Productive constraining. Like timeboxing &#8211; constrains the time axis</li>
<li>Bad constraining. Like micro-management that amplifies power distance and adds friction. Or conflict avoidance, which results in weaker decisions.</li>
</ul>
<p><strong>Bonus Panel &#8211; why bother with agile?</strong></p>
<p>The discussion went &#8220;a bit&#8221; off-topic, but interested discussion whatsoever <img src='http://samipoimala.com/it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ul>
<li>Agility started from software development, now we need to get higher in the corporate culture</li>
<li>Agile practises have worked long time, long before agile was a buzzword.</li>
<li>The only companies that will survive are those capable of changing rapidly</li>
<li>We are pretty good at looking into the future &#8211; but too often forget that the future will not stay the same!<br />
Also, we feel unpleasant to look back into the past &#8211; which is where we could learn</li>
<li>Waterfall has itäs place and works in simple projects. Complex projects are where you need something more and agility <em><strong>may</strong></em> work. In chaotic circumstances nothing will survive.</li>
<li>The biggest mistake we made was to plan year-long projects at the day-level detail.</li>
<li>The trend is towards smaller teams, where everyone is required to participate in decision making. There&#8217;s no room for just hanging around.</li>
</ul>
<p>Of course, you can <a href="http://twitter.com/#search?q=%23scanagile">follow what is going on on Twitter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://samipoimala.com/it/2009/10/15/day-one-at-scanagile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile assists, Scrum saves, testing turns profit &#8211; or do they?</title>
		<link>http://samipoimala.com/it/2009/10/15/agile-assists-scrum-saves-testing-turns-profit-or-do-they/</link>
		<comments>http://samipoimala.com/it/2009/10/15/agile-assists-scrum-saves-testing-turns-profit-or-do-they/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 19:41:06 +0000</pubDate>
		<dc:creator>Sami Poimala</dc:creator>
				<category><![CDATA[Conscious development]]></category>

		<guid isPermaLink="false">http://samipoimala.com/it/?p=48</guid>
		<description><![CDATA[AKVA club of HETKY organized a seminar about agile, scrum and testing. It was a two-day cruise from Helsinki to Stockholm and back and there were many speakers from different backgrounds. There was a common (though unplanned) theme &#8211; doing agile is not easy. Pia Ek: How one should regard agility contract-wise? First talk was [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ttlry.fi/yhdistykset/hetky/kerhot/akva-kerho/">AKVA club</a> of <a href="http://www.hetky.fi">HETKY </a>organized a seminar about agile, scrum and testing. It was a two-day cruise from Helsinki to Stockholm and back and there were many speakers from different backgrounds. There was a common (though unplanned) theme &#8211; doing agile is not easy.<span id="more-48"></span></p>
<p><strong>Pia Ek: How one should regard agility contract-wise?</strong></p>
<p>First talk was from Pia Ek of Hannes Snellman. Her main theme was that agility doesn&#8217;t contract-wise differ that much from traditional methods of contracting software.</p>
<p>First, one should always have a contract &#8211; and preferably in written form.</p>
<p>Second, the contract should always be exactly about the thing that the parties are agreeing on. It&#8217;s not useful &#8211; especially on agile contracts &#8211; to start from a specific form of contract. It&#8217;s irrelevant to talk whether it should be &#8220;fixed price&#8221; or &#8220;time and material&#8221; -based. Contract should be based on the mutual goal &#8211; what are the responsibilities of each party and what is the acceptance criteria.</p>
<p>Third, agile projects are usually considered as a series of mini-projects. Each iteration should have a clear planning phase during which it&#8217;s clearly stated what is going to happen during the next iteration. It makes it possible to make a contract for each iteration &#8211; if that kind of extremity is needed.</p>
<p>Fourth, if product development is done in agile manner with close collaboration with customers, it may come to question, to whom the IPR belongs. This should be mentioned in the contract.</p>
<p>Finally, although agility is based on changing requirements, changes must still be handled consciously. They must not cause unhandled chaos.</p>
<p>Often projects go astray due to customer not playing it&#8217;s role well &#8211; either by not handling it&#8217;s responsibilities or not reserving enough resources to the project. This theme were continued on the next talk:</p>
<p><strong>Esko Hannula: How do you make sure that your IT-purchase succeeds?<br />
</strong></p>
<p>Esko believes that agile methods are the best thing that has happened to software development for a long time. At the same, he is really concerned about the way that agile is applied right now. He predicts that in next few years many companies will suffer from serious &#8220;agility hangover&#8221;.</p>
<p>Agile will eventually &#8211; and when performed well &#8211; make huge profits but before that it will make many suffer.</p>
<p>Esko told that customer will always suffer more from quality problems or projects that otherwise didn&#8217;t end happily. By using strict contracts it&#8217;s possible to even run the supplier to bankruptcy, but the customer will still suffer more &#8211; if it won&#8217;t the project were not worth starting after all.</p>
<p>To avoid quality problems and ill projects all teams should remember a few things:</p>
<ul>
<li>Agree on who is responsible on quality assurance and acceptance testing</li>
<li>Re-think the chapter &#8220;change management&#8221; on old contract templates</li>
<li>Bring all problems visible and handle them actively</li>
<li>Changes in projects should not come faster than decisions can be made</li>
</ul>
<p><strong>My own talk: Scrum pitfalls, and what does Scrum demand?</strong></p>
<p>I proposed that Scrum is difficult but required. Period. At least on product development. On contracted customer projects, it&#8217;s valuable but can be discussed on. My main points were that Scrum is difficult to both individuals and organizations.</p>
<p>Traditional project managers get lost when they don&#8217;t have their familiar tools to manage projects:</p>
<ul>
<li>there are not necessarily functional specification, architecture documentation and other typical planning documentation</li>
<li>Progress reporting is done through daily scrums and burndown charts</li>
</ul>
<p>Traditional project managers get lost as their usual activities exist no more:</p>
<ul>
<li>They don&#8217;t do task splitting</li>
<li>They don&#8217;t tell people to do things</li>
</ul>
<p>Traditional developers get lost, when they need to take more responsibility:</p>
<ul>
<li>They don&#8217;t get ready specifications from which to code. They may need to write them themselves.</li>
<li>They don&#8217;t necessarily always know what they are going to do next, nobody will tell them. They need to take the responsibility of getting things done.</li>
</ul>
<p>Traditional developers try to avoid the responsibility when things go wrong:</p>
<ul>
<li>They say that they only did what somebody ordered</li>
<li>They say that they only did what is said in specification.</li>
</ul>
<p>For Scrum to work, it asks many things from organizations:</p>
<ul>
<li>It should be learning organization, always getting better and better. It needs that people get and give feedback regularly and that teams hold retrospectives.</li>
<li>One must have an atmosphere of trust. Learning takes many mistakes and learning from mistakes needs good team spirit. And it is not possible without trust.</li>
<li>A decent product owner. A scrum team needs a prodcut owner that is capable of doing priorizations.</li>
<li>A decent scrum master. Team needs a dedicated scrum master that is empowered to make needed decisions to remove impediments</li>
<li>Scrum teams do not have HTML-specialists, programmer, DB admins, tester and technical writer. Scrum team is a cross-functional team where everybody is required to do whatever activity is needed any given time.</li>
<li>Scrum team cannot work by themselves. They need a good Scrum-aware surroundings, especially in marketing and sales but also in upper-level management.</li>
</ul>
<p>Some typical pitfalls that many organizations fall into include the following:</p>
<ol>
<li>Pretending that Scrum is easy</li>
<li>Leaving the Scrum team alone, without support from higher level</li>
<li>Using agility as an excuse to cowboy coding)</li>
<li>Forcing the use of Scrum from upper management, without buy-in from team</li>
<li>Forgetting the retrospectives, retrospectives that really form the basis of Scrum.</li>
<li>Closing eyes, and staying using Scrum by-the-book even though it doesn&#8217;t work</li>
</ol>
<p><strong>Some random points</strong></p>
<p>Riitta Karkkila from IBM Rational spoke about their transition towards agile methods. Even Rational must have admitted that today&#8217;s world needs different type of software develoment compared to 80&#8242;s and 90&#8242;s. She told that in software development, you need four types of management:</p>
<ol>
<li>Scope management</li>
<li>Process management</li>
<li>Progress management</li>
<li>Quality management</li>
</ol>
<p>These together make sure that development sits happily on its pillars, collaboration, automated testing and process improvement, and measurement.  On top of these fundamental principles are a few practises how you make the product good enough in given time with given resources:</p>
<p>First you timebox, then you go breadth first and prioritize, then go into more depth and details and finally iterate the whole process until you are finished.</p>
<div id="_mcePaste" style="overflow: hidden;width: 1px;height: 1px">
<table id="translations" class="translations" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr class="row2">
<td></td>
<td><a href="http://m.sanakirja.org/search.php?id=65029&amp;l2=17">bankruptcy</a></td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://samipoimala.com/it/2009/10/15/agile-assists-scrum-saves-testing-turns-profit-or-do-they/feed/</wfw:commentRss>
		<slash:comments>2</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>
		<item>
		<title>Multi-competence required today</title>
		<link>http://samipoimala.com/it/2009/09/30/multi-competence-required-today/</link>
		<comments>http://samipoimala.com/it/2009/09/30/multi-competence-required-today/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 21:04:28 +0000</pubDate>
		<dc:creator>Sami Poimala</dc:creator>
				<category><![CDATA[Conscious development]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://samipoimala.com/it/?p=30</guid>
		<description><![CDATA[Today&#8217;s software development is more challenging than ever. Yes, in some part it&#8217;s a lot easier with higher generation tools compared to assembly languages, but I claim that requirements have raised even faster than the abstraction level in tooling. Technological competence &#8211; programmer My Colleaque Jouni had a nice post about what you need to [...]]]></description>
			<content:encoded><![CDATA[<p>Today&#8217;s software development is more challenging than ever. Yes, in some part it&#8217;s a lot easier with higher generation tools compared to assembly languages, but I claim that requirements have raised even faster than the abstraction level in tooling.<span id="more-30"></span></p>
<p><strong>Technological competence &#8211; programmer</strong></p>
<p>My Colleaque <a href="http://www.heikniemi.net/hardcoded/2009/07/learning-calendar-for-microsoft-developers-2009-2010/">Jouni had a nice post </a>about what you need to learn in coming year if you are a Microsoft developer. Another colleaque, Aki, posted a nice summary of what expertise every <a href="http://akibjorklund.com/2009/areas-of-expertise">web developer should possess</a>.</p>
<p>These are nice summaries, but they still leave a lot of important skills out. Aki&#8217;s post for example leaves the server-side untouched. Usually, you don&#8217;t write xhtml and css without some kind of server technology, be it Java, .NET, Php, Ruby, Python or whatever. Each of these technologies come with their own surroundings. Let&#8217;s take .NET (the one I know best), you need to know a language (C# for example), the web framework (ASP.NET, in web forms or mvc flavor, preferably both), the huge class library (BCL) etc. Sure, you need to be competent in some data access technology (like Entity Framework, NHibernate) and seldom do you make it without touching a DBMS (like Sql Server, Oracle etc).</p>
<p>And if you really want be a competent guy, you surely do make use of unit testing, inversion of control, be familiar with collaboration envinronments and configuration management systems, handle the application server and it&#8217;s configuration, &#8230;</p>
<p><strong>From programmer to developer</strong></p>
<p>After you handle all this, it merely makes you a decent programmer. Once you get there, you need to crasp a good understanding of development methogologies and patterns, have understanding of project management and teamwork, understand the basics of software business and handle all the numerous social occasions in front of angry customers you are thrown into when something has gone wrong.</p>
<p>Understand these things, and you&#8217;ll be a good software developer.</p>
<p><strong>From developer to organizational champion</strong></p>
<p>So the days of &#8220;pure C++ developer&#8221; are long gone. You need to handle multiple technologies and understand your craft thoroughly. And one of the biggest challenges to typical programmers is to accept that programming should be the last resort to solve a problem. Most often, there are better and cheaper solutions. And when you advance in your career from mere programmer, you begin to see more and more problems.</p>
<p>All this makes me wonder, what is the point in being in business like this? For me the answer is obvious: software development is all about learning. If you are not willing to learn, software development is not for you. If you love to learn stuff all the time, enjoy the neverending journey! And as correctly executed agile development emphasizes learning, it is perfect fit. And what does agile have to do with competence? Read on&#8230;</p>
<p><strong>Cross-functional teams come from&#8230; multi-competent people!</strong></p>
<p>Yes, you could make Scrum team from one tester, three programmers, one technical writer and one project manager. But do yo think a team like that would work efficiently? I guess not. Traditionally, each person has a stigma in her forehead: &#8220;I&#8217;m a tester&#8221;, &#8220;I&#8217;m a DBA&#8221; or so. My claim is that this very specialization is the biggest obstacle to productivity. I&#8217;ve way too often witnessed value streams that go like this:</p>
<ol>
<li>Project manager (PM) listens to the customer (C)</li>
<li>PM tells the requirements to the programmer (P)</li>
<li>P implements the functionality</li>
<li>PM tells user interface designer (UID) the requirements</li>
<li>UID makes his part and notes that P should make some changes</li>
<li>PM tells P to make some changes<br />
&#8230;</li>
<li>Finally PM meets the C only to find out that both P and UID had implemented something that doesn&#8217;t please the C so let&#8217;s start from 2<br />
&#8230;</li>
<li>Repeat this cycle n times and start wondering, why we are not making profit.</li>
</ol>
<p>If we had a <em>perfect</em> human in the sense that she had all the skills of PM, P and C there would undoubtedly be no problems (of course there would, but those could be solved immediately). But we do not have perfect humans, so we need to have people with different skill sets. So here is our formula to productivity: <em><strong>The more distinct the skill sets of team members, the lower the productivity will be.</strong></em> Or the converse: <em><strong>The more diverse skill sets team members possess, the more productive team will be.</strong></em></p>
<p>As we know, each handoff to a different person needs knowledge transfer, which in turn is costly. And the more distinct skill sets, the more handoffs there will be. This can also be seen as the classic debate, <a href="http://personalbrandingblog.wordpress.com/2009/01/02/in-2009-become-a-generalist-and-a-specialist-to-keep-your-job/">generalists vs. specialists</a>.</p>
<p>I&#8217;m not saying that there&#8217;s no use to specialized expertise. What I&#8217;m saying is that general competence should be the norm and specialists are extra. What did you learn today?</p>
]]></content:encoded>
			<wfw:commentRss>http://samipoimala.com/it/2009/09/30/multi-competence-required-today/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

