<?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>Managing Product Development &#187; program management</title>
	<atom:link href="http://www.jrothman.com/blog/mpd/category/program-management/feed" rel="self" type="application/rss+xml" />
	<link>http://www.jrothman.com/blog/mpd</link>
	<description>Management, especially good management, is hard to do. This blog is for people who want to think about how they manage people, projects, and risk.</description>
	<lastBuildDate>Thu, 24 May 2012 13:28:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Programs and Technical Debt</title>
		<link>http://www.jrothman.com/blog/mpd/2012/05/programs-and-technical-debt.html</link>
		<comments>http://www.jrothman.com/blog/mpd/2012/05/programs-and-technical-debt.html#comments</comments>
		<pubDate>Tue, 15 May 2012 15:09:44 +0000</pubDate>
		<dc:creator>Johanna</dc:creator>
				<category><![CDATA[program management]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[architects]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[geographically distributed teams]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[technical debt]]></category>

		<guid isPermaLink="false">http://www.jrothman.com/blog/mpd/?p=11348</guid>
		<description><![CDATA[Once you have a program (a collection of interrelated projects focused on one business goal) and you have technical debt, you have a much bigger problem. Not just because the technical debt is likely bigger. Not just because you have &#8230; <a href="http://www.jrothman.com/blog/mpd/2012/05/programs-and-technical-debt.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Once you have a program (a collection of interrelated projects focused on one business goal) and you have technical debt, you have a much bigger problem. Not just because the technical debt is likely bigger. Not just because you have more people. But because you also geographically distributed teams, and those teams are almost always separated by function and time zone.</p>
<p>So, my nice example of a collocated team in <a title="Thoughts on Infrastructructure, Technical Debt, and Automated Test Framework" href="http://www.jrothman.com/blog/mpd/2012/04/thoughts-on-infrastructructure-technical-debt-and-automated-test-framework.html" target="_blank">Thoughts on Infrastructure, Technical Debt, and Automated Test Framework</a>, rarely occurs in a program, unless you have cross-functional teams collocated in a program. If they do, great. You know what to do.</p>
<p>But let&#8217;s assume you don&#8217;t have them. Let&#8217;s assume you have what I see in my consulting practice: an architecture group in one location, or an architect in one location and architects around the world; developers and &#8220;their&#8221; testers in multiple time zones; product owners separated from their developers and testers. The program is called agile because the program is working in iterations. And, because it&#8217;s a program, the software pre-existed the existence of the agile transition in the organization, so you have legacy technical debt up the wazoo (the technical term). What do you do?</p>
<p>Let&#8217;s walk through an example, and see how it might work. Here&#8217;s a story which is a composite from several clients; no clients were harmed in the telling of this story.</p>
<p>Let&#8217;s also assume you are working on release 5.0 of a custom email client. Release 4 was the previous release. Release 4 had trouble. It was late by 6 months and quite buggy. Someone sold agile as the way to make software bug-free and on-time.</p>
<p>You do not have automated tests for much of the code, unit tests or system tests. You have a list of defects that make Jack the Ripper&#8217;s list of killings look like child&#8217;s play. But agile is your silver bullet.</p>
<p>The program manager is based in London. The testers for the entire program are in Bangalore because management had previously fired all the testers and outsourced the testers. That was back in release 2. They have since hired all the Bangalore testers as employees of the Bangalore subsidiary. The program architect is based in San Francisco, and there is an architect team that is dispersed into 4 other teams: Denver, LA, Munich, and Paris. The developers are clustered in &#8220;Development Centers of Excellence:&#8221; Denver, LA, Cambridge, Paris, London, Munich, and Milan. That&#8217;s 8 development teams.</p>
<p>Oh, and if you think I&#8217;m kidding with this scenario, I&#8217;m not. This is what most of my clients with geographically distributed teams and programs face on a daily basis. They deserve your sympathy and empathy. Do not tell them, &#8220;Don&#8217;t go agile.&#8221; That&#8217;s nuts. They have a right to go agile. You can tell them, &#8220;Don&#8217;t go Scrum.&#8221; That&#8217;s reasonable. Scrum is for a cross-functional co-located team. Agile is for everyone. Scrum is for a specific subset.</p>
<p>What do you do?</p>
<ol>
<li>Assign specific testers to specific development teams. No calling people resources; that allows managers to treat people like resources and plug-and-play them. You need to get rock-solid teams together. Once you have teams together, you can name them.</li>
<li>Name teams so the teams reflect the feature groups they work on. What does an email product do? It gets email, it sorts email, it deletes, it forwards, it creates new mailboxes, and so on. The eight feature teams had to be named for the feature areas: Platform for the general features, Sort, Delete, Forward. There were two teams who worked on Platform. They were called Platform 1 and Platform 2. At one point, someone suggested they call themselves Thing1 and Thing2 from the <a href="&lt;a href=&quot;http://www.amazon.com/gp/product/039480001X/ref=as_li_ss_tl?ie=UTF8&amp;tag=rothmaconsulg-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=039480001X&quot;&gt;The Cat in the Hat&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.com/e/ir?t=rothmaconsulg-20&amp;l=as2&amp;o=1&amp;a=039480001X&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt;" target="_blank">Dr. Seuss </a>book.</li>
<li>Make sure you have enough product owners so they can develop roadmaps for each feature area. With a roadmap, the teams know where they are going. Even more importantly, the architects know where the program is going.</li>
<li>Architects think and provide just enough guidance ahead. In a small project, the architecture can probably evolve with the project. In a larger program, that risk is too large. You have too many people developing in parallel for the architecture to evolve on its own with no guidance. But I do not mean there should a Master Architect Who Knows All Handing Down the Architecture From On High. NO NO NO.<br />
I want the architect who is a working member of the development team, who also is part of an architecture community of practice team, who curates the architecture, who guides the business value of the architecture. I do not want Big Architecture Up Front. But Thinking Up Front? Sure, that&#8217;s a great idea. Stuck on only one idea? Bad. Willing to spike an idea? Great. Willing to play in a sandbox and debate several ideas? Great. I wrote about this before, in <a title="How Agile Architects Lead" href="http://www.jrothman.com/blog/mpd/2011/07/how-agile-architects-lead.html" target="_blank">How Agile Architects Lead</a>.</li>
<li>Decide what done means for every feature. You must have acceptance criteria for each feature. What does that mean? You need a product owner present for each team. You still need the conversations with each team to discuss what done means. Especially with a geographically distributed team, you need the conversation when you create the backlog at the beginning of the iteration.</li>
<li>The US  development teams had trouble planning their iterations with their testers, because of the time zone differences with the testers. So, they asked their product owners if the product owner would write more than just a few phrases on the cards, because that would help them get through the iteration planning meeting faster. Someone was going to get up early or stay up late, and either way, someone was going to suffer. It made more sense to have a little bit more preparation than less sleep.</li>
<li>Decide to do <a href="http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-3.html" target="_blank">continuous integration</a> and stick with it. Especially if you know you have technical debt and you don&#8217;t want to create more, you have to do continuous integration now. That prevents more technical debt.</li>
<li>I have recommended to some teams that they have one-week iterations so that they stop the estimation nonsense and make their stories small. The point of estimation is so that you have an idea of what you can do as a team and not commit to more than that. The idea is that if you know what it takes to make your stories small, you will.<br />
Instead, we have all these crazy rituals around estimation and management tracking velocity of all things. (Yes, I&#8217;ve been drafting this post for a long time, and I wrote <a title="Why Does Management Care About Velocity?" href="http://www.jrothman.com/blog/mpd/2012/05/why-does-management-care-about-velocity.html" target="_blank">Why Does Management Care About Velocity?</a> last week.) You know, velocity is a little like weight. Only you and your doctor need to know your weight. If you are healthy, you are fine. If you are not, you need to change something.If your team velocity is not healthy, you, as a team, need to change it. But, your management has no business butting its head in. Only you can change it.</li>
<li>When you limit the iteration length, you tend to have the team swarm around a story. This is a tendency, not a given. If I really was the Empress of the Universe, I would decree this, but I&#8217;m not, so I won&#8217;t. If you want to decrease technical debt, or even eliminate it on your program, explain that your team will only work on one story at a time until that story is done. That story will be polished and gleaming. Fast. You will not have to worry about what kinds of testing will be done. All if it will be done.</li>
<li>Explicitly discuss what you will automate for testing and when. In a program, I assume we will have automated system tests first. I assume we will do exploratory tests later. That&#8217;s because if you don&#8217;t start building something for test automation when you start the program and refactor as you proceed, you can never catch up. I assume every time we fix a defect, we will have an automated test for it. I also assume we build these assumptions into how we develop :-)</li>
</ol>
<p>So far, this is all about preventing more technical debt, not what happens when you trip over technical debt as you enter code or tests you never looked at before.</p>
<p>If you expected to walk into a closet, take out a shirt, and close the closet door, that&#8217;s one thing. But now, you stepped into something out of one of those death-by-hoarding shows on TV, you have an obligation to do something. You can document the problem as you encounter it; you can let the product owner know; file a defect report; write a test so you can contain the debt; and maybe you have more options. Whatever you do, make sure you have done something. Do not open the door, see the mess inside and close the door on the mess. It&#8217;s tempting. Oh my, it is tempting.</p>
<p>See, on programs because of the size, everything is magnified. With more people and more teams, everything is harder. Things happen faster. If you have co-located cross-functional teams, no problem. But if you don&#8217;t have co-located cross-functional teams, you have to work with what you have. And, if you already have a big legacy product, you want to address technical debt in small chunks, refactoring in small bits, integrating as you proceed.</p>
<p>My philosophy is this: the bigger the program, the more you need to become accustomed to working in small chunks, integrating as you go. Fully implement a small story, integrate it on the mainline. Everyone on the program does that. If you need help from an integration team, so be it.</p>
<p>But, if everyone only implements small stories, and everyone takes care of their own technical debt as they discover it, you don&#8217;t need an army of integration people. You only need an army of integration people when you have technical debt around integration and release. Fix that, and everyone can become responsible for their own integration.</p>
<p>And, if you can&#8217;t release, that&#8217;s where the architects should start. If you can&#8217;t do continuous integration, that&#8217;s where the architects should start. Because that&#8217;s what&#8217;s preventing you from making progress on the product. Work backwards from release, and then the architects can work on the rest of the product. Until you can release and build reliably, the rest of the product doesn&#8217;t matter.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jrothman.com/blog/mpd/2012/05/programs-and-technical-debt.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Why Focus on Continuous Integration for Programs?</title>
		<link>http://www.jrothman.com/blog/mpd/2011/12/why-focus-on-continuous-integration-for-programs.html</link>
		<comments>http://www.jrothman.com/blog/mpd/2011/12/why-focus-on-continuous-integration-for-programs.html#comments</comments>
		<pubDate>Mon, 12 Dec 2011 19:17:01 +0000</pubDate>
		<dc:creator>Johanna</dc:creator>
				<category><![CDATA[program management]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[incremental funding]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[project portfolio]]></category>
		<category><![CDATA[project portfolio management]]></category>
		<category><![CDATA[transition to agile]]></category>

		<guid isPermaLink="false">http://www.jrothman.com/blog/mpd/?p=10994</guid>
		<description><![CDATA[I hope that  this 3-part series on how to move to continuous integration and how to evaluate if it&#8217;s worth moving to continuous integration on your program convinced you moving to continuous integration was worth it for programs. The reason &#8230; <a href="http://www.jrothman.com/blog/mpd/2011/12/why-focus-on-continuous-integration-for-programs.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I hope that <a href="http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-3.html" target="_blank"> this 3-part</a> series on how to move to continuous integration and how to evaluate if it&#8217;s worth moving to continuous integration on your program convinced you moving to continuous integration was worth it for programs.</p>
<p>The reason continuous integration is an issue on programs, is because the <em>lack</em> of CI can delay the technical program. That, in turn, can delay the overall program. That affects the project portfolio and often delays the start of other projects or programs. It reinforces the feelings of  &#8220;we have these sunk costs so we&#8217;ll keep sinking more money even though we can&#8217;t tell what we&#8217;ve done.&#8221;</p>
<p>I feel as if I&#8217;m saying when a butterfly flaps it&#8217;s wings over here, the world changes over there.</p>
<p>It does.</p>
<p>It&#8217;s easier to see in a smaller organization with one 3-team program. Of course, it&#8217;s easier to make continuous integration work on a 3-team program. It&#8217;s not so bad on a 4-8 team program. It can be horrendously difficult on a 37-team program, especially a program that&#8217;s new to agile. That&#8217;s why I don&#8217;t recommend people start their transition to agile on a large program.</p>
<p>This is one of the reasons program managers often make project portfolio decisions. They have the data the project portfolio managers do not. The program managers are face-to-face with the people who are saying, &#8220;One more month, and we&#8217;ll have a demo for you.&#8221; Even though those people have said this for the past four, five, six months. If those people had continuous integration, they would have had a demo already.</p>
<p>If you do not have continuous integration on your program, make sure you do have incremental funding. Otherwise, you have no way to do project portfolio management and call a stop to the program. Well, you do have a way, but it&#8217;s difficult. But if you have to go back for more money, that&#8217;s a great way to force the technical program to have to prove that they have something to show for their efforts &#8212;a demo, an interim deliverable, a something. Incremental funding means no one runs open loop.</p>
<p>Continuous integration is a form of risk management for all programs. I don&#8217;t see how you live without it for agile programs. And, if you want to take an agile approach to the project portfolio, you have to have at least regular deliverables for your projects and programs. Otherwise, the people on the projects feel as if you are yanking them around for no good reason.</p>
<p>The larger the project, as in programs, the more the technical practices matter. Not because the <em>code</em> demands it; code doesn&#8217;t demand anything. People need the structure that the technical practices provide.</p>
<p>But the people need the technical practices on their own terms. A program manager can&#8217;t impose technical practices such as continuous integration. A program manager can offer the practice and suggest ways it can work. A program manager can ask for the result, and wait to see how the teams want to implement the practice to achieve the result. That&#8217;s what it means to be self-organizing or self-managing teams.</p>
<p>Communities of practice can assist with these practices. It&#8217;s messy. It&#8217;s not top-down. It might take a few iterations to get right. That&#8217;s ok. Everyone will live with it, and then because the teams will have decided how it will work, they will proceed smoothly.</p>
<p>And, once you have the technical practices so that the program flows smoothly, the project portfolio work will flow smoothly, assuming you have people willing and able to make decisions. That&#8217;s fodder for another post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jrothman.com/blog/mpd/2011/12/why-focus-on-continuous-integration-for-programs.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is the Cost of Continuous Integration Worth the Value on Your Program?, Part 3</title>
		<link>http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-3.html</link>
		<comments>http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-3.html#comments</comments>
		<pubDate>Fri, 09 Dec 2011 21:02:20 +0000</pubDate>
		<dc:creator>Johanna</dc:creator>
				<category><![CDATA[program management]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lifecycle]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[release train]]></category>
		<category><![CDATA[staged integration]]></category>
		<category><![CDATA[waterfall on a program]]></category>

		<guid isPermaLink="false">http://www.jrothman.com/blog/mpd/?p=10962</guid>
		<description><![CDATA[To continue our story from part 1 and part 2&#8230; The teams have determined their individual impediments to Continuous Integration. You, as the technical program manager, and the technical program team can take those impediments, with input from the teams &#8230; <a href="http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-3.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>To continue our story from <a href="http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-1.html" target="_blank">part 1</a> and <a href="http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-2.html" target="_blank">part 2</a>&#8230;</p>
<p>The teams have determined their individual impediments to Continuous Integration. You, as the technical program manager, and the technical program team can take those impediments, with input from the teams can see the impediments to program-wide continuous integration. You have used a similar problem-solving approach, including the rule of three (which I learned from <a href="http://www.geraldmweinberg.com" target="_blank">Jerry Weinberg</a>) to generate some options for your problem solving. This is where it can get really expensive, because this is where you may need servers and build engineers. And, this is where you are going to start to see significant value, because this is where your program can start to come together every day, where you can get to releaseable product on a daily basis.</p>
<p>Once you do this, you may discover you have insufficient automated tests for your code. (You&#8217;ll uncover the next problem down the stack.) You may ask, &#8220;Is it still worth doing continuous integration?&#8221; I say, &#8220;Yes! Write more automated smoke tests as you write code.&#8221; But that&#8217;s just me. As with everything, your mileage will vary.</p>
<p>As a program manager, you can go back to your <a href="http://www.jrothman.com/blog/mpd/2011/11/estimating-the-unknown-dates-or-budgets-part-1.html" target="_blank">project pyramid</a> and go back to the program charter, and go back to the tradeoffs you were supposed to discuss at the beginning of the program with the core program manager. Without continuous integration and the automated tests, you&#8217;ll be extending the time to release and possibly increasing the defects at release. With continuous integration, you may need to pay more to reduce the time to release and reducing the defects to get to release&#8212;or making it possible to release.</p>
<p>This is why I find the pyramid so helpful in having these discussions. You may need to show cumulative flow diagrams to explain your point. I especially like these <a href="http://blog.asolutions.com/2011/02/cumulative-flow-diagram-can-double-as-timeline/" target="_blank">cumulative flow diagrams</a> that show features in integration. (You can do that if you use kanban.)</p>
<p>Now, let&#8217;s explore some paths I have seen programs use to move from staged integration to continuous integration.</p>
<h2>Move From Staged Integration to Release Trains</h2>
<p>If you are doing staged integration now, where you have a team of people integrating the software now, consider moving to a quarterly <a href="http://www.jrothman.com/Papers/not-ready-for-agile-start-journey-with-release-trains.html" target="_blank">release train</a> approach. Depending on how you implement release trains, you might be agile.</p>
<p>No matter how you implement release trains, every quarter, you integrate and have working product. That much is clear. So, at least four times a year, you have an entire product working in your program. The real question is how long does the product stay working? What is the cost of keeping the product working worth to you? (I don&#8217;t know, I&#8217;m asking.)</p>
<h2>Move From Quarterly Release Trains to Monthly Release Trains</h2>
<p>If you already have quarterly release trains, you know what it takes you to integrate the software every quarter. Are you stopping development every quarter to integrate for a few days to a week? If so, consider moving to a monthly train.</p>
<p>If it only costs you a few days, your cost of continuous integration is relatively low, and moving to monthly release trains is likely to be low. I would ask the teams if they can move to monthly release trains. This is where practicing to make the cost low and discovering the impediments to moving to real continuous integration is worth it.</p>
<p>This is still staged integration, but it&#8217;s reducing the staging time, and getting you ready for continuous integration. You might want to consider this if you are waiting for servers or build engineers, or other machines or people or training you have been promised, and &#8220;it&#8217;s coming.&#8221;</p>
<p>On the other hand, if you can barely get the product integrated for a few days every train, you have a high cost of integration. Moving to continuous integration inside trains is going to kill you. I have an even better plan. Move to continuous flow. This is the &#8220;just do it&#8221; philosophy.</p>
<h2>Move to Kanban and Forget About Iterations</h2>
<p>Some of you are thinking, &#8220;Ok, Johanna has lost it now. Staged integration was difficult, and release trains were difficult to integrate? Why move to kanban?&#8221; Because at some point, you will want to release the product. You do not want to wait for a quarter to end. If you start with continuous flow, and make your stories smaller, and each of your feature teams has to integrate as the feature team completes a feature, <em>every</em> single time they complete a feature, you will discover quickly what is going on.</p>
<p>If you visualize the entire technical program, and integrate every single sliver of a feature, you will be able to see the impediments and move to continuous integration more easily than if you struggle with more staged integration and more steps.</p>
<p>With iterations, you were like my college project, where you waited too long to integrate. You have too much work in progress across the entire program, and the costs of integration are killing your progress. Moving to kanban, continuous flow, will allow you integrate little bits (assuming your stories are small), and allow everyone to integrate a little bit at a time every day.</p>
<p>Grab a very large wall. You will need a large wall to visualize all the work in progress. Don&#8217;t bother with limits yet. First, visualize all the work in progress from every single team. Yes, for those of you with 47 teams, this is a huge pain in the tush. Well, if you don&#8217;t have continuous integration, that&#8217;s an even bigger pain in the tush, so get going with the stickies or the cards. Try a board that looks something like this:</p>
<div id="attachment_10987" class="wp-caption alignleft" style="width: 310px"><a href="http://www.jrothman.com/blog/mpd/wp-content/uploads/2011/12/kanban-for-continuous-integration2.jpg"><img class="size-medium wp-image-10987" title="kanban for continuous integration" src="http://www.jrothman.com/blog/mpd/wp-content/uploads/2011/12/kanban-for-continuous-integration2-300x219.jpg" alt="" width="300" height="219" /></a><p class="wp-caption-text">Kanban for Continuous Integration</p></div>
<p>This kanban board has the backlog in the ready column, the development and the development-done columns before the system test on the local branch column. Then you can see the Waiting for Integration column. There&#8217;s a lot there. Finally, there&#8217;s the Done column.</p>
<p>When the teams realize how many local branches they are using, and how many features are waiting to be integrated, they might not even need the cumulative flow diagrams. But, I bet seeing the task boards even out and the cumulative flow look better will help them realize their hard work will pay off is worth it.</p>
<p>Use cumulative flow diagrams, make sure your feature teams are cross-functional, and I would ask each team to make sure they move a story across the board at least once every three days. Why three days? Because it&#8217;s less than once a week. I prefer once a day, and I realize that not every team can develop stories or slivers of features that small right away. But almost every team can learn to produce some sliver of a feature that they can deliver and show someone in about three days. If it takes a team about three days to deliver, they have the other two days to integrate and make sure nothing is broken. Now, in a week, they have delivered something of value, integrated it, and they can demo it. Ah, what a feeling. They have experienced what continuous integration is for themselves.</p>
<p>Multiply that by each and every team, and inside of no more than two weeks, each team has experienced continuous integration. Now, when the technical program team meets, they can intelligently discuss what they need for program-wide continuous integration. They will learn about collisions, where they need scripts, tests, tools.</p>
<h2>What About the Waterfall Teams?</h2>
<p>Some of you have waterfall teams in your programs, too. They need to use deliverable-based planning, rolling wave planning to get to the deliverables, and deliver something every quarter. This is called a staged delivery lifecycle. Or a design to schedule lifecycle. It&#8217;s an incremental lifecycle. Read more about these lifecycles in <a href="http://www.jrothman.com/Books/manage-it.html" target="_blank">Manage It!</a>.</p>
<h2>Get Help if You Need It</h2>
<p>Do you need a release or deployment engineer or team to help you with integration? I hope not. But as you start your program, if you are not accustomed to continuous integration, you might. As a program manager, I might have a release/deployment team to start to manage the risks, and see if I could help those people into feature teams and out of a release/deployment job.</p>
<p>Only you, the program manager, your product owner, and your program architect as the triad to assess the technical debt and business value of the backlog and technical risk can know the value of continuous integration on your program. Maybe you have well-behaved code, and the cost of continuous integration is not worth the aggravation.</p>
<p>But, if you are like the programs I see, the value of continuous integration is quite high. Consider the options for your program. The more teams you have, in general, the more value you will get from continuous integration. You will be able to see the state of the program more often, because the program will be demoable and releaseable more often.</p>
<p>My guidelines are these: small programs of up to three teams: let the teams decide. Programs of 4-8 teams: nudge the teams into continuous integration, using cumulative flow and show them the value of not having lots of work in progress. Programs of more than 8 teams: continuous integration is not negotiable. You either pay for it now, or you pay a lot more and have a disaster later.</p>
<p>If you see more options than I&#8217;ve outline here, please do comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-3.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Is the Cost of Continuous Integration Worth the Value on Your Program?, Part 2</title>
		<link>http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-2.html</link>
		<comments>http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-2.html#comments</comments>
		<pubDate>Thu, 08 Dec 2011 13:52:33 +0000</pubDate>
		<dc:creator>Johanna</dc:creator>
				<category><![CDATA[program management]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lifecycle]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[release train]]></category>
		<category><![CDATA[staged integration]]></category>
		<category><![CDATA[waterfall on a program]]></category>

		<guid isPermaLink="false">http://www.jrothman.com/blog/mpd/?p=10928</guid>
		<description><![CDATA[Let&#8217;s set the context (which I did not do in my most recent post&#8211;sorry). A program is composed of several feature teams, which may well be working on several projects or different feature sets. I assume they are. The goal &#8230; <a href="http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-2.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s set the context (which I did not do in my <a href="http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-1.html" target="_blank">most recent</a> post&#8211;sorry).</p>
<div id="attachment_10958" class="wp-caption alignleft" style="width: 310px"><a href="http://www.jrothman.com/blog/mpd/wp-content/uploads/2011/12/Technical-Program-Team.concurrent-projects.with_.cop_.jpg"><img class="size-medium wp-image-10958" title="Technical Program Team.concurrent projects.with.cop" src="http://www.jrothman.com/blog/mpd/wp-content/uploads/2011/12/Technical-Program-Team.concurrent-projects.with_.cop_-300x228.jpg" alt="" width="300" height="228" /></a><p class="wp-caption-text">Technical Program with Communities of Practice</p></div>
<p>A program is composed of several feature teams, which may well be working on several projects or different feature sets. I assume they are. The goal of a program supersedes the goal of any of the projects, and the business gains much more value from the program than from any of the projects by itself.</p>
<p>So, the question before us is this: How do you help the teams bring the entire product together on a periodic basis, regardless of their technical practices? If you look at the comments from yesterday&#8217;s post, you can see that continuous integration is a real problem for any number of reasons.</p>
<p>Remember, on an agile program, the agile program manager facilitates the work of the projects/feature teams, the agile program manager does not demand. The agile program manager does not lay down the law. The agile program manager does not say, &#8220;Here&#8217;s how it&#8217;s going to be, folks.&#8221; Even I, as much as I have wanted to in the past, have not done this. Oh, you have no idea how much I have wanted to say this.</p>
<p>On the other hand, the agile program manager can point out the consequences or risks of not taking certain actions. &#8220;If we don&#8217;t integrate as we go, we will never meet this demo date.&#8221; Or, the trade show date, or the desired release date, or some other date. Or, manage some other risk.</p>
<p>I&#8217;m quite happy to explain the risks to the feature teams. They are adults. They know how to get married, raise children, dress themselves, get to work clean, fed, and live adult lives. Ok, we&#8217;re talking about technical people, so sometimes we have outliers :-). But if the technical program manager explains the risks, or even says, &#8220;I have a funny feeling about this, and I can&#8217;t explain it, but I think this is risky, and I would like your help on managing the risk of not integrating as we proceed,&#8221; most people will respond and say, &#8220;Okay, let&#8217;s see how we can get closer to continuous integration.&#8221; Or, they will say, &#8220;Hey, this is really hard,&#8221; or &#8220;This is really expensive,&#8221; or &#8220;We know how to do it with lots of branches which is crazy,&#8221; or &#8220;We only know how to do it we break the build&#8221; or any number of other problem statements.</p>
<p>They&#8217;re not stupid. They may be intimidated by continuous integration, but they are not stupid. And, they may have doubts about the cost of servers or breaking the builds&#8212;doubts which are real.</p>
<h2>Ask for the Problems or Impediments First</h2>
<p>You can&#8217;t solve the problems you don&#8217;t know about. So, ask for the impediments first. You might be surprised. Maybe you need some servers. Maybe you need a release/deployment team.</p>
<p>Maybe the feature teams don&#8217;t really  understand the problem either. Here are some guidelines for the problems and impediments:</p>
<ol>
<li>Ask for the result you want. If you want continuous integration, explain that&#8217;s what you want. I say something like this, &#8220;I want the system to be in a releaseable state every day. At a minimum, I would like that every week. I know that&#8217;s not where we are now, and that&#8217;s the result I would like. What would it take for us to get there?&#8221;</li>
<li>Assume the technical teams understand the technical problems better than you, the program manager do. If you ask for the problem and impediments, don&#8217;t poo-poo the problems. Treat the problems and impediments seriously. Assume the technical people are correct about the problems.</li>
<li>Use the rule of three for each potential solution. That is, for each problem, develop three potential reasonable solutions to that problem. That way, everyone understands the problem well enough. If you only have one potential solution, chances are quite good no one understands the problem well enough to solve it.</li>
<li>Involve the communities of practice in generating the solutions to these problems. That&#8217;s what they are there for. Use them.</li>
<li>Ask for project or feature team volunteers to try a solution before committing the program to it. Never impose a solution on the entire program. If no one is willing to volunteer to try a solution, it&#8217;s not reasonable. Go back to the drawing board.</li>
</ol>
<p>Some of the teams will need different initial solutions. Some teams will need help making their stories smaller. Some teams will need help learning to swarm around their features, so they finish features earlier in the iteration. That sets each team up for success for continuous integration. Remember my story back when I was at university? We might have succeeded on that small project if we had worked together on the features, instead of working by ourselves.</p>
<p>But those impediments might be just the tip of the iceberg for your teams. Once you start generating some options, you can start to see what the costs are, and you can start comparing the value.</p>
<p>I will have some options in my next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-2.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Is the Cost of Continuous Integration Worth the Value on Your Program?, Part 1</title>
		<link>http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-1.html</link>
		<comments>http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-1.html#comments</comments>
		<pubDate>Wed, 07 Dec 2011 14:19:43 +0000</pubDate>
		<dc:creator>Johanna</dc:creator>
				<category><![CDATA[program management]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lifecycle]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[release train]]></category>
		<category><![CDATA[staged integration]]></category>
		<category><![CDATA[waterfall on a program]]></category>

		<guid isPermaLink="false">http://www.jrothman.com/blog/mpd/?p=10916</guid>
		<description><![CDATA[I like continuous integration. A lot. I started being an aficionado of continuous integration back in my senior year of university . It was my very first (and last) team project in my college career. There were three of us. &#8230; <a href="http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-1.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I like continuous integration. A lot. I started being an aficionado of continuous integration back in my senior year of university . It was my very first (and last) team project in my college career. There were three of us. The project manager waited until the night before the project was due to get us all together (argh #1). I had completed much of my code several weeks before (argh #2: who can remember what they&#8217;d written several weeks ago?). We wrote code madly for hours, and then tried to make it work, starting about 9pm. It didn&#8217;t work. We stayed up all night (argh #3). I finally went back to my dorm about 7am so I could shower and eat breakfast for my 8am class. The other two guys blamed me for leaving, saying I should stay with them. I explained nothing had worked yet, nothing was going to work if I went to my other classes (just about the only smart thing I&#8217;d said all night).</p>
<p>That&#8217;s the night I realized that if you don&#8217;t start putting software together a little bit at a time from the beginning it gets harder the more you have to put it together. I&#8217;ve been a fan of continuous integration ever since.</p>
<p>I am sure there are projects where continuous integration might not be the answer, and I have not met them yet. And, I admit, there are times when the cost of continuous integration seems pretty high.</p>
<p>The agilist in me says, &#8220;Do it more often. That way you see what the impediments are, so you can see what is so difficult and you can make it easier every time you do it.&#8221; The pragmatist in me says, &#8220;Not everyone knows how to do it more often. Have pity on these people. Do you want to make them suffer?&#8221;</p>
<p>I don&#8217;t want to make people suffer. I do want people to realize that continuous integration is often well worth their time, even on a large program. So, here are some steps to help you move to more continuous integration, depending on where you are.</p>
<h2>What Does Continuous Integration Mean to You?</h2>
<p>The first question is this: What does CI mean to you? To me, it means that the software is Done. That is, it is compiled, tested, and not just demoable, but releaseable.</p>
<p>Now, it doesn&#8217;t have to mean that to you, and it certainly doesn&#8217;t have to mean that on a program, especially on a large program. But you should know what continuous integration means on your program. And, you should know who decides.</p>
<p>On a program, I recommend that a technical program manager suggest a strawman <a href="http://www.jrothman.com/pragmaticmanager/who-decides-what-done-means-for-a-program.html" target="_blank">proposal</a> of what done means, and see if the feature teams can live with it. Then, the feature teams should test that strawman for a limited time, such as an iteration, and see if that proposal makes sense to them. If you&#8217;re working in kanban, set a time period, such as one week or two, to make sure you see some features flow through the system and see if the proposal makes sense.</p>
<p>Now, everyone knows what done means for the program, so you know what continuous integration can mean.</p>
<h2>Where Are You in Your Journey to Continuous Integration and Agile?</h2>
<p>The first step is to know where you are.</p>
<p>The ideal case: Are you finishing features every iteration, as often as every day or so? You are likely doing continuous integration across your program.</p>
<div id="attachment_10932" class="wp-caption alignleft" style="width: 310px"><a href="http://www.jrothman.com/blog/mpd/wp-content/uploads/2011/12/hockey.stick_.jpg"><img class="size-medium wp-image-10932" title="hockey.stick" src="http://www.jrothman.com/blog/mpd/wp-content/uploads/2011/12/hockey.stick_-300x186.jpg" alt="" width="300" height="186" /></a><p class="wp-caption-text">Finishing Stories All the End of an Iteration</p></div>
<p>What I see in many teams practicing agile: Are you finishing features in a hockey stick, with most of the features finishing at the end of the iteration? This is tricky, and leads to staged integration, and makes for staged integration in a program if all the feature teams do this.</p>
<p>What I see in some teams quite new to agile: Do your <a href="http://www.stickyminds.com/s.asp?F=S17193_COL_2" target="_blank">features span iterations</a>? If your features span iterations, you need to make your features smaller. The reason to make your features smaller has nothing to do with continuous integration yet. Making features smaller is all about seeing your progress and providing feedback to the product owner/customer and making sure you actually complete work inside the iteration. If you are using kanban, this is similar to seeing a board not change for weeks while the same features are still on the board, nothing moving. You are also likely doing staged integration.</p>
<p>If some of your feature teams do one thing, some of your feature teams do something else and you need a way to merge them all together. When I work with program teams, I find the teams doing some of each of these. And, the waterfall teams are doing something else entirely. On a program, we need a way to bring the entire product together on a periodic basis.</p>
<p>Stay tuned for part 2.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-1.html/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Which Program Team Are You Managing?</title>
		<link>http://www.jrothman.com/blog/mpd/2011/10/which-program-team-are-you-managing.html</link>
		<comments>http://www.jrothman.com/blog/mpd/2011/10/which-program-team-are-you-managing.html#comments</comments>
		<pubDate>Tue, 18 Oct 2011 14:23:25 +0000</pubDate>
		<dc:creator>Johanna</dc:creator>
				<category><![CDATA[agile transition]]></category>
		<category><![CDATA[program management]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[iterations]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[project portfolio management]]></category>

		<guid isPermaLink="false">http://www.jrothman.com/blog/mpd/?p=10753</guid>
		<description><![CDATA[Some program managers whose organizations are transitioning to agile are not always clear on which program team they are managing. Sometimes, that&#8217;s because the organization doesn&#8217;t always realize they need more than one program team. If you are coordinating and &#8230; <a href="http://www.jrothman.com/blog/mpd/2011/10/which-program-team-are-you-managing.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Some program managers whose organizations are transitioning to agile are not always clear on which program team they are managing. Sometimes, that&#8217;s because the organization doesn&#8217;t always realize they need more than one program team.</p>
<div id="attachment_10757" class="wp-caption alignleft" style="width: 310px"><a href="http://www.jrothman.com/blog/mpd/wp-content/uploads/2011/10/Program-Team.with-hw-copy.jpg"><img class="size-medium wp-image-10757" title="Program Team.with hw" src="http://www.jrothman.com/blog/mpd/wp-content/uploads/2011/10/Program-Team.with-hw-copy-300x224.jpg" alt="" width="300" height="224" /></a><p class="wp-caption-text">Core Program Team</p></div>
<p>If you are coordinating and collaborating across the entire organization, you are part of the core program team. If you take a look at the Core Program Team image on the left, you can see that there are plenty of potential participants on this program team. Aside from the program manager, there is the software program manager, the potential hardware program manager, the Program Product Owner, the Sales, Deployment, Legal, Marketing, Finance, HR, Investor Relations project managers. And those are only the people I could imagine. There might be other or different people in your organization.</p>
<p>Notice that the Software program manager is a delegate to the core program team. That means that the Software program manager must have a program team of his/her own. Yes. That is true for a sufficiently large program.</p>
<p>Below is what that technical Software program team looks like. Notice that the Program Product Owner and the Program Architect work as a triad with the Software Program Manager to make risk decisions. Does that mean that the Program Product Owner does not work with the Core Program Manager?</p>
<div id="attachment_10759" class="wp-caption alignleft" style="width: 310px"><a href="http://www.jrothman.com/blog/mpd/wp-content/uploads/2011/10/Technical-Program-Team.concurrent-projects-copyright.jpg"><img class="size-medium wp-image-10759" title="Technical Program Team.concurrent projects copyright" src="http://www.jrothman.com/blog/mpd/wp-content/uploads/2011/10/Technical-Program-Team.concurrent-projects-copyright-300x233.jpg" alt="" width="300" height="233" /></a><p class="wp-caption-text">Software Program Team</p></div>
<p>It depends. It depends on who needs the Program Product owner. Maybe you need a product owner team, and the program product owner works with the core team and the technical product owner works with the software program owner. It depends on what your program needs.</p>
<p>Look at the Program Architect. Your project teams might need their own architects on their teams. Sally&#8217;s project&#8211;which might be a Scrum-of-Scrums, and if it gets bigger, might be its own program&#8211;likely needs its own architect. That architect better talk to the Program architect. And if there&#8217;s a Hardware architect, that architect better talk to the Program architect. So you might need a cross-functional architecture team that I don&#8217;t have a picture of, right now.</p>
<p>So, if you are a program manager, first, are you on the across-the-organization program team, the core team? If so, do you have everyone you need? Does that team have responsibility for deployment? (I don&#8217;t care who has responsibility for deployment, as long as someone does.)</p>
<p>If you are not on the core team, are you on the technical team that works across the technology? Does this team have responsibility for deployment? I&#8217;m being a little touchy about deployment because I have consulted to programs where no one was responsible for deployment and they only discovered it when I asked, &#8220;Who&#8217;s responsible for deployment?&#8221; I thought I was being stupid because I didn&#8217;t see it. No, no one had thought about it. Oops.</p>
<p>So why do you need all these program teams? The core team runs on a different rhythm than the technical program team does. Since the core team has senior managers or senior people on it, I recommend the core team use kanban to reduce the WIP (work in progress). The technical program teams can use iterations if that works for them. Maybe they also use kanban; it doesn&#8217;t matter. But they address risks at different levels.</p>
<p>The core program team is much more strategic. Often program managers at this level manage budgets and project portfolio issues. They are the ones to say, &#8220;Wait a minute. The software program can&#8217;t succeed. We should stop this project.&#8221; That&#8217;s a project portfolio issue.</p>
<p>The technical program team is more strategic than a given project, but is not as likely to manage budget or a project portfolio issue.</p>
<p>Program management, especially for many teams (think &gt; 20 teams) is about making sure you have a product that delivers the business value you want from all that effort. So the technical program will have its own risks and rhythm, which is separate from the core team&#8217;s risks and rhythm.</p>
<p>If you are a program manager, make sure you know which team you are trying to manage (coordinate and collaborate), so you can be most effective.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jrothman.com/blog/mpd/2011/10/which-program-team-are-you-managing.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enticing a Program to Move to Agile</title>
		<link>http://www.jrothman.com/blog/mpd/2011/05/enticing-a-program-to-move-to-agile.html</link>
		<comments>http://www.jrothman.com/blog/mpd/2011/05/enticing-a-program-to-move-to-agile.html#comments</comments>
		<pubDate>Tue, 10 May 2011 11:50:45 +0000</pubDate>
		<dc:creator>Johanna</dc:creator>
				<category><![CDATA[program management]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[influence]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[rule of three]]></category>
		<category><![CDATA[transition to agile]]></category>

		<guid isPermaLink="false">http://www.jrothman.com/blog/mpd/?p=9585</guid>
		<description><![CDATA[There was a question on a LinkedIn group earlier this week about a program with teams with interconnected features and how did you know when a feature was done. After all, a feature wasn&#8217;t done until all the teams were &#8230; <a href="http://www.jrothman.com/blog/mpd/2011/05/enticing-a-program-to-move-to-agile.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There was a question on a LinkedIn group earlier this week about a program with teams with interconnected features and how did you know when a feature was done. After all, a feature wasn&#8217;t done until all the teams were done with it.</p>
<p>After a few more questions, I realized the teams were architectural teams, say, a GUI team, a middleware team, and a database team. I suggested that the project manager rejigger the teams so that they were feature teams, not architectural teams.</p>
<p>Sometimes the project/program manager is new to agile only realizes what the teams need to do in theory, not in practice. Or the project/program manager wants the teams to do things his/her way. I&#8217;ve seen that a lot in my training and consulting. I don&#8217;t think that was the issue in the LinkedIn question this week.</p>
<p>Often, the teams don&#8217;t realize that they are doing something not quite agile. The organization has cheaped out on training, or the training was insufficient or too long ago, or something. Whatever it was, the training wasn&#8217;t enough. The teams don&#8217;t realize that what they are doing isn&#8217;t quite agile, so they are still working in architectural silos, instead of feature teams.</p>
<p>To return to the problem, how to get to a done feature when the teams are still architectural silos, my suggestion was rejigger the teams. For teams accustomed to architectural silos, this can be a shock. You might have to entice them. Here are some potential enticing ideas:</p>
<ol>
<li>Ask them to try to rejigger themselves. &#8220;I&#8217;ve heard about this slice of cake thing. That&#8217;s where we implement a feature from the GUI through the middleware to the DB and back, as thin as it needs to be, but all the way through, end-to-end. Can we try that, make teams to try that?&#8221; (I thought Bill Wake used that metaphor. Do any of you readers have the link? I can&#8217;t find it.)</li>
<li>&#8220;You folks are the experts. What do we have to do to make this feature done?&#8221; Now, you as the project manager, hush. Take notes. Listen. The team is telling you the impediments to agile.</li>
<li>Challenge the team. &#8220;In agile, the idea is that we work features through the architecture. I&#8217;m just the project manager. You folks are the experts. Is there any way to do that with our product?&#8221; Again, you as the PM stop talking. The team is telling you how they can self-organize.</li>
</ol>
<p>Note that none of the ideas are &#8220;You go here and you go there&#8221; team assignments. Why would I do that? Even I, Bigger-Hammer Rothman, know not to do that. People need to see that they have choices. Offer them three choices, as in the Rule of Three, and they will likely generate more choices that are even better than my suggestions.</p>
<p>Don&#8217;t expect that you know all the ways to be agile. And, don&#8217;t lay down the law and tell people, &#8220;We&#8217;re agile. Do it my way.&#8221; That&#8217;s not congruent with agile approaches, and doesn&#8217;t work.</p>
<p>Explain the result you want. Engage people in problem solving. Assume you don&#8217;t know what the solution is. That&#8217;s how you entice a program, team by team, person by person, to move to agile. It&#8217;s not foolproof, but nothing is.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jrothman.com/blog/mpd/2011/05/enticing-a-program-to-move-to-agile.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>&#8220;Headquarters&#8221; and &#8220;Remote&#8221;: Language Matters</title>
		<link>http://www.jrothman.com/blog/mpd/2011/01/headquarters-and-remote-language-matters.html</link>
		<comments>http://www.jrothman.com/blog/mpd/2011/01/headquarters-and-remote-language-matters.html#comments</comments>
		<pubDate>Tue, 11 Jan 2011 16:34:06 +0000</pubDate>
		<dc:creator>Johanna</dc:creator>
				<category><![CDATA[program management]]></category>
		<category><![CDATA[dispersed]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://www.jrothman.com/blog/mpd/?p=9376</guid>
		<description><![CDATA[I&#8217;ve been working with program teams lately, and some of them have issues when they talk about different teams on their programs when they use words such as &#8220;headquarters&#8221; and &#8220;remote&#8221; locations. The headquarters teams tell me the remote teams &#8230; <a href="http://www.jrothman.com/blog/mpd/2011/01/headquarters-and-remote-language-matters.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working with program teams lately, and some of them have issues when they talk about different teams on their programs when they use words such as &#8220;headquarters&#8221; and &#8220;remote&#8221; locations. The headquarters teams tell me the remote teams don&#8217;t listen to them and the remote teams tell me the headquarters teams don&#8217;t hear them. There&#8217;s more to it, but that&#8217;s the start.</p>
<p>When program team members,  and especially program team managers and project managers talk about &#8220;headquarters&#8221; and &#8220;remote&#8221; teams, they, and the teams, assign a hierarchical and positional meaning to the teams.</p>
<p>When you say &#8220;headquarters&#8221; and &#8220;remote&#8221;, the implication is that the people who count are the people at headquarters, and the people who don&#8217;t count are remote. The people whose opinion means something are the people at headquarters and the people whose opinion doesn&#8217;t mean anything are remote.</p>
<p>I am sure, that for the majority of program teams, this is not their intent. They don&#8217;t mean to exclude other people&#8217;s opinions or discount their ideas. But they do. Language matters.</p>
<p>I prefer to call the teams by either their feature team names or their locations: Floor 2, Section 27, Bangalore, Dublin, Cambridge, LA, whatever the geographic location is that defines that team. (I like to identify a <a href="http://www.jrothman.com/blog/mpd/2010/10/dispersed-vs-distributed-teams.html" target="_blank">dispersed team</a>, with a feature.)</p>
<p>However you name your teams, consider avoiding &#8220;headquarters&#8221; and &#8220;remote&#8221;. Consider naming teams after their features. That may help your organization move to cross-functional teams in one location.</p>
<p>Whatever you do, avoid the us and them of &#8220;headquarters&#8221; and &#8220;remote&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jrothman.com/blog/mpd/2011/01/headquarters-and-remote-language-matters.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Starting Agile with a Program</title>
		<link>http://www.jrothman.com/blog/mpd/2010/12/starting-agile-with-a-program.html</link>
		<comments>http://www.jrothman.com/blog/mpd/2010/12/starting-agile-with-a-program.html#comments</comments>
		<pubDate>Tue, 07 Dec 2010 15:45:42 +0000</pubDate>
		<dc:creator>Johanna</dc:creator>
				<category><![CDATA[program management]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[team]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[timebox]]></category>

		<guid isPermaLink="false">http://jrothman.com/blog/mpd/?p=9324</guid>
		<description><![CDATA[The good news is that agile has name recognition. The bad news is that a number of organizations are trying to start agile in a big-bang way, especially on programs. Program management is hard enough without throwing a new approach &#8230; <a href="http://www.jrothman.com/blog/mpd/2010/12/starting-agile-with-a-program.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The good news is that agile has name recognition. The bad news is that a number of organizations are trying to start agile in a big-bang way, especially on programs.</p>
<p>Program management is hard enough without throwing a new approach to projects into the mix. Since so many of you are emailing me about this, here is a draft of what I&#8217;ve written from the program management book. (This is unedited. It&#8217;s my rough draft. Please do review :-)</p>
<ol>
<li>Start one team on an agile project to make a build system that builds the entire product in under one hour. If you already have a product, and your build and system test takes longer than one hour, invest the time to bring that build duration to under one hour. If you don&#8217;t already have a product, this is your opportunity to set up a build system for your product that allows you to build and system test in under one hour.</li>
<li>Start another team on an agile project to create an automated test system for unit and system tests. I don&#8217;t care if they buy, build, or &#8220;steal&#8221;, as in use an open-source system, but I do care that the testing system exists, and is automated. The automation goal is to automate the system test to provide a pass/fail within one hour.</li>
<li>Start a third agile team doing a Hudson Bay Start, or a &#8220;Hello World&#8221; application using the build system and the automated test system.</li>
</ol>
<p>Organize these three teams into one program. Keep the iteration to no more than 2 weeks. (No, not 4 weeks. That&#8217;s too long. 2 weeks max. One week is even better.) See what happens with their need to discuss state with each other. See what happens with their backlogs. See what kinds of status they and you need. Make sure to do a retrospective at the end of the iteration.</p>
<p>Now, based on the retrospective output, you have a program backlog of what you need to do to create a successful agile program. Can you? Can the teams? If you can&#8217;t, don&#8217;t start an agile program. Start a staged delivery program. Start an iterative program. Start with an iterative approach to architecture and then move into feature-based development. (I have pictures for these lifecycles. Do you want to see them or are you tired of seeing lifecycles in my blog posts?)</p>
<p>I strongly recommend against your first agile attempt being a program. If you feel you cannot wait to start agile on a project and you <strong><em>must</em></strong> start with a program, start this way. You&#8217;ll have more success and you&#8217;ll be set up for success.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jrothman.com/blog/mpd/2010/12/starting-agile-with-a-program.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Reduce Friction</title>
		<link>http://www.jrothman.com/blog/mpd/2010/11/reduce-friction.html</link>
		<comments>http://www.jrothman.com/blog/mpd/2010/11/reduce-friction.html#comments</comments>
		<pubDate>Mon, 29 Nov 2010 12:51:16 +0000</pubDate>
		<dc:creator>Johanna</dc:creator>
				<category><![CDATA[program management]]></category>
		<category><![CDATA[friction]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[project team]]></category>
		<category><![CDATA[technical debt]]></category>

		<guid isPermaLink="false">http://jrothman.com/blog/mpd/?p=9300</guid>
		<description><![CDATA[On the bike at the gym this morning, I thought about increasing my level. When I exercise, more friction is good. But when you develop or use products, more friction is bad. Brian Marick talks about  this when he speaks &#8230; <a href="http://www.jrothman.com/blog/mpd/2010/11/reduce-friction.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On the bike at the gym this morning, I thought about increasing my level. When I exercise, more friction is good.</p>
<p>But when you develop or use products, more friction is bad. Brian Marick talks about  this when he speaks and writes about &#8220;<a href="http://www.exampler.com/ease-and-joy.html" target="_blank">ease</a>&#8221; for development teams. If you&#8217;ve encountered a web page that made you do 25 different things before you were able to do what you wanted (some conferences want a whole lot of information, even if they&#8217;ve requested you send in a proposal), you&#8217;ve encountered friction as a user.</p>
<p>Up until this morning, I thought the technical debt and ease metaphors were sufficient to describe the friction that people encounter on projects. However, I also like Keith Ray&#8217;s post, &#8220;<a href="http://agilesolutionspace.blogspot.com/2010/11/high-technical-debt-slum.html" target="_blank">High technical debt = slum</a>.&#8221; I feel like a second-class citizen&#8211;sometimes a third-class :-)&#8211;when I am part of a team or use a product with high friction.</p>
<p>When you hear these statements, you know you have friction:</p>
<ul>
<li>We can&#8217;t move to shorter iterations because of overhead</li>
<li>It works on my machine</li>
<li>Let the testers find the problems</li>
<li>We can&#8217;t finish a feature inside of a week</li>
<li>It&#8217;s just too hard to do &lt;that thing&gt;</li>
</ul>
<p>And, if you don&#8217;t <a href="http://www.itjoblog.co.uk/2010/11/acknowledging-technical-debt.html" target="_blank">acknowledge technical debt</a>, you can&#8217;t do a darn thing about the friction you encounter. It just grows and grows and grows.</p>
<p>If you work on a project, what do you do about the friction? Do you reduce it at all times? Sometimes, that&#8217;s the right approach. Sometimes, it&#8217;s not. If you are a project or program manager, do you look for friction? If not, start. Friction is often an unknown risk coming true.</p>
<p>Most of the time, friction makes our lives miserable. Unless, we&#8217;re in the gym. Then it might make our lives better in the long run. But for work, and for general living, think about reducing friction. Work and life will be much easier.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jrothman.com/blog/mpd/2010/11/reduce-friction.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

