<?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>select * &#187; teamwork</title>
	<atom:link href="http://aptoma.com/select.star/category/teamwork/feed/" rel="self" type="application/rss+xml" />
	<link>http://aptoma.com/select.star</link>
	<description>web-development, and other issues we really, really care about</description>
	<lastBuildDate>Fri, 09 Dec 2011 11:58:41 +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>Thoughts on Program Managers</title>
		<link>http://aptoma.com/select.star/2011/12/09/thoughts-on-program-managers/</link>
		<comments>http://aptoma.com/select.star/2011/12/09/thoughts-on-program-managers/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 10:51:02 +0000</pubDate>
		<dc:creator>Geir Berset</dc:creator>
				<category><![CDATA[process]]></category>
		<category><![CDATA[teamwork]]></category>

		<guid isPermaLink="false">http://aptoma.com/select.star/?p=1313</guid>
		<description><![CDATA[A good program manager (PM) is imperative for making really good software products. In Toyota, they have this role of Chief Engineer. For those who don&#8217;t know, Toyota has been the fastest growing car company most of the time since the 1950&#8242;s, and apart from having technical excellence in their product, they credit a lot [...]]]></description>
			<content:encoded><![CDATA[<p>A good program manager (PM) is imperative for making really good software products.</p>
<p><strong>In Toyota, they have this role of Chief Engineer</strong>. For those who don&#8217;t know, Toyota has been the fastest growing car company most of the time since the 1950&#8242;s, and apart from having technical excellence in their product, they credit a lot of this to the role of the Chief Engineers. The Chief Engineer is a guy that would embed himself with potential customers of the new design. If he were to design a car for carpenters, he&#8217;d put on his carpenter pants and get all carpenty. Usually he&#8217;d discover a lot of design details needed a carpenter. Stuff like double (or triple, or quadruple) coffee holders, a flat dash-board for throwing documents on and to write upon, doors that swing up really wide, to expose the sound system speakers to the outside workers, and so forth. Basically a lot of stuff an office rat, or a technical engineer wouldn&#8217;t dream of.</p>
<p>This approach, combined with the excellent technical quality and their unprecedented production effectiveness, created a lot of success for Toyota.</p>
<p>We&#8217;ve chosen the little more cheesy title &#8220;Program manager&#8221; for our Chief Engineers. We like cheesy, because it&#8217;s so cheesy. (Actually, people don&#8217;t like it).</p>
<p>With 7 people and 3 products, (Aptoma anno 2010) everybody is a PM. And everybody is a developer. And everybody is a janitor. And so on. The lines between developers, visionaries and managers are as blurry as they should and have to be. Everybody is taking turns doing anything, and this is part of the fun of being in a small company. Great stuff.</p>
<p>It doesn&#8217;t scale.</p>
<p><strong>We&#8217;re now 13 people in Aptoma, 10 of which are developers</strong> (and we&#8217;re looking for more talent). With more customers and products, development and maintenance gets increasingly complex, both in coding and in managing. And so we need more focus time on development and on program management as two different, but mutually dependent, exercises.</p>
<p>We now have established formal program management for two of our products (front-page editing, and article- production and layout) and one for our elastic cloud services (streaming, hosting and video transcoding for the media industry).</p>
<h3 dir="ltr">What Does a Program Manager do?</h3>
<p>In short, there are five main responsibilities to the PM.</p>
<ol>
<li>Serve as the customer advocate</li>
<li>Write functional specs</li>
<li>Keep track of progress</li>
<li>Hold team reflections.</li>
<li>Maintain road-map.</li>
<li>Remove obstacles for the team.</li>
</ol>
<h3 dir="ltr">How?</h3>
<p>Seems so simple from the list above, but there is a lot to this role.</p>
<p><strong>1. Serve as the customer advocate.</strong> In order to serve as the customer advocate, you need a lot of information about what to advocate. You need to talk to users, you need to empathically understand them, and you need to dear to expose yourself to irritated users having problems. And you get to talk to those that are really, really happy and has had the time to reflect and envision new stuff. We aim to do this a lot for the same reasons that the Chief Engineer do in Toyota. This can be done by checking in at the customer, and saying &#8220;what&#8217;s up!&#8221;. Sounds easy, but the tricky part of this is that if you have a crappy product, they&#8217;ll only tell you about how crappy your product is. So get your bug-list to zero first. As such, the PM has to coordinate input from various sources, and streamline this information to use it to advocate the customer needs to the rest of the dev-team.</p>
<p><strong>2. &#8230; and that&#8217;s where the functional spec comes in.</strong> Based on the deep understanding of customer needs, the feedback from support, from developers, from just about anyone with a stake in your product, the PM will propose changes, often through a written functional spec. The functional spec will describe an idea for improvement or extension to the product. If the functional spec contains wire-frames (in HTML, or just drawings) it can even be tested on potential users for early feedback.</p>
<p><strong>3/4. Keep track on progress, and hold reflections.</strong> Once you say GO to a great development team, they will go into &#8216;get-shit-done-mode&#8217;, and won&#8217;t stand for any interruptions. That&#8217;s why the PM is keeping noise away from the team by being the customer proxy, gathering input, writing the next functional spec in parallel. And if anyone is to know anything about what is going on, someone must have the job of saying &#8220;Hey! How are things going?&#8221; and &#8220;Hey! Do you have what you need?&#8221;. Developers in &#8216;get-shit-done-mode&#8217;, will first bite your hand off, but everybody appreciates to pause and reflect from time to time, and to be able to report achievements.</p>
<p><strong>5. Maintain roadmap.</strong> This is the wet dream for every bureaucrat. The internal road-map needs to contain information about technical challenges, resource availability, timing, deadlines, suggested and affirmed projects and so forth. Someone needs to coordinate all this. Presto!, the PM is there to help.</p>
<p>So how did anyone in Aptoma find the time for all of this when we didn&#8217;t have formal PMs? They didn&#8217;t. But these things just kind of works, to a point, when the company is small. We&#8217;ve exceeded this limit now, and this, our first small step towards dev-teams’ separation of concern is here.</p>
<p><strong>6. Remove obstacles</strong>. The PM will, by nature of the role, gain overview of the work flow, and during reflections get insight into obstacles that are holding the team back. This can be recurring problems, communication challenges, and so forth. The PM will work to remove such obstacles, to make work flow smoothly.</p>
<h3 dir="ltr">Possible challenges</h3>
<p><strong>Boring maturity</strong>. We have to fine-tune this role for it not to become a boring formal meeting process. And we need to acknowledge that we&#8217;re not Toyota. Yet. We&#8217;re still a very small company, and a lot of people do a lot of different stuff. A job description any cleaner than your average pile of laundry still does not exist at 13 employees.</p>
<p><strong>Conflict of interest</strong>. There’s been internal developer outcry for PMs for the last few months. And as expectations are high, it might be natural to think of a PM as a silver bullet &#8220;Ah, nice, here comes someone to do all stuff that is boring to me, so I can do only the fun parts. Woho!&#8221;. Chances are, however, that some work is fun for both PMs and developers. As such, fun vs. boring is not a well defined separation of concern. For separation of roles to work, one has to consider intellectually (what works, and what does not), as opposed to just consider emotionally what belongs where. The goal is better software and services for our customers, we must keep in mind.</p>
<p><strong>Loss of agility</strong>. If the PM (the bureaucrat that he is) goes all-in on on functional specs, and basically tries to solve the entire problem of creating new functionality/products there, this might lead to over-planning causing unnecessary delays and loss of agility, innovation and flexibility. Knowing programmers quite well, I&#8217;m quite sure he&#8217;ll get a friendly (or even hostile) kick in the butt if this occurs.</p>
<h3 dir="ltr">Expected Benefits</h3>
<ol>
<li>More time for developers to focus on development.</li>
<li>Deeper empathical understanding of our customers needs.</li>
<li>Better and more holistic planning; one guy gets access to all the input and sees the whole picture.</li>
<li>Better coordination to strategy; PMs will report to the director, which makes it easier to provide feedback on direction, and to fine tune strategy.</li>
</ol>
<h3>What We Aim to Preserve</h3>
<ol>
<li>The autonomy of teams; As the director gets higher quality reports, and as planning gets well managed, it might be tempting for top management to mingle more and leave less decisions to the team. This can be harmful.</li>
<li>Developer ownership of ideas; The point of program management is not to shield the dev-team completely from information and customer concerns, but to structure and wisely involve at the right time. It&#8217;s a balancing act.</li>
<li>A peer team-structure; PMs don&#8217;t need ties. They&#8217;re embedded in the team. Authority comes from professional and personal qualities, not from formalities.</li>
</ol>
<p>PS! I say “he” not because we don’t think women can be great developers or PMs, but because this is a note about us. All PMs and developers are still men in this hot dog shop. Don’t let that scare you from contacting us, if you’re a woman.</p>
]]></content:encoded>
			<wfw:commentRss>http://aptoma.com/select.star/2011/12/09/thoughts-on-program-managers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Company self-examination</title>
		<link>http://aptoma.com/select.star/2011/02/19/company-self-examintaion/</link>
		<comments>http://aptoma.com/select.star/2011/02/19/company-self-examintaion/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 17:15:30 +0000</pubDate>
		<dc:creator>Geir Berset</dc:creator>
				<category><![CDATA[process]]></category>
		<category><![CDATA[teamwork]]></category>
		<category><![CDATA[improvement]]></category>
		<category><![CDATA[retrospect]]></category>

		<guid isPermaLink="false">http://aptoma.com/select.star/?p=1291</guid>
		<description><![CDATA[This week we gathered the entire company (first time, ever) for a couple of strategy sessions. We ended up doing a lot of reflective exercises, talking a lot about how we work. Below are the results. Identifying our own weaknesses Reflections were very open hearted, which made it a very useful exercise. Not enough “slack” [...]]]></description>
			<content:encoded><![CDATA[<p>This week we gathered the entire company (first time, ever) for a couple of strategy sessions. We ended up doing a lot of reflective exercises, talking a lot about how we work. Below are the results.</p>
<h3>Identifying our own weaknesses</h3>
<p>Reflections were very open hearted, which made it a very useful exercise.</p>
<h4>Not enough “slack” in the system</h4>
<p>This surfaced as a root cause for many of the negative caracteristics we were able to find about ourselves. We’re always pressured for progress on all fronts, by customers, by our own ambitions and by the need for more revenue to keep going. And even though this tension between where we are and where we’d like to be drives us forward at breakneck speeds, it does have some negative side-effects.</p>
<p>a) “Sharpening the saw” Not enough time is spend educating ourselves.<br />
b) Sharing: It feels like disturbing each other when we need to get help or want to share.<br />
c) At times, lack of slack limits our capacity to jump straight onto new important challenges.</p>
<p>Solutions to this problem are many. In many ways it’s a management problem. But solutions rarly have only one single solution. As the management problem might have schrunk in the past years, the culture for pushing the limits of the machinery is there still.</p>
<p>We need to</p>
<ul>
<li>Take the time needed to sharpen the saw. You don’t get more time, you take it.</li>
<li>Drop projects that are not core business.</li>
<li>Be clear on when we are available, and when we’re not.</li>
<li>Insist stronger to hand over projects to customers’ internal development teams.</li>
<li>Hire more people.</li>
</ul>
<p>And please note that the problem is one of ambition, not of sloppiness &#8212; we&#8217;re not working hard due to excessive amounts of bugs. We&#8217;re out there pushing forward.</p>
<h4>Not enough sharing between projects</h4>
<p>Lack of sharing is not always a problem. (Creating shared dependencies between products can be very limiting to innovation. Google’s Eric Scmhidt knows this, as he recently was quoted “I learned a long time ago, <a href="http://android.firstblogfirst.com/2011/02/16/googles-eric-schmidt-on-androids-future-html5-and-more/">don’t try to force technology to be merged</a>.” And thus independency is a strength, too) However, there are ways to increase sharing and still keep the benefit higher than the cost.</p>
<p>We’re always on the lookout for ways to share code and technology without creating limiting dependencies. We’ve had several unsuccesful attempts at this in the past, but we’re getting better. We’re a bit concerned that we’ve been scared by our earlier failures, but we’ve now made a concious decision to keep up the dialogue of a possible “loosely coupled” sharing architecture.</p>
<p>We have a lot to benefit from more knowledge sharing, though. Learning more about “who knows what about what” we believe will enable us to improve our ability to pull knowledge when needed. Combined with fixing the &#8220;lack of slack&#8221;-problem above, we hope that this will trigger many an interesting conversation in the time to come.</p>
<p>We’re forcing ourselves to share more information such as “I’m going to be working on caching technologies for the next two weeks. Let me know if you have anything to share.” and then to be sharing the results findings in each projects regularly (i.e. every two months in an interactive whiteboard-session)</p>
<h4>Our web-site stinks</h4>
<p>Being quite proud of our individual and collective capabilities, we like to think of ourselves as a Ferrari-engine inside a Volkswagen. Thus it’s time to do something serious about the way we present ourselves. That does not mean that you’ll be seeing us coding in suits any time soon, but we’ll definitely have to do something about our web-site. We’re currently on the lookout for graphical designers that can understand our business and help with design and profiling. Let us know if you have any tips. Pimp my <a href="http://aptoma.com">http://aptoma.com</a>. We need it.</p>
<h3>Other caracteristics</h3>
<p>As you can see we’re more interested in what we can improve, than what we’re good at already, and we do think we’re a bit hard on ourselves. Some caracteristics have negative side-effects, and some have positive, but most have both positive and negative aspects. Below are some caracteristics with good side-effects, with a few ones with negative side-effects thrown in for good measure.</p>
<ul>
<li>We’re sometimes a bit hard on ourselves.</li>
<li>We’re very agile &#8211; Customers not accustomed to our style sometimes find that this makes us seem unpredictable &#8212; we’re not commiting for distant detailed roadmaps, as we’re adapting to the ever changing future as it unfolds. We see this as a strenght, and customers tend to do so, too, when they’ve seen us in action for a while.</li>
<li>We like doing everything ourselves &#8211; You don’t have to look further than our web-site to understand that this is not always good. We learn a lot from coding our own sites, frameworks and tools, but sometimes the time has come to admit that we have learned enough and should move on to build on other’s work.</li>
<li>We’re very focussed &#8211; Focussing means saying no to something. Customers don’t always love this. But we didn’t forget or ignore you, we just focussed on something more important for the time being. It’s our job to care for customer needs in the long-haul, also. When we get to your problem, it will also get our undivided attention.</li>
<li>We don’t communicate enough internally.</li>
<li>We think that exposing ourselves to customer feedback is a strenght, but sometimes it becomes too much and it ends up limiting our work.</li>
<li>We’re very clear on what we value in our software: maintainability, usability/productivity and performance.</li>
<li>We’re good at creating cheap proof of concepts before we solidify into production code, but sometimes we move on too fast which creates a bit more <a href="http://en.wikipedia.org/wiki/Technical_debt">technical debt</a> than necessary. But we’re very concious about our technical debt, and we have a track record for paying it down before it is too late.</li>
</ul>
<p>During these strategy sessions we also spent a great deal of time talking about the future of large scale new media publishing, and our role in it. We’re very grateful and excited about our increasing opportunity to play an important role in the way ahead for innovative new media publishers.</p>
<p>And, oh, there’s one solution to all the problems here that we have yet to discuss. We could hire you and put your great skills to good use. <a href="http://aptoma.com/career">Join us in our relentless quest for personal and collective productivity</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://aptoma.com/select.star/2011/02/19/company-self-examintaion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>3 More Industry Problems</title>
		<link>http://aptoma.com/select.star/2010/10/31/3-more-industry-problems/</link>
		<comments>http://aptoma.com/select.star/2010/10/31/3-more-industry-problems/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 22:13:10 +0000</pubDate>
		<dc:creator>Geir Berset</dc:creator>
				<category><![CDATA[process]]></category>
		<category><![CDATA[teamwork]]></category>

		<guid isPermaLink="false">http://aptoma.com/select.star/?p=1260</guid>
		<description><![CDATA[Today I read an excellent and, as always, emotional journal paper by Tom Gilb &#8212; the measure guy of software &#8212; entitled &#8220;What&#8217;s Wrong with Requirements Specifications? An Analysis of the Fundamental Failings of Conventional Thinking about Software Requirements, and Some Suggestions for Getting it Right&#8220;. (Download PDF) It got me thinking (once again) about [...]]]></description>
			<content:encoded><![CDATA[<p>Today I read an excellent and, as always, emotional journal paper by <a href="http://twitter.com/imtomgilb">Tom Gilb</a> &#8212; the measure guy of software &#8212; entitled &#8220;<em><strong>What&#8217;s Wrong with Requirements Specifications</strong>?</em> <em>An Analysis of the Fundamental Failings of Conventional Thinking about Software Requirements, and Some Suggestions for Getting it Right</em>&#8220;. (<a href="http://www.gilb.com/tiki-download_file.php?fileId=443">Download PDF</a>)</p>
<p>It got me thinking (<a href="http://aptoma.com/select.star/2010/01/03/3-major-problems-with-the-software-industry/">once again</a>) about all that is wrong with the software industry. I now have even more to report. Everywhere I look, I see a mess. It is important to acknowledge that the industry is in its infancy. Acknowledging this, you can confidently and profitably dedicate a lot of time to work <em>on</em> the system, not just <em>in </em>the system. Because the system is broken by default, and will remain so for many decades to come, I believe.</p>
<h3>3 Industry Problems</h3>
<p><strong>1. Requirements are not well defined</strong>. The main problem, as I see it, is that we&#8217;re mixing means and ends, as Gilb puts it. We&#8217;re talking too much about what we want, and not so much the background for that wish, which is what we should be specifying. If we know <em>why</em> you want something (i.e. business strategy, broken into objectives), we can use our experience to devise better solutions. Gilb proceeds to explain how to quantify and measure requirements. He&#8217;s right to say that we should, but he&#8217;s just way ahead of us, and we need to fix the way we specify requirements before we can start measuring anything. His point remains valid.</p>
<p><strong>2. Factory organization</strong> &#8211; Separated and specialized functional units passing work between them in a large, efficient factory organization is doomed to fail (planning &amp; specification, design, coding, QA, bugfixing). Such disregard for tacit knowledge and basic <a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">motivational psychology</a> should not exist. Economies of scale in development (and services) is a myth. This has been tested and has failed horribly (think <em>waterfall</em>). It still happens all the time, and in many industries, not just the software industry. Probably also where you are right now. The closest metaphor I can think of is a kindergarden separated into &#8220;baby-feeders&#8221;, &#8220;diaper changers&#8221; and &#8220;comforters&#8221; etc. Think holistically &#8212; the real value delivered in in a kindergarden are not merely the practical operations. By contrast it is the safety and relationship developed with a few adults that the child will value.</p>
<p><strong>3. Budgeting</strong> &#8211; Budgeting is usually a waterfall process in disguise. Budgeting was a tool developed for manufacturing, and should have remained so. But, to a carpenter, every problem looks like a nail, and so budgets are for manufacturing, service organizations and even product development companies. We&#8217;re not in manufacturing. Don&#8217;t adapt their tools. And, yes, this includes the Toyota Production System. Watch out, they&#8217;ll make you decide in your budgets what to do for the next year, and hold you to your promises. They&#8217;ll even scientifically measure this. Budgets forces you to spend the best part of each autumn guessing and assuming while you really should be out there gaining knowledge about emergent challenges, and adapting to them. Time is scarce &#8212; don&#8217;t waste it budgeting.</p>
<h3>What does the Industry Think are the Solutions?</h3>
<ol>
<li>Start XP/Scrum/Lean-teams</li>
<li>Start XP/Scrum/Lean-teams</li>
<li>Start XP/Scrum/Lean-teams</li>
</ol>
<p>John Seddon says it well when he states that everything needs to be projects and tools for us westeners. &#8220;Toolheads&#8221;, he calls us. I believe he&#8217;s got a point. Even Lean, originally The Toyota System, has been subsumed into tools and projects. Every organization has got a lean manager, or a lean team these days &#8212; fixing problems <em>functional department by functional department </em>(oh, the irony) by introducing some tools and running some projects, and then moving on. An A3-reporting there, a daily scrum here, a pull system there, 80% code coverage over there, and so it goes. Basically they are piling new tools and projects onto a broken framework, instead of building the capacity to change the system from the inside by getting managers out there, getting knowledge, working <em>on</em> the system. Get away from budgets, spreadsheets, resource plans and other guesswork &#8211; get knowledge and let&#8217;s use it to improve the way we work.</p>
<p>The current industry solutions only have us doing the wrong thing better. <strong>There&#8217;s nothing more wasteful than doing well what should not be done at all.</strong></p>
<h3>What are the Real Solutions?</h3>
<p>We need to acknowledge that the way work is organized is broken and start addressing it from the core. What makes this challenging, is that the entire organization needs to be in on this, not just the <em>lean tools team</em> or the new empowered Scrum team. These teams are usually not empowered to change the system. Start by getting that power. Talk to your management. Talk to your CEO. Be patient. Discuss. Elaborate. Start small, but do it every day.</p>
<p>You need to design your organization towards challenges (<em>think in terms of what you are solving for your customers, and design against that</em>), rather than just defaulting to functional departments with their meaningless budgets and policies.</p>
<p>This means organizing in cross-functional teams empowered to change the way work is done, with management as a support function embedded into the work. Everyone&#8217;s goal becomes to establish good flow in how we solve real problems for real customers in the most effective way possible.</p>
<p>This is when magic starts to happen, and the fun kicks in. Solving a real problem for a real customer, and actually being there to witness it, is motivating and stimulating. Communicating directly and related to real challenges, not just via plans, sprint-/project backlogs, meetings, reports, Gantt charts and budgets.</p>
<p>Freed from this burden we can spend time improving the way we work, just a little, but every single day. It&#8217;s really quite simple. It&#8217;s fun. It&#8217;s motivating. And not the least, it is very, very profitable. And it is sustainable. It scales.</p>
<p>No more factories with human cogs, no more economies of scale. We all want to be a <a href="http://www.amazon.com/Linchpin-Are-Indispensable-Seth-Godin/dp/1591843162">linchpin</a>.<strong> We need economies of flow.</strong></p>
<p>Anyway, this is how we&#8217;re designing our organization, and it seems to work very well. Come to us and take part of this journey. <a href="http://www.finn.no/finn/job/fulltime/object?finnkode=24912234">We&#8217;re hiring in Oslo and Gothenburg</a>. (Follow the author <a href="http://twitter.com/geirber">@geirber</a> or the company <a href="http://twitter.com/aptoma">@aptoma</a> on twitter, or through <a href="http://feeds.feedburner.com/aptoma/selectstar">RSS</a>)</p>
<h3>References</h3>
<ol>
<li><a href="http://www.newsystemsthinking.com/article_details.asp?ID=49">Why Do We Believe in Economy of Scale</a>? Article on Bryce Harrison inc.</li>
<li><a href="http://www.amazon.com/Linchpin-Are-Indispensable-Seth-Godin/dp/1591843162">Linchpin</a> &#8211; Book by Seth Godin, inspired by the same factory problem</li>
<li><a href="http://aptoma.com/select.star/2010/01/03/3-major-problems-with-the-software-industry/">3 Major Problems with the Software Industry</a> (Select *)</li>
<li><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">The surprising truth about what motivates us</a> (YouTube)</li>
<li><a href="http://www.gilb.com/tiki-download_file.php?fileId=443">What&#8217;s Wrong with Requirements Specifications</a> (PDF)</li>
<li><a href="http://vimeo.com/4670102">Cultural Change is Free</a> (John Seddon on Vimeo video)</li>
<li><a href="http://en.wikipedia.org/wiki/Systems_thinking">Systems Thinking</a> (Dry, but good, Wikipedia stuff)</li>
<li><a href="http://www.thesystemsthinkingreview.co.uk/index.php?pg=18&amp;utwkstoryid=186">Rethinking Lean service</a> (Entertaining Podcast)</li>
<li><a href="http://www.thesystemsthinkingreview.co.uk/index.php?pg=18&amp;utwkstoryid=177">Economies of scale &#8211; It&#8217;s a myth</a> (Entertaining Podcast)</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://aptoma.com/select.star/2010/10/31/3-more-industry-problems/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Limit Work to Capacity</title>
		<link>http://aptoma.com/select.star/2010/04/22/limit-work-to-capacity/</link>
		<comments>http://aptoma.com/select.star/2010/04/22/limit-work-to-capacity/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 19:50:18 +0000</pubDate>
		<dc:creator>Geir Berset</dc:creator>
				<category><![CDATA[Monday School]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[teamwork]]></category>

		<guid isPermaLink="false">http://aptoma.com/select.star/?p=1233</guid>
		<description><![CDATA[Hard work does not pay off. At least not if your ultimate goal is to improve at what you do. And not if what you do is quality product development. In that case you need to build in slack for learning into the system. You want everyone to have time for sharing, improving and learning [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://cheese-burger.net/"><img class="alignright size-medium wp-image-1248" title="Picture 1" src="http://aptoma.com/select.star/wp-content/uploads/2010/04/Picture-1-300x179.png" alt="" width="300" height="179" /></a><a href="http://olvemaudal.wordpress.com/2010/02/12/hard-work-does-not-pay-off/">Hard work does not pay off</a>. At least not if your ultimate goal is to improve at what you do. And not if what you do is quality product development.</p>
<p>In that case you need to build in slack for learning into the system. You want everyone to have time for sharing, improving and learning continuously, and you want to be able to come home from work with energy to pursue your goals for personal skill development even further.</p>
<p>It&#8217;s great fun to be good at what you choose to spend your life doing.</p>
<p>Since the primary raw materials in software product development are skills and intellect, rapid learning is the prime goal and the capital for product development. Fail to invest in raw materials for your business, and you&#8217;ll soon run out of stock. Don&#8217;t <em>allow</em> for time to learn, rather, <em>require</em> it.</p>
<h3>Running a system at 100% yields all sorts of problems.</h3>
<p>Symptoms include</p>
<ul>
<li>You stop talking to each other. &#8220;Sorry, can&#8217;t help, have to go do this thing that is  really urgent&#8221;</li>
<li>You start building technical debt. &#8220;If I just skip to write that test (it&#8217;s really hard to write), then I can save 2 hours today to get to the next thing I have to do.&#8221;</li>
<li>Shallow bug-fixing. &#8220;Need to fix this bug real fast, in order to get the other 4 bugs done, too! No time for digging further&#8221; Root cause analysis and regression testing get skimped on.</li>
<li>Useful, although sometimes inconclusive and somewhat directionless, discussions plainly stops happening.</li>
<li>Stress activates your lizard brain, which numbs the rational being. You are in survival mode.</li>
<li>Work gets less inspiring and fun, which slows things down. Inspiration is high-octane fuel.</li>
<li>People get exhausted, and energy-level is low during, and after work hours. You need to &#8220;relax&#8221; on Facebook at work and in front of the TV at home, instead of doing inspirational learning.</li>
</ul>
<p><a href="http://aptoma.com/select.star/wp-content/uploads/2010/04/congestion.jpg"><img class="alignnone size-full wp-image-1243" title="congestion" src="http://aptoma.com/select.star/wp-content/uploads/2010/04/congestion.jpg" alt="" width="550" height="306" /></a></p>
<p style="text-align: right;"><span style="color: #808080;">(Picture from </span><a href="http://en.wikipedia.org/wiki/File:Moscow_traffic_congestion.JPG"><span style="color: #808080;">Wikimedia commons</span></a><span style="color: #808080;">)</span></p>
<p>If you have trouble grasping the concept, picture a congested highway. If you remove a small percentage of the cars, you get a magnitude of improvement in throughput and speed. <a href="http://en.wikipedia.org/wiki/Traffic_congestion">This is a fact</a>.</p>
<p>Did you ever try to squeeze a washing machine 100% full? No clothes get cleaned. Remove 10 or 20% of the clothes, and you have a winner.</p>
<h3><strong>Don&#8217;t maximize utilization.<br />
Build in time for learning, improving and sharing.</strong></h3>
<p>If you, as we have been, find yourself in this mess. There are several ways to get out of it.</p>
<ol>
<li><strong>Say no.</strong> If you never say no, you don&#8217;t have a strategy &#8212; say no to the least important stuff. Saying no is hard, scary and extremely useful.</li>
<li><strong>If you work for a consultancy firm, give up</strong>. Incentives for maximizing utilization is too high in consultancy companies, as they get paid for &#8220;productive hours&#8221; only. Quit your job, and go to work in a product development company, or a skilled in-house team. Anything but most consultancy firms, they will cannibalize you.</li>
<li><strong>Scale up capacity to meet demand</strong>. What can I say, <a href="http://aptoma.com/career">we are hiring</a>.</li>
</ol>
<h3><strong>Quantified</strong></h3>
<p>This is no science, but if I would be forced to put some numbers on this, I&#8217;d say that:</p>
<ul>
<li>Build in approximately 20% learning/sharing time during normal work hours. Yes, that&#8217;s one whole day a week. We use it for our <a href="http://aptoma.com/select.star/category/monday-school/">monday school</a>, impulsive discussions, reading, friday meeting (our arena for general discussions on processes) and blogging, to mention some activities.</li>
<li> If you want, you can probably &#8220;work&#8221; 60 hours a week or more without any danger of burning out, but <em>only as long as</em> that time is spent balanced and having fun, learning and improving/being productive &#8212; and only if personal situation allows for it without sacrificing time spent on other important values, like your kids.</li>
<li>Don&#8217;t build overtime into your standard operating procedures. Required overtime doing &#8220;productive&#8221; work should be the rare exception, not the default.</li>
</ul>
<p>Find a sustainable pace where you are balancing learning, improving, being productive and all of the time having fun. That&#8217;s an important ingredient in the recipe for success.</p>
<p>By the way, did I mention that <a href="http://aptoma.com/career">we&#8217;re hiring</a> or that <a href="http://aptoma.com/career">we&#8217;re hiring</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://aptoma.com/select.star/2010/04/22/limit-work-to-capacity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No Scrum, No More</title>
		<link>http://aptoma.com/select.star/2010/02/11/no-scrum-no-more/</link>
		<comments>http://aptoma.com/select.star/2010/02/11/no-scrum-no-more/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 23:11:59 +0000</pubDate>
		<dc:creator>Geir Berset</dc:creator>
				<category><![CDATA[process]]></category>
		<category><![CDATA[teamwork]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[goals]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[retrospect]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[sprint]]></category>

		<guid isPermaLink="false">http://aptoma.com/select.star/?p=1158</guid>
		<description><![CDATA[After listening to Olve Maudal at the Lean Meetup in Oslo yesterday, and after reading some of his tweets today (@olvemaudal) I realized that we never informed our readers that we are not doing Scrum anymore. I don&#8217;t think we have for 9 months or more. We were quite elaborate, if not evangelical, about our [...]]]></description>
			<content:encoded><![CDATA[<p>After listening to Olve Maudal at the Lean  Meetup in Oslo yesterday, and after reading some of <a id="z1-s" title="his tweets today" href="http://twitter.com/olvemaudal/status/8899445418">his tweets today</a> (@<a id="trp5" title="olvemaudal" href="http://twitter.com/olvemaudal">olvemaudal</a>)  I realized that we never informed our readers that we are not doing  Scrum anymore. I don&#8217;t think we have for 9 months or more. We were quite  elaborate, if not evangelical, about our experiments with it <a id="f_ph" title="here on  this blog" href="http://aptoma.com/select.star/?tag=scrum">here on this blog</a>, so I figured it&#8217;s over due to let you  know.</p>
<p>It&#8217;s official: <strong>We&#8217;re not doing Scrum anymore.</strong></p>
<p>I  will take the time to elaborate on why, and I&#8217;ll reflect on what we&#8217;ve  learned from our experiences.</p>
<p><a href="http://aptoma.com/select.star/wp-content/uploads/2010/02/scrum-period-overview1.jpg"><img class="alignnone size-full wp-image-1166" title="scrum-period-overview" src="http://aptoma.com/select.star/wp-content/uploads/2010/02/scrum-period-overview1.jpg" alt="" width="550" height="205" /></a></p>
<h3>Why are we not scrumming?</h3>
<p>The  shortlist:</p>
<ol>
<li><strong>Iterations were too long</strong> &#8211; It would  sometimes feel like a waterfall in miniature. Reality for most development teams is that circumstances change constantly, and developing the capacity to adapt to these changes are more important than planning iterations carefully, which is just a form of guesswork.</li>
<li><strong>Too much  overhead</strong> &#8211; Sprint planning felt a bit forced. We had to decide what  to do for days or weeks to come, and ended up with requirements churn.  Beyond a certain point during planning, we went into congestion, and  stopped caring about the details.</li>
<li><strong>Our sprints are too diverse</strong> &#8211; Sprint goals ended up  so diverse sometimes that we ended  up more often than not with the sprint goal of &#8220;<em>Finish all tasks</em>&#8221; which  was a quite uninspiring goal. (We tried very hard to create good sprint goals)</li>
<li><strong>Demos  not often enough</strong> &#8211; We need to show off the feature we just made <em>right now</em>,  not in 14 or 30 days at the demo. That is way to late for us. Demoing should  be an integral part of each feature or improvement you make. You need to  be close to, and intimate, with real users. If we had investors or any other formal  committee of sponsors that  needed to approve everything we did, we would  see the use of such &#8220;demo roundups&#8221; at regular intervals.</li>
<li><strong>Too long release  cycles</strong> &#8211; The scrum process batches a lot of changes, improvements,  bugfixes and new features into periodical releases. We are working on <a id="j2e6" title="continuous deployment" href="../2010/01/21/notes-on-continuous-deployment/">continuous deployment</a> with a  steady stream of product improvements, which allows for more predictable releases and better fail-tolerance.</li>
<li><strong>&#8220;Scrum is just the easy parts of XP&#8221;  &#8211; </strong>It&#8217;s a quote from Kent Beck, although he does not like to be quoted on that one.  This is why most are doing Scrum in combination with XP of course. I think you in many cases are  better off with XP without Scrum, but that&#8217;s another story. We&#8217;re not  doing XP in its purest form, either. Even though  XP has much stricter coding practices, XP also has its limitations. The  <a id="l.fx" title="lean startup movement" href="http://www.startuplessonslearned.com/2008/09/lean-startup.html">lean startup movement</a> (which  Kent Beck himself seems to be quite interested in) complements the  weaker parts of XP &#8212; the customer feedback part, especially in the  initial phases of product development.</li>
</ol>
<p>You might see a  pattern here: We&#8217;re still doing most, or all, scrum practices, just more  often and in smaller chunks. This brings us closer to Lean.</p>
<h3>What  did we learn from it?</h3>
<p><strong>You should have a Product Backlog</strong>, and  it should be a very simple sortable list. The emphasis should be on  keeping it short, however. A long list of features becomes an  administrative overhead. We found ourselves sifting through much of the same  tasks from sprint planning to sprint planning. Too much got captured in  the sprint backlog. We are still using product backlogs actively.</p>
<p><strong>You  should hold sprint planning meetings.</strong> The problem with the  scrum-format of it is that it has more emphasis on creating a plan up  front (i.e. the waterfall comparison), than it has on the planning  itself. If planning is a monthly activity (or bi-weekly, or whatever  your sprint length is in scrum), you end up reading your plan more than  you spend time planning. We find that planning is at its best a  continuous, on demand, activity. Do more of it, often, but in smaller  chunks, and keep less of it lying around. I will have to agree with <a id="lk75" title="the Dwight" href="http://en.wikipedia.org/wiki/Dwight_D._Eisenhower">the Dwight</a> on this one : <em>Plans are nothing;  planning is everything.</em></p>
<p><strong>Daily scrums solves a non-existing  problem</strong> &#8211; I&#8217;m sure that it is not hard to find team that would  benefit from daily scrums. If you are such a team, chances are you are  not communicating enough. We find that by hanging out on the project  IRC-channel doing continuous micro-coordination and sharing information, and by hooking up on Skype to discuss challenges and  problems on-screen <em>as they arise</em> we have nothing left to coordinate or  discuss on the daily scrums. Everyone is in the loop on what is happening.</p>
<p><strong>Retrospects  are pure beauty.</strong> Again, the problem with scrum for us is not that it is has  bad practices (it has the best of practices, actually). The problem is  that it is performed to seldom to have the desired effect. Retrospect is  not an activity, it is a mindset, and has to permeate everything you  do, and should be done on a continuous basis. Ask these questions about  every little project, task and experiment you run. What went well? What  could be better? What will I focus on improving? It&#8217;s key to learning, and learning is essential.</p>
<h3>Under what  circumstances would we consider scrum?</h3>
<p>If we ever find ourselves in a  multi-team environment with quite large teams (5-10 per team), with  sponsors that needed formal updates and demos, we would be sure to  consider both scrums and scrum of scrums.</p>
<h3><strong>So, was all our  Scrumming just a waste of time?</strong></h3>
<p>No way. It was a learning  experience.</p>
<p>Never forget this: <strong>There is no silver bullet</strong>.  You should try different stuff, be critical and analytical in the  process, ask why to just about everything, and you will learn a lot. Shed each practice that fails to materialize into concrete value for your development process. In the end, no process formalities will save you, your  diverse experience will.</p>
<h3>What will we do differently?</h3>
<p>We will  continue to draw inspiration from Scrum, Lean, XP, Lean Startup,  Customer Development, Continuous Deployment, etc. But instead of changing ourselves to  fit the process (as was much the case with our scrum-efforts), we will look at the core of their ideas, extract their  essence and see how they could apply to our existing and intuitive way  of doing things;</p>
<p><em><strong>If being a keen student of processes and  development theory has taught us only one thing, it is that we should  trust our gut feeling, our sense of what is purposeful and what is common  sense, and that most of our current practices are worth keeping, and improving. </strong></em></p>
<p>I advise you to try to improve the quality of how  your team already, and intuitively go about doing the work. Do not change the way you work entirely in an attempt to magically  achieve quality and speed. This way you can better preserve what you already got figured out, and at the same time be improving continuously.</p>
<h3>In plain words, what are we doing now?</h3>
<p>We still do a lot of the scrum practices. We just do them more often, and in smaller chunks. You might even say continuously, to some extent. We have learned to cherish planning over plans, and a retrospective mindset over bi-weekly formal retrospects. We write less plans, we take less notes. Communication flows more freely instead of formally in batches.</p>
<p>We get more done, and with increased quality, and we also have Scrum to thank for it, but definitely not only Scrum.</p>
<p>One of our biggest ongoing project nowadays is our establishment of <a href="http://aptoma.com/select.star/2010/01/21/notes-on-continuous-deployment/">Continuous Deployment</a> practices, and all the discipline that goes with such a strategy. (It requires some coordination when you have servers deployed all over Europe, as we do) You will need to optimize the entire value stream to achieve this. We&#8217;ll keep you posted on how it evolves, and the benefits our customers and we reap from it.</p>
]]></content:encoded>
			<wfw:commentRss>http://aptoma.com/select.star/2010/02/11/no-scrum-no-more/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Notes on Continuous Deployment</title>
		<link>http://aptoma.com/select.star/2010/01/21/notes-on-continuous-deployment/</link>
		<comments>http://aptoma.com/select.star/2010/01/21/notes-on-continuous-deployment/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 22:00:50 +0000</pubDate>
		<dc:creator>Geir Berset</dc:creator>
				<category><![CDATA[process]]></category>
		<category><![CDATA[teamwork]]></category>

		<guid isPermaLink="false">http://aptoma.com/select.star/?p=1073</guid>
		<description><![CDATA[Scenario: A customer has a problem with your software. His questions makes you think and you get an idea for a feature improvement. A good one! Act on it. Plan it Code it Test it Commit it Deploy it Nothing out of the ordinary, it seems. The seemingly new thing about continuous deployment is that [...]]]></description>
			<content:encoded><![CDATA[<p>Scenario: A customer has a problem with your software. His questions makes you think and you get an idea for a feature improvement. A good one! Act on it.</p>
<ul>
<li>Plan it</li>
<li>Code it</li>
<li>Test it</li>
<li>Commit it</li>
<li>Deploy it</li>
</ul>
<p>Nothing out of the ordinary, it seems. The seemingly new thing about continuous deployment is that we remove all the waiting in between each of these steps. That is, we don&#8217;t batch changes before to testing them. You test immediately what you just coded. You commit it. Not to a branch due for merging in a week. No, directly to trunk. And you even deploy it at once to production. Done. Clear your mind of it, enjoy, relax, spend some time doing something proactive.</p>
<p>Develop, test, commit, deploy. One feature, bug-fix or improvement at a time. That is the mantra for continuous deployment.</p>
<p>Some developers, and perhaps particularly managers, will find the idea crazy at first. Release immediately? Omigod. But frequently this sensation of safety in postponing something, is not rooted in any real benefits, and there seems to be no rational answer to the question of: why wait? Did your code ever get better during the night? Some will even argue that big feature releases is a marketing invention, invented to squeeze more money out of customers frustrated with the bugs in the current version. This practice of batching changes in releases in turn got embraced by the industry as the professional way of conducting business. I could easily add this to my list of <a href="http://aptoma.com/select.star/2010/01/03/3-major-problems-with-the-software-industry/">major problems with the software industry</a>.</p>
<p>Wouldn&#8217;t it be nice to deliver a bug-fix the same day it was reported? The same hour, even? It might just be possible if you are continuously deploying product improvements like this, kaizen-style.</p>
<h3><strong>Where does this idea come from?</strong></h3>
<p>The idea of continuous deployment comes from the lean school of thought. In the mindset of lean kanban pull systems &#8212; where you are constantly looking to remove waste and minimize your batch-sizes &#8212; grouping a lot of big software changes together in big batches and big releases makes no sense.</p>
<p>Even <a href="http://code.flickr.com/blog/2009/12/02/flipping-out/">Flickr is doing continuous deployment</a> these days.</p>
<p>The whole idea is to respond to customer &#8220;pull&#8221;. The customer needs something now. The clock starts ticking. Is the feature more useful if you wait a bit before you start coding it? No. Then start now. Is the feature better if you wait with testing after coding it? No. Then test now. Wait until tomorrow to integrate into version system? Is that better? No. Then integrate. Does thing get better if we wait to deploy that new feature? No. Then deploy it. Stop your clock. The shorter the time, the better for the customer. And better for quality, it seems. And the better for you, the coder. Unreleased code is stressful. Released, working code, is stress free. The code works. It&#8217;s proven.</p>
<blockquote><p><em>After a few iterations, our fear level was actually lower than how we used to feel after a staged release. Because we were committing less code per release, we could correlate issues to a release with certainty. (From <a href="http://www.startuplessonslearned.com/2010/01/case-study-continuous-deployment-makes.html">Case Study: Continuous deployment makes releases non-events</a>)</em></p></blockquote>
<p>Bugs that are not discoverable in testing are easier to find and fix if you released only one feature, than if you batched a months worth of changes together in one big bang release. Or so the lean school of thought states. I agree. You would have written the code hours ago, and probably say &#8216;a-ha!&#8217; the second you hear about it. 20 minutes later, a bug-fix is released. Why wait?</p>
<p><strong>A few resources on lean from Amazon:</strong></p>
<ul>
<li><a href="http://www.amazon.com/Lean-Software-Development-Agile-Toolkit/dp/0321150783">Software Development: An Agile Toolkit</a></li>
<li><a href="http://www.amazon.com/Implementing-Lean-Software-Development-Concept/dp/0321437381/ref=pd_bxgy_b_img_b">Implementing Lean Software Development: From Concept to Cash</a></li>
<li><a href="http://www.amazon.com/Lean-Thinking-Corporation-Revised-Updated/dp/0743249275/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1264106246&amp;sr=1-1">Lean Thinking: Banish Waste and Create Wealth in Your Corporation</a></li>
<li><a href="http://www.amazon.com/Toyota-Way-Jeffrey-Liker/dp/0071392319">The Toyota Way</a></li>
</ul>
<h3>What does it take?</h3>
<p>Not surprisingly, continuous deployment requires a high level of team discipline. No goofing off and no more fixing everything <em>mañana</em> in testing. Practices such as <a href="http://www.shmula.com/987/jeff-bezos-5-why-exercise-root-cause-analysis-cause-and-effect-ishikawa-lean-thinking-six-sigma">5 Why root cause analysis</a>, extensive testing and automation will be required. But it will all lead you to better quality and higher iteration speed. <a href="http://aptoma.com/select.star/2010/01/08/quality-and-speed-a-primer-in-team-design/">Speed and quality</a>, it is all related.</p>
<p>Eric Ries writes on O&#8217;Reilly Radar about &#8220;<a href="http://radar.oreilly.com/2009/03/continuous-deployment-5-eas.html">Continuous Deployment in 5 easy steps</a>&#8220;. Eric Ries has gotten a lot of traction with his <a href="http://www.startuplessonslearned.com/2008/09/lean-startup.html">Lean Startup movement</a> lately. And you can follow his thoughts and reports on personal experience on continuous deployment on his blog <a href="http://www.startuplessonslearned.com/">http://www.startuplessonslearned.com/</a></p>
<h3>Look ahead</h3>
<p>Will we pursue this issue of continuous deployment any further? In the name of delivering a high quality experience to our customers and users now, when they still need it: <em>yes we will.</em></p>
<p>If you will join us in this, please follow <a href="http://feeds.feedburner.com/aptoma/selectstar">this blog on RSS</a> or follow <a href="http://twitter.com/aptoma">the company</a> or <a href="http://twitter.com/geirber">the author</a> on twitter. If you digg it, then <a href="http://digg.com/programming/Notes_on_Continuous_Deployment">digg it</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://aptoma.com/select.star/2010/01/21/notes-on-continuous-deployment/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Quality and speed. A primer in team design.</title>
		<link>http://aptoma.com/select.star/2010/01/08/quality-and-speed-a-primer-in-team-design/</link>
		<comments>http://aptoma.com/select.star/2010/01/08/quality-and-speed-a-primer-in-team-design/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 15:00:34 +0000</pubDate>
		<dc:creator>Geir Berset</dc:creator>
				<category><![CDATA[teamwork]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[speed]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://aptoma.com/select.star/?p=970</guid>
		<description><![CDATA[How you design your team has a great deal to say for the speed and quality of the resulting work the team will do. Speed The ultimate ideal for speed is a one-man show. There&#8217;s this one guy doing everything in the project. He is competent in engineering practices such as software design, scaling and [...]]]></description>
			<content:encoded><![CDATA[<p>How you design your team has a great deal to say for the speed and quality of the resulting work the team will do.</p>
<p><img class="size-full wp-image-1035 alignnone" title="Leading the Race" src="http://aptoma.com/select.star/wp-content/uploads/2010/01/racecar.jpg" alt="" width="560" height="222" /></p>
<h3>Speed</h3>
<p>The ultimate ideal for speed is a one-man show.</p>
<p>There&#8217;s this one guy doing everything in the project. He is competent in engineering practices such as software design, scaling and testing, and he excels in design, user experience and what not.</p>
<p>When he has an idea, he considers it. He weighs it back and forth. Then a decision is made, right there on the spot. No waiting, no straying, no nothing &#8212; just an idea, wham bam, a decision. All while taking a shower or having a cup of coffee. Soon he&#8217;s back at the keyboard implementing it, testing it, committing it, deploying it.</p>
<p>The next thing you know users are using it, providing their feedback and insight.</p>
<p>Did you notice the lack of all-day design committees (probably reaching no consensus, scheduling follow-up meetings the next week). Notice the lack of a board of directors that takes weeks to assemble into one room. Notice the lack of calling, facilitating and planning endless project-meetings. No extensive change processes. No writing frequent status reports. No large specifications documents needed to keep in sync for review and approval, there is no handing over documentation between <em>the design phase</em> and the <em>implementation phase</em>.</p>
<p>With the one-man show, it&#8217;s just <em>wham bam thank you ma&#8217;m</em>. It&#8217;s like a ninja &#8212; the ultimate warrior mastering all needed disciplines needed to win the war, and he&#8217;s calling the shots faster than you can say <em>cheeseburger.</em></p>
<p>&#8211; Cheese (I chopped your head of) burger.<em></em></p>
<p><em><img class="alignnone size-full wp-image-1037" title="rollsroyce" src="http://aptoma.com/select.star/wp-content/uploads/2010/01/rollsroyce.jpg" alt="" width="560" height="179" /><br />
</em></p>
<h3><strong>Quality</strong></h3>
<p>But say the ultimate goal is quality, not speed.<strong><br />
</strong></p>
<p>The ultimate ideal for quality is hordes of different specialists working the project. They work in teams, or they might even separated into entire departments or companies dedicated to one profession each. One of these teams consists of the best designers the world has to offer. Another team has the best programmers and there&#8217;s a team of the best usability experts in the field.</p>
<p>At the start of the project all sit together until everyone agrees what problem we are solving, and how we want to solve it. If new challenges arise underway, they will gather to discuss and to agree how to adapt.</p>
<p>We start the project, and we are passing the project from team to team, giving each of them the time they want, and do not interrupt them until they&#8217;re done. They will ask for your input when they need it.</p>
<p>When they are finished, you should have the best quality money can buy, shouldn&#8217;t you? After all they had all the time in the world, and they were not interrupted.</p>
<h3><strong>Speed or Quality?</strong></h3>
<p>Now, all you have to do is choose, will you need <em>speed </em>or will you need<em> quality</em> in your particular project? Choose your strategy from the two outlined above thereafter. Unfortunately, it&#8217;s not that easy. Or, rather: luckily there&#8217;s more to it.</p>
<h3>The problem with speed</h3>
<p>With the one man show, you are very exposed to obtaining one or more crappy qualities on your software product. Your guy will have his strenghts, and there is bound to be weaknesses. So you end up with the best user interface, but a crappy test-suite making the software unmaintainable. Or perhaps you have a delightful backend, but a user interface that sucks. Or maybe your ninja is so anal about every quality that he is failing to build up speed in the first place.</p>
<p>It just does not scale, and you are very exposed to this individual&#8217;s priorities.</p>
<p>Ultimately the lack of tests, the poor scalability or the increasing complexity will stop the project dead in its tracks. So much for the ultimate speed ideal. It was fun while it lasted, but it did not last. Project stops. Try again.</p>
<h3>The problem with quality</h3>
<p>OK, so you chose the smart path and aimed for quality. You landed the big budget and told everyone to do their very best, and gave them all the time in the world.</p>
<p>I&#8217;m sorry to report that problems seems to pile up for these kind of teams as well.</p>
<p>So your user experience department spends a week, a month, two months, or whatever time it takes to craft the best user experience possible for the problem they are solving. Then your design department spends a week, a month, two months, or whatever time it takes to create the best design of their life. They hand it over to engineering, and, as they go off to win a design award, the engineers have a go at fulfilling all the promising features that the UX-team wire-framed now fitted with the award winning design. They spend a week, a month, two months or whatever it takes to create the very best implementation. Their algorithms are featured in next years text-books for the university students.</p>
<p>Only now the solution solves yesterdays, yestermonths or even yesteryears problems.</p>
<p><strong>The core problem with this quality approach:</strong><strong> </strong>While each of your teams were busy creating the best user experience, the best design, the best algorithms, someone else were busy making the most accurate solution for the problem.</p>
<p>And as if that wasn&#8217;t enough, they were adapting to the problem as it changed in character. The problem always does that. Change, that is. At least in the field of software product development.</p>
<p>No problem, you&#8217;re thinking! Let&#8217;s just pass the ball back to UX, on to design and then back to engineering. That will show them!, in just 1 month or 2months or n months time, that is.</p>
<p>Oops, and there&#8217;s that change of problem to solve again. Darn it. Your project is behind, and your award winning design and algorithm are not solving the right problem. Quality wasted.</p>
<p>Turns out that time available and uninterrupted focus in each discipline is far from the only factors which affect the total quality of the project.</p>
<p><strong>Solution accuracy is also a quality. </strong>Too often forgotten, but probably among the most important ones.</p>
<h3>The solution lies in team design</h3>
<p>In order to realize the solution, you will first have to buy into the assertion that:</p>
<p><strong>You need quality to achieve speed, and you need speed to achieve quality.</strong></p>
<p>This means that you should not choose either speed or quality. You should aim for both, as they tend reinforce one another. It might feel counter intuitive or even paradoxical, but it holds out.</p>
<p>The team design solution you are looking for draws inspiration from both worlds: the overly optimistic one man show (the ninja) and the bureaucratic silo process with a lot of specialists in their own departments passing the project from silo to silo in total isolation from one another.</p>
<p>You need speed <em>and</em> you need quality.</p>
<p><strong>It&#8217;s really quite simple to explain (and very hard to execute)</strong></p>
<p>You need one guy calling the shots, and you need specialists backing up and implementing in quality what he dictates. They all need to interact in a cross functional environment and they also need time to dedicate themselves to their specialties, creating price-worthy work within their profession.</p>
<p>You need to <em>strike the fine balance</em> in your team design to get the speed of cross functional teams, combined with the qualities of the isolated teams. Your continued efforts to ensure both will ensure that these two disciplines reinforce one another to achieve the best quality software you can produce.</p>
<blockquote><p><em>&#8220;Accept and embrace the risks, even plan how to mitigate them, but don&#8217;t  avoid them.&#8221;</em></p></blockquote>
<h4>There are, of course, loads of challenges.</h4>
<ol>
<li>Why should the teams of specialists trust the chief engineer&#8217;s decisions, and thus back his ideas with a 100% commitment and enthusiasm?
<ul>
<li>The centralized decision-maker will have to be a respected individual, an individual in which all team members place their trust. (Challenge: These individuals are hard to come by, and they have to invest a lot of energy into understanding everything about all parts of the project)</li>
</ul>
</li>
<li>How will the chief engineer be able to know all about everything in the project?
<ul>
<li>Do not underestimate the capacity of man, given the opportunity to focus. The chief engineer will focus on two things : knowing everything about the project, and developing a deep relationship and understanding of the problem to solve (i.e. getting intimate with the customer group). He makes it happen through this focus.</li>
<li>Also, he must be wise and humble. He must be so humble as to pull information from specialists whenever it is needed to reach the best possible decision for the project. Just as much as he knows where to get all the information he needs &#8212; he does not himself possess it. He is trusted to do this, and his trust among his peers gets strengthened all the more when actually doing it.</li>
</ul>
</li>
<li>What if the chief engineer is hit by a bus?
<ul>
<li>A very common question from concerned prospects. The truth is that unless the chief engineer has had a brilliant protege at his side all this time that can step in immediately and take over, your development process will grind to a halt. At least for some time. Consider the alternative for a moment, before gasping in repulsion. Your alternative is a process similar to <em>design by committee (a lot of people involved in every project decision), </em>in which case your development process will grind to a halt from day one. Surely and you will be safeguarded from loosing momentum, but it&#8217;s not worth is when the solution is to never really building any in the first place. And that&#8217;s just not a smart strategy. Accept and embrace the risks, even plan how to mitigate them, but don&#8217;t avoid them.</li>
</ul>
</li>
</ol>
<p>There are surely more challenges with this approach than my shortlist above, and you&#8217;ll have to develop the capacity to deal with them. Nobody said this would be easy. I just asserted that it will be the right thing to do. And it will. Master this, and it will make you strong, fast and of high quality.</p>
<h3>Summary: The solution in a simple list</h3>
<p>You know you love lists. <em>I know you love lists.</em> That&#8217;s why I&#8217;m willing to oversimplify the answer to this complex problem, and state it in a few simple bullet points below. Be sure, however, that you set out to absorb these ideas beyond this list, and follow up on the recommended reading, in order to make your team design better and better with time. Kaizen.</p>
<ol>
<li><strong>Keep decision making centralized</strong> at a wise, trusted, experienced and respected source.</li>
<li><strong>Ensure a steady flow of cross-functional communication</strong> between specialist teams to keep everyone aligned towards the ultimate goal of creating the best overall solution for the problem &#8212; not just the best design or algorithm in isolation.</li>
<li><strong>Ensure that each professional discipline has enough isolated time</strong> so they are able to produce work they are proud of.</li>
</ol>
<h3>Am I making this up? (AKA: References)</h3>
<p>The concept has been tried and tested not only by us, but in larger scale by Lean inventor Toyota (their chief engineer role), by Gore (the Gore-tex manufacturer) who refuse to scale beyond 150 people per factory in order to keep it small enough for one guy to pull all the threads and have direct contact with everyone involved.</p>
<p>Toyota relies on the chief engineer role in every new product development process. Their future existence relies (more and more) on their ability to come up with new designs that accurately address the needs of the marketplace, and just for this reason they have the chief engineering role, which also makes them one of the best in this field. The others are following in their tracks.</p>
<p>Both of these companies has enjoyed great success as a result of their strategies.</p>
<ul>
<li><a href="http://www.amazon.com/Toyota-Way-Jeffrey-Liker/dp/0071392319">The Toyota Way</a> by Jeffrey Liker address the chief engineering role.</li>
<li>The <a href="http://www.amazon.com/s/ref=nb_ss?url=search-alias%3Daps&amp;field-keywords=poppendieck+lean&amp;x=0&amp;y=0">Poppendieck series in Lean </a>comes highly recommended if you find these theories intriguing. (<a href="http://www.youtube.com/watch?v=HOJX91SpcMo">Wisdom seldom come wrapped as a 20 year old kid in a suit</a>)</li>
<li>Also you can read about &#8220;the genius of the and&#8221; in the much quoted book <a href="http://www.amazon.com/Built-Last-Successful-Visionary-Essentials/dp/0060516402">Built To Last</a>.</li>
</ul>
<p>There is no silver bullet. You&#8217;ll need to experiment with team design to master it. My best advice would be, that you give it a shot in the small, and in the process you should read the references provided. See how it goes, revise, celebrate your ability to spot your failures, acknowledge your victories and try again.</p>
<p>Repeat indefinitely.</p>
<p>If you like this post and want more, <a href="http://feeds.feedburner.com/aptoma/selectstar">enter the fourth dimension</a>. You can subscribe by email to the right.</p>
<h3>Disclaimer</h3>
<p>Never mistake team design to be the silver bullet. There is no silver bullet. Good team design will not help if you have team members that lack the skills or the motivation to excel within their respective fields. You need excellent individual skills in each team member to pull this one of, and you need to put full trust in them.</p>
<p>It&#8217;s not a development strategy for the faint of heart, or for the micro managing control freak.</p>
]]></content:encoded>
			<wfw:commentRss>http://aptoma.com/select.star/2010/01/08/quality-and-speed-a-primer-in-team-design/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

