<?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>Karmængine &#187; Development</title>
	<atom:link href="http://www.karmaengine.com/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.karmaengine.com</link>
	<description>Scrums, agile development, analytics, SEO, and general commentary from a product owner</description>
	<lastBuildDate>Thu, 22 Apr 2010 08:13:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>How to break your Product Owner</title>
		<link>http://www.karmaengine.com/scrum/how-to-break-your-product-owner/</link>
		<comments>http://www.karmaengine.com/scrum/how-to-break-your-product-owner/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 08:07:10 +0000</pubDate>
		<dc:creator>Jacob</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Scrum Discussions]]></category>

		<guid isPermaLink="false">http://www.karmaengine.com/?p=254</guid>
		<description><![CDATA[Following these steps you can not only crush all loyalty, optimism, and quality in your Product Owner, but you can make him tear the very hair from his scalp:

Make a business decision without consulting the partners in the business.
Find a buffoon who has never heard of Agile and make him Project Manager.
Task the Project Manager [...]]]></description>
			<content:encoded><![CDATA[<p>Following these steps you can not only crush all loyalty, optimism, and quality in your Product Owner, but you can make him tear the very hair from his scalp:</p>
<ol>
<li>Make a business decision without consulting the partners in the business.</li>
<li>Find a <strong><span style="color: #993366;">buffoon </span></strong>who has never heard of Agile and make him <span style="color: #993366;">Project Manager</span>.</li>
<li>Task the <span style="color: #993366;">Project Manager</span> with making the business decision a reality, using the Product Owner&#8217;s team.</li>
<li>Don&#8217;t brief the development team or the Product Owner on the situation.</li>
<li>Put a distance of half a continent between the Product Owner (and team) and the <span style="color: #993366;">Project Manager</span>.</li>
<li>Watch as the <span style="color: #993366;">Project Manager</span> drowns the Product Owner with outdated waterfall documents and processes.</li>
<li>Watch as the Product Owner tries to stay afloat and keep the Scrum process happening.</li>
<li>Watch as the <span style="color: #993366;">Project Manager</span> contradicts himself as he struggles to employ waterfall properly.</li>
<li>Watch as the <span style="color: #993366;">Project Manager</span> fails to understand even the basic principles of Agile methodology.</li>
<li>Watch as the Product Owner struggles to meet the waterfall requirements in the Scrum environment.</li>
<li>Watch as the Product Owner lacerates himself on the rocks at the bottom of the waterfall, pulling the team with him.</li>
<li>Watch as the <span style="color: #993366;">Project Manager</span> follows his Gantt chart like a blind man with a guide-stick, and tries to demonstrate the product which wasn&#8217;t made to the company owners.</li>
<li>Listen as the <span style="color: #993366;">Project Manager</span> points fingers, blames, attacks team members on a personal level, and tries to play the Scrum Master against the Product Owner.</li>
<li>Listen as the Scrum Master gives in and allows the <span style="color: #993366;">Project Manager</span> to dictate deadlines and content of sprints.</li>
<li>Watch the mutant team stretching themselves around &#8217;scrumfall&#8217; methodology.</li>
<li>Listen as the <span style="color: #993366;">Project Manager</span> burns everyone&#8217;s ears with stories of his own success.</li>
<li>Watch as the team grows hatred for the <span style="color: #993366;">Project Manager</span>.</li>
<li>Watch as the Product Owner abandons the company.</li>
</ol>
<p>Did I mention the word &#8216;<strong>buffoon</strong>&#8216;? It doesn&#8217;t feel right to limit the description to a single word, but, as I&#8217;ve learnt, using many words to describe <em>nothing </em>is one of the traits of such a person.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.karmaengine.com/scrum/how-to-break-your-product-owner/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Developers who want to combine stories</title>
		<link>http://www.karmaengine.com/scrum/developers-who-want-to-combine-stories/</link>
		<comments>http://www.karmaengine.com/scrum/developers-who-want-to-combine-stories/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 01:25:37 +0000</pubDate>
		<dc:creator>Jacob</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://www.karmaengine.com/?p=239</guid>
		<description><![CDATA[&#8230; Stop it.
]]></description>
			<content:encoded><![CDATA[<p>&#8230; Stop it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.karmaengine.com/scrum/developers-who-want-to-combine-stories/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCRAM, not Scrum, v.2</title>
		<link>http://www.karmaengine.com/development/scram-not-scrum-v2/</link>
		<comments>http://www.karmaengine.com/development/scram-not-scrum-v2/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 10:51:19 +0000</pubDate>
		<dc:creator>Jacob</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.karmaengine.com/?p=189</guid>
		<description><![CDATA[I have already tried to describe a methodology called SCRAM, but now revising it makes sense. Things have been learnt.
Scrum has Sprints, Scram has Scrambles. We scramble and push and do everything we can do deploy new functionality every day.
Humans and animals move fastest when running from something, not when running towards something.
In the case [...]]]></description>
			<content:encoded><![CDATA[<p>I have already tried to describe a methodology called SCRAM, but now revising it makes sense. Things have been learnt.</p>
<p>Scrum has Sprints, Scram has Scrambles. We scramble and push and do everything we can do deploy new functionality every day.</p>
<p><em>Humans and animals move fastest when running <span style="text-decoration: underline;">from </span>something, not when running <span style="text-decoration: underline;">towards </span>something.</em></p>
<p>In the case of Scram, developers are running from fear of being booted from the team, losing benefits, and losing respect. They are in an effort to &#8216;keep up&#8217; with the best of the team.</p>
<p><em>Scram is like an olympic-level of development.</em></p>
<p><span style="text-decoration: underline;">The purpose is to get the most out of the team, to push them beyond their usual capacity, and to meet their needs as we do so.</span></p>
<p>Let me start by just getting on with it.</p>
<p>I know &#8216;deployer&#8217; is not a real word.</p>
<p><strong>Requirements for Scram</strong>:</p>
<ul>
<li>A team consisting of: A tester, a deployer, 2-4 developers, and a product manager.</li>
<li>Company-provided lunches of salad or pasta and varied meats (chicken, beef, pork, seafood, fish &#8211; 5 days, 5 different meats).</li>
<li>Company-provided refreshments available whenever the team needs them (water, tea, milk).</li>
<li>Company-provided fruit/berry snacks.</li>
<li>A product to create.</li>
</ul>
<p><strong>Abnormal focuses:</strong></p>
<ul>
<li>Nutrition of the team</li>
<li>Pressure-cooker mentality</li>
<li>&#8216;Natural selection&#8217; evolution of team &#8211; the chaff gets booted out quickly.</li>
<li>Team-members control who is in the team.</li>
<li>Paired/quartet-programming encouraged.</li>
<li>No documentation (unless documenter is added as a separate entity to team)</li>
</ul>
<p><strong>Normal focuses</strong>:</p>
<ul>
<li>Working towards a common goal.</li>
<li>Test-driven development.</li>
</ul>
<p><strong>Roles:</strong></p>
<ul>
<li>Tester &#8211; Works between developers and deployer. The tester is responsible for testing &#8216;completed&#8217; work, and giving the go-ahead to the deployer. Developers must inform tester when work is ready for him to test. The tester is responsible for deployed, not-working functionality.</li>
<li>Deployer &#8211; Works between the tester and the product manager. The deployer is responsible for deploying work which the tester approves for deployment. The deployer is responsible for broken deployments. The deployer maintains a deployment record for the product manager.</li>
<li>Developers &#8211; are responsible for creating the product. Developers must understand what functionality needs to be made, and then make it. Developers must inform the tester of work which is ready for testing. Developers are responsible for work which fails testing.</li>
<li>Product manager &#8211; is responsible for itemizing and detailing the functionality to be created. Is responsible for providing goals. Is responsible for released product.</li>
<li>Documenter (not obligatory) &#8211; observes tester and story description from manager, and documents functionality.</li>
</ul>
<p><strong>Iterations</strong>:</p>
<p>Daily routine:</p>
<ul>
<li>15 mins preparation &#8211; manager explains what tasks are ready. Developers recap what tasks are in progress.</li>
<li>120 minutes development &#8211; Major effort. Coding, testing, deploying can all take place.</li>
<li>15 minutes recap and preparation &#8211; developers explain what has been done, what is yet to do. Tester explains what&#8217;s tested. Deployer explains what is deployed and/or will be deployed. Manager observes.</li>
<li>60 minutes development &#8211; Medium effort. Coding, testing, deploying can all take place.</li>
<li>120 minutes lunch &#8211; extended lunch. Team should eat together, discussing work and patting themselves on the backs. Stragglers have time to catch up. Impediments and problems are explained to the manager.</li>
<li>15 minutes recap and preparation &#8211; next phase is planned, deployer recaps, tester recaps, developers recap, manager encourages.</li>
<li>120 minutes development &#8211; Major effort. Push to get something deployed if nothing new is deployed yet.</li>
<li>15 minutes cooldown &#8211; Patting-on-the-back, recap, discussing problems. Each team member confidentially writes two names: team member they were most impressed with, and team member they were least impressed with, for the manager&#8217;s review.</li>
</ul>
<p>The manager&#8217;s daily routine is somewhat different:</p>
<ul>
<li>15 minutes preparation &#8211; manager confirms with team what will be achieved today.</li>
<li>120 minutes development &#8211; manager reviews yesterday&#8217;s work and communicates with stakeholders.</li>
<li>15 minutes recap &#8211; manager learns the current state of development.</li>
<li>60 minutes development &#8211; manager plans and predicts outcome for the end of the day.</li>
<li>120 minutes lunch &#8211; manager joins in, discusses with team, jokes, keeps the atmosphere positive. Glares at slower team members.</li>
<li>15 minutes recap &#8211; manager explains progress and expectations.</li>
<li>120 minutes development &#8211; manager starts to plan next day&#8217;s work, based on projections for current day.</li>
<li>15 minutes cooldown &#8211; manager goes berserk if nothing was delivered. Manager praises team is goals were met. Manager collects feedback from the team.</li>
</ul>
<p><strong>Guidelines</strong>:</p>
<ul>
<li>Deployment can be made at any time.</li>
<li>Something must be deployed every day.</li>
<li>Extended lunch break. Always.</li>
<li>Team members can be booted out of the team at any moment, at the manager&#8217;s discretion (based on team feedback).</li>
<li>Team members should be the &#8216;elite&#8217; and be paid and treated that way.</li>
<li>Unique hats or t-shirts or mouse or monitor should be given to team members to distinguish them from others.</li>
<li>Team members can break and snack at their leisure.</li>
<li>Friday evenings of every fortnight should be a major wind-down, possibly with a trip to sauna, gym, massage, or yoga.</li>
<li>Strong focus on nutrition; physical and mental well-being of the team members. Team members should start to increase their capacity for output the longer they stay a part of the group. Should also result in less sick-leave, which can collapse Scram.</li>
</ul>
<p><strong>Business-level notes</strong>:</p>
<p>The fact is, running with such a team is going to be expensive. The lunches, the benefits, the &#8216;elitism&#8217; of their salaries, etc.</p>
<p>However, the potential output, and the fact that new features are delivered every day, gives such an approach a high value &#8211; a value which in broad terms can be translated into higher revenue for the business.</p>
<p>Being constantly pushed, reviewed, and judged by their peers can result only in the overal improvement of the team members, and a well-oiled team of intelligent and highly-skilled people should result in a high-speed development process, provided that the product functionality can be divided into components small enough to develop in a day.</p>
<p>It remains a fact that this development approach is not suitable nor required for many common projects. Users of systems rarely require new features available every day. Regardless, this approach can be maintained with releases to pre-production environments, which are then passed on to a Q.A. department for monthly deployments into the real world. The goal remains the same &#8211; to create the product as quickly as possible.</p>
<p>A note on documentation:</p>
<p>All products should be documented, and the documentation should be written for users. With Scram, an option is to have an additional team member &#8211; a documentation writer.</p>
<p><strong>Flaws</strong>:</p>
<ul>
<li>Quality of work is never checked.</li>
<li>Automated tests of functionality are not created.</li>
<li>Unless the team knows each other well, it can be a free-for-all battle to get the &#8216;easy&#8217; tasks to work on.</li>
<li>Scope of stories to be completed is only broadly estimated, on-the-fly.</li>
<li>Bug fixing has to be slotted-in randomly.</li>
<li>It&#8217;s difficult to find team members suitable for such a high-level of output.</li>
<li>The manager is somewhat hidden with his collection of feature requests and stories for the developers. For the developers, these may seem to come from nowhere.</li>
<li>Team members have no chance to make suggestions for features.</li>
</ul>
<p><a href="http://www.karmaengine.com/_img/daily-routinejpg.jpg">http://www.karmaengine.com/_img/daily-routinejpg.jpg</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.karmaengine.com/development/scram-not-scrum-v2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Handling degrading developers</title>
		<link>http://www.karmaengine.com/development/handling-degrading-developers/</link>
		<comments>http://www.karmaengine.com/development/handling-degrading-developers/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 11:31:52 +0000</pubDate>
		<dc:creator>Jacob</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[develo]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://www.karmaengine.com/?p=61</guid>
		<description><![CDATA[Something else I need to write about. Developers who get worse over the years. How do you handle them?
Firstly I should define what I mean by &#8216;worse&#8217;. Well, essentially:

Quality of code decreases
Ability to estimate tasks decreases
Attention to detail decreases
Time distracted increases
Work done fails testing more frequently
Contribution during discussions decreases

I suppose the first step in handling [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Something else I need to write about. Developers who get <strong>worse </strong>over the years. How do you handle them?</p>
<p style="text-align: left;">Firstly I should define what I mean by &#8216;worse&#8217;. Well, essentially:</p>
<ul style="text-align: left;">
<li>Quality of code decreases</li>
<li>Ability to estimate tasks decreases</li>
<li>Attention to detail decreases</li>
<li>Time distracted increases</li>
<li>Work done fails testing more frequently</li>
<li>Contribution during discussions decreases</li>
</ul>
<p style="text-align: left;">I suppose the first step in handling this is to sit down with the developer, a senior developer, and a director and have a good old-fashioned discussion on these points. But this is not going to do much to solve the problems, it&#8217;s just going to result in the developer either bawling their eyes out, or agreeing firmly to try and improve matters.</p>
<p style="text-align: left;">So, more drastic action has to be taken.</p>
<p style="text-align: left;"><strong>Addressing a lack of code quality</strong></p>
<blockquote style="text-align: left;"><p>A sit-down review with a high quality coder can help. Mistakes and vicious habits can be pointed out, as well as correct principals and other methods. This should be a personal tutoring session and take place every week for a couple of hours. Yes, this kicks eight hours out of our two-week sprint, but I consider that that&#8217;s peanuts compared to the damage being done. It&#8217;s only the start, though!</p></blockquote>
<p style="text-align: left;"><strong>Helping with task estimation</strong></p>
<blockquote style="text-align: left;"><p>Estimating tasks is supposed to be a personal thing &#8211; the developers should visualize the process of developing the solution, of testing, of documenting and preparation. They should total the hours they&#8217;re likely to spend on these aspects and that should be their estimation. But if the developer has trouble visualizing, or breaking a task into &#8216;actual things to do&#8217;, their estimate will be rubbish.</p>
<p>To help the developer turn the task into actual things to do, it is a matter of simply extending the discussion of the task (prior to estimation) to include or share opinions from others on how they would approach it.</p>
<p>If the developer still doesn&#8217;t understand enough about the process to be able to give an estimate in hours, then it&#8217;s a problem. It&#8217;s a bogus developer who should be asked to re-evaluate his employment in the company. They may require extensive training, but in the case I&#8217;m talking about, where the developer has steadily declined, it may be time to put his experience elsewhere, rather on the frontline.</p></blockquote>
<p style="text-align: left;"><strong>What to do when attention to detail decreases</strong></p>
<blockquote style="text-align: left;"><p>Details are important, especially in software development &#8211; the world in which many finicky users stalk around with magnifying glasses. And, I personally find that when a developer makes the effort and pays attention to small things, that he is giving himself a little golden place in my heart. Obversely, when the developer &#8216;doesn&#8217;t give a hoot&#8217;, no matter how good they are, I get a little bit clenchy in the fist region when I see him.</p>
<p>Attention to detail can be increased by embarrassing the developer. Aye, it&#8217;s true. Point out his mistakes (even though they may not be technically mistakes) during stand up meetings. Laugh about them, make jokes. Be light-hearted about it, not stern. He will laugh too but watch his cheeks go red. If this continues to happen he will knuckle-down, out of the basic human need to &#8216;fit in&#8217;.</p>
<p>Another good way to make a mockery of a developer is to <strong>not </strong>single him out. Make a joke to the team that some silly person -did-whatever- and how funny and troublesome it is. If he immediately owns up to being the cause, it is something very respectable.</p></blockquote>
<p style="text-align: left;"><strong>Removing distractions</strong></p>
<blockquote style="text-align: left;"><p>I am always of the school of people who don&#8217;t want to restrict workers at all in the office. Introducing &#8216;no browsing&#8217; or &#8216;no music&#8217; policies is insane, in my opinion. The real way to remove distractions is to make the developer understand that while he&#8217;s not working, he is overloading himself in the future, and, since scrum is all about the team, he is increasing pressure on the team.</p>
<p>An interesting way to do this is to speak with another developer, someone who you trust and who you&#8217;re friendly with. Tell him or her that you are going to make an example out of them after the stand-up meeting, but only as an example to the other developer. Then, after the stand-up meeting, question your friend about his forum chatting or flickr browsing during working hours. Then directly ask the team how much pressure they&#8217;re feeling right now, and if they really have time to waste on non-productive activities. If they all agree that they do have spare time, that&#8217;s your fault. It might be a chance to introduce a brainstorming or knowledge-sharing session for them. That would be better than seeing them mucking about on youtube all day.</p>
<p>I also hate checking up on people. Procedures can&#8217;t be measured, only results can. But checking up sometimes help. It helps sometimes to just go and look at the developer&#8217;s screen. Don&#8217;t say anything, just look. They will feel uncomfortable, but since you&#8217;re not really putting any pressure on them to &#8216;get back to work&#8217;, they will get a splash of guilt, rather than anger. Pat them on the shoulder when you walk away, too. This is a friendly gesture which means &#8216;you&#8217;re part of the team, I like you&#8217;. It is a little condescending, but I feel it&#8217;s the right approach.</p></blockquote>
<p style="text-align: left;"><strong>Reducing test failure</strong></p>
<blockquote>
<p style="text-align: left;">Again, this is where humility comes into play. It&#8217;s usually like this: the developer works on his task, tests it on his local machine, commits his changes, and then doesn&#8217;t test on the development environment, or does a very limited check to see if the thing didn&#8217;t break after his commit. Then he goes to make coffee or unwind his brain from the task he&#8217;s finished.</p>
<p style="text-align: left;">Then someone tests his task and boom. Test failed.</p>
<p style="text-align: left;">The developer often takes an hour or more to be informed of his failure, then some time to begin working on it again, then time to find and fix the problem, and so on and so on, damaging the team&#8217;s performance. Test failed tickets are like a stab wound to the team. They can be fatal.</p>
<p style="text-align: left;">So &#8211; how to make sure the developer fully tests his own work before <strong>and </strong>after committing? Humility, yes. Embarrass him again. Count up the number of test failed tickets during the sprint and make the developer with most wear some silly t-shirt during the next sprint planning session. Be creative, but not cruel. Make him feel like the other developers are laughing at him. There&#8217;s only one direction he can take to resolving it &#8211; and that is to ensure he doesn&#8217;t have any test-failed tickets in future.</p>
</blockquote>
<p style="text-align: left;"><strong>Increasing the developer&#8217;s contribution during discussions</strong></p>
<blockquote>
<p style="text-align: left;">There&#8217;s not a lot that can be done about this one, except directly asking during discussions for the developer&#8217;s opinion. Try to get him involved in the same way you&#8217;d try to get anyone involved in a conversation. Ask questions, talk about the things they worked on, and so on.</p>
<p style="text-align: left;">If someone starts falling asleep during the planning session for example, depending on how horribly mean you are, a sudden clap is quite entertaining for everyone else, and will wake them up.</p>
<p style="text-align: left;">It also helps a developer feel like a sturdy cog in the wheel if you praise them. And, when he feels like a contributing member, he will act as one.</p>
</blockquote>
<p style="text-align: left;">In the end, it&#8217;s essential to remove the &#8216;dead wood&#8217; from the team&#8217;s little bridge, and replace it either by employing someone different, or solving the problems causing the wood to rot. If you don&#8217;t, the whole thing can collapse.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.karmaengine.com/development/handling-degrading-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where SCRUM goes wrong</title>
		<link>http://www.karmaengine.com/scrum/where-scrum-goes-wrong/</link>
		<comments>http://www.karmaengine.com/scrum/where-scrum-goes-wrong/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 09:31:34 +0000</pubDate>
		<dc:creator>Jacob</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://www.karmaengine.com/?p=53</guid>
		<description><![CDATA[So, I have been thinking. Scrum is an excellent methodology, without doubt. It&#8217;s perhaps not suitable for all software development projects, but I reckon that a majority would benefit from adopting scrum.
Yet scrum has weaknesses.
I can talk about what I have perceived from being involved in Scrum for eleven months as a product owner. I [...]]]></description>
			<content:encoded><![CDATA[<p>So, I have been thinking. Scrum is an excellent methodology, without doubt. It&#8217;s perhaps not suitable for all software development projects, but I reckon that a majority would benefit from adopting scrum.</p>
<p>Yet scrum has weaknesses.</p>
<p>I can talk about what I have perceived from being involved in Scrum for eleven months as a product owner. I am sure there&#8217;s more than one &#8216;opponent&#8217; of this development method, but I am certainly not of that ilk, nor do I wish to be. I just want to share my experiences.</p>
<p>Firstly, scrum pays entirely no attention to product maintenance and technical support. If you have a small company, with only a handful of developers working on a new release of a product, there&#8217;s nobody to maintain the old versions while a sprint is in progress.</p>
<p>The obvious workaround is to reduce the number of developers involved in the sprint, and stick them on maintenance and support handling. Aha- but for a small team pushed to make a new release, this is a disaster. Firstly, a reduced team equals a reduced output, an extended release date, and, let&#8217;s face it, less revenue.</p>
<p>Secondly, reducing the team reduces the skill of the team. With less knowledge available to developers, the code quality will suffer tremendously.</p>
<p>With less knowledge, there&#8217;s also less knowledge-sharing. If four men can&#8217;t change a light-bulb, but five can, then it&#8217;s a single man which makes the difference. The same with scrum. Remove a man from the team and the rest of the team will struggle.</p>
<p>Possibly, the team can remain the same size, but with a reduced velocity. Personally, I find that reducing velocity has some kind of negative mental effect on the developer. Reduced velocity translates to &#8211; more tasks. More variation in tasks in turn translates into less ability to cope with the tasks. Why? Because it&#8217;s difficult for a programmer to switch from task to task. Not only does it take time, but it also requires changing gears in the brain and doing this often leads to increased stress, and lower performance.</p>
<p>A classic case: Artyom (used his real name) used to be a part of my team for the new product release. Then, due to lack of available skill in the maintenance of another product, he was moved to that. That product is developed and supported in an entirely different country. Artyom faced a constant battle with himself to find time to do actual work &#8211; he was constantly bombarded on <a href="http://www.skype.com">Skype </a>by users and other developers. He would start a task, halt due to a Skype interruption, reset his brain and work on the emergency task thrown at him, receive yet another task in a similar fashion, spend hours explaining parts of the system to other developers via chat, and in the end, he was one very unhappy and underachieving developer.</p>
<p>Artyom said to me that it was not the interruptions affecting him, nor even the explaining which he was doing every day, it was the changing between tasks, which sometimes took him half an hour of saving, deploying, documenting, downloading, merging, opening, understanding, and reading code to understand where to begin, which created the stress and anger.</p>
<p>The same effect can be achieved by reducing sprint velocity. Other, non-sprint tasks will leak in, that&#8217;s one of the points of reducing velocity. When the tasks do leak in, there&#8217;s a long process required to get the developer to actually start working on it. Then the same process to continue on the previous task. This means that hours can be lost each day, not due to actual development, but due to.. overhead.</p>
<p>Now, the second (or first?)  major problem I have found with scrum comes from task planning.</p>
<p>Different teams plan the sprints in different ways, but here&#8217;s how we do it:</p>
<ol>
<li>Stories are explained to developers.</li>
<li>Developers consider, ponder, think, and divide the story into real tasks.</li>
<li>Real tasks are discussed, understanding is reached, and the tasks are estimated, one-by-one.</li>
<li>Estimating involves each developer holding up a card to display the number of hours they think the task will take to develop, test, and document.</li>
<li>If the differences between estimates are not too great, I take an average and assign this amount of hours to the task.</li>
</ol>
<p>So, what happens when Mr Estimated Thirteen Hours ends up on a task with eight hours planned? Well, he struggles, he overspends his time, and essentially, spends thirteen hours on it. Well, that&#8217;s five hours lost from the sprint backlog. But, that&#8217;s the point, it&#8217;s not lost, it&#8217;s still in there, still estimated to some task, and someone has to pick up the slack.</p>
<p>Not only does Mr Estimated Thirteen Hours end up blowing his workload on red hours (hours spent on tasks outside planned hours), but he pushes to work faster, and his code becomes messy, his tests fail, and he doesn&#8217;t care because he has another task, failed tasks, and testing to juggle.</p>
<p>Before I continue I want to quickly point out one more flaw with the way we&#8217;re running scrum. Sometimes there&#8217;s one or two team members who simply cannot estimate, either due to mental deficiency, or due to lack of understanding of the task. As product owner, I can&#8217;t pick up on this. I don&#8217;t know if the developer truly knows how to write the appropriate code. If he says he understands what needs to be done, then I have to trust him. The only thing I can do is watch his eyes during estimation. He will be trying to see other people&#8217;s estimations before selecting his own.</p>
<p>Estimating.</p>
<p>Yes, estimating is one of the main problems we&#8217;re having. We strictly plan the sprint based on the developer&#8217;s estimates. With a small team, this can be a fatal mistake. We&#8217;ve had several failed sprints which have failed because the team was not large enough to provide enough intelligent estimations.</p>
<p>Essentially the entire release date depends on the developer estimations. If they can&#8217;t get it right, you&#8217;re boned.</p>
<p>Back to Mr Estimated Thirteen Hours.</p>
<p>He has 56 hours of work to do during the sprint. But he always, always spends 30% more time on his tasks.</p>
<p>He works 56 hours on only 40 hours of sprint tasks. That means at the end of the sprint, assuming other developers stick perfectly to the plan, there&#8217;s 16 hours of unfinished work. Scrum has no real way to manage this. And neither do we. We sit scratching our heads in the retrospective, wondering what went wrong.</p>
<p>The only solution: lower the velocity for this developer by 30%.</p>
<p>Now we have a mixed-velocity team. This is against the scrum guidelines. But it is the only solution I can see.</p>
<p>In conclusion, scrum is probably still evolving, you can learn a lot from the first year of it&#8217;s implementation at your company, and you have to be prepared to smooth-out the rules a bit, if you want this much-kneaded methodology to fit in your pie tin.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.karmaengine.com/scrum/where-scrum-goes-wrong/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The future of software development</title>
		<link>http://www.karmaengine.com/scrum/the-future-of-software-development/</link>
		<comments>http://www.karmaengine.com/scrum/the-future-of-software-development/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 13:20:15 +0000</pubDate>
		<dc:creator>Jacob</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.karmaengine.com/?p=43</guid>
		<description><![CDATA[As we become faster, more agile, and better organised thanks to Scrum, one can only try to imagine where we&#8217;ll be in another 20 years, in terms of software development.
I think we&#8217;ll be seeing more web-based applications, games, and Java developments, and less of the standalone desktop type software being created. This seems to be [...]]]></description>
			<content:encoded><![CDATA[<p>As we become faster, more agile, and better organised thanks to Scrum, one can only try to imagine where we&#8217;ll be in another 20 years, in terms of software development.</p>
<p>I think we&#8217;ll be seeing more web-based applications, games, and Java developments, and less of the standalone desktop type software being created. This seems to be the trend, anyway.</p>
<p>What this trend (whether it exists or not) means is that the move will be towards much more agile development &#8211; but what kind?</p>
<p>More on this after I&#8217;ve given it some proper thought&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.karmaengine.com/scrum/the-future-of-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
