<?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"
	>

<channel>
	<title>Welcome to GlobalLogic Blogs &#187; Agile</title>
	<atom:link href="http://blogs.globallogic.com/category/agile/feed" rel="self" type="application/rss+xml" />
	<link>http://blogs.globallogic.com</link>
	<description>Exponential Innovation</description>
	<pubDate>Mon, 30 Jan 2012 06:04:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>New Year’s Resolutions or Continuous Improvement?</title>
		<link>http://blogs.globallogic.com/new-year-resolutions-or-continuous-improvement</link>
		<comments>http://blogs.globallogic.com/new-year-resolutions-or-continuous-improvement#comments</comments>
		<pubDate>Mon, 16 Jan 2012 20:45:18 +0000</pubDate>
		<dc:creator>Peter Harrison</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Continuous Improvement]]></category>

		<category><![CDATA[New Year’s Resolution]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=1945</guid>
		<description><![CDATA[Last  week, my friend confidently told me his New Year’s resolutions for  2012: eat healthier and lose 30 pounds, bring down his blood pressure  and learn a new language. I laughed because these were the exact same  resolutions he made last year &#8212; and then quickly forgot.
Sound  familiar? The beginning [...]]]></description>
			<content:encoded><![CDATA[<p><span style="baseline;">Last  week, my friend confidently told me his New Year’s resolutions for  2012: eat healthier and lose 30 pounds, bring down his blood pressure  and learn a new language. I laughed because these were the exact same  resolutions he made last year &#8212; and then quickly forgot.</span></p>
<p><span style="baseline;">Sound  familiar? The beginning of the new year is a natural opportunity to  reflect on the past and make resolutions for the future. It’s common  that such resolutions rarely survive the month of January, much less the  entire year. Is it that we’re not disciplined or motivated enough? Not  necessarily. I believe the fault lies in resolutions themselves. </span></p>
<p><span style="baseline;">Too  often on New Year’s Day, we make spur-of-the-moment promises with no  clear action plan of how to achieve them. Most of us expect to see a  drastic change in just a few weeks when, in reality, a significant and  permanent change can take months to realize.</span></p>
<p><span style="baseline;">I  have personally stopped making annual resolutions; instead, I embrace  the power of continuous improvement. Taking a note from my Agile  software teams, I’ve taken to making numerous small changes in my life  that, combined together, have a big impact. For example, I recently  decided to reduce the carbohydrates and glutens in my diet. I still eat  them, just less of them. It may not sound as impressive as completely  cutting these foods out of my diet, but it’s a change that I can  realistically sustain. Similarly, rather than committing to losing 30  pounds in a year, I have started by trying to loose 3 pounds in 30 days.  By layering such incremental improvements on top of each other, I  create goals I can achieve. Each small success builds momentum and the  confidence that I can permanently change my lifestyle for the better. </span></p>
<p><span style="baseline;">So  whether you are trying to build a great software product or just fit  back into your old jeans, take an Agile approach rather than a “big  bang” approach. Commit to one or two small goals at a time, measure  their impact, and adjust accordingly to make them permanent features in  your life. If you repeat this process over the next year, I’m very  confident you will amaze yourself. </span></p>
<p><span style="baseline;">I  look forward to hearing your stories of resolutions either made or  broken, as well as what techniques you’ve found make a lasting  difference.</span></p>
<p><span style="baseline;">Wishing you all a happy, healthy and prosperous new year!</span></p>
<p><span>This Post was an Agile collaboration between Peter Harrison &amp; Mayank Gupta of GlobalLogic</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/new-year-resolutions-or-continuous-improvement/feed</wfw:commentRss>
		</item>
		<item>
		<title>Story Sizing and Estimation ( Do&#8217;s and Dont&#8217;s)</title>
		<link>http://blogs.globallogic.com/story-sizing-and-estimation-a-few-tried-approaches</link>
		<comments>http://blogs.globallogic.com/story-sizing-and-estimation-a-few-tried-approaches#comments</comments>
		<pubDate>Fri, 13 Jan 2012 07:50:03 +0000</pubDate>
		<dc:creator>shilpi.saxena</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Story Estimation]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=1930</guid>
		<description><![CDATA[Here are the user story estimation techniques that I&#8217;ve found effective.This helps escape one of the biggest risk of estimations - we get into , which says estimates are not supposed to be 100% precise.
T-Shirt sizing is vague technique - get rid of it 
Originally I estimated stories as one, two, three, four or as [...]]]></description>
			<content:encoded><![CDATA[<p>Here are the user story estimation techniques that I&#8217;ve found effective.This helps escape one of the biggest risk of estimations - we get into , which says estimates are not supposed to be 100% precise.</p>
<p><strong>T-Shirt sizing is vague technique - get rid of it </strong></p>
<p>Originally I estimated stories as one, two, three, four or as small, medium, large, extra-large. It was always meant to be understood that a medium was twice the size of a small and a large was twice the size of a medium (and so on), but that never seemed to translate well when it came to planning. Then someone recommended to me that I try powers of two. Suddenly we were speaking a language that the business could understand. They knew that an 8 was significantly bigger than a 1. I believe the sizes one, two, four, eight are also much more appropriate. As stories get larger they almost always contain more unknown and risk. A powers of two scale emphasizes the risk associated with large stories.</p>
<p><strong>Use four values - it helps streamlining </strong></p>
<p>I was once on a project that started with 1, 2, 4, 8 as their estimation values. After the first two estimation sessions less than 5% of the stories were ones and about 30% of the stories were twos. The project manager decided to get rid of the one value because it made his life easier. An interesting thing happened at each subsequent estimation meeting, suddenly only 5% of the stories were twos and many more stories had become fours. I don&#8217;t think that the developers consciously changed their scale, but developers are conditioned to be skeptical. Few developers are willing to say with certainty that any given story will be as easy as the scale allows. After witnessing this type of behavior on a few different projects, I prefer a minimum of four point values. I also prefer a maximum of 4 point values. After all, it&#8217;s nothing more than an estimate. If you try to give too much precision to an estimate you&#8217;ll end up having to account for why you missed the mark. The idea is to get a rough idea, not a rigid plan to live off of.</p>
<p><strong>No averages or numbers not on the scale</strong></p>
<p>Four values allow you to get a rough estimate without spending unnecessary time focusing on precision. Sometimes a story feels larger than a two but smaller than a four. The story should not be estimated as a three. There&#8217;s really no reason to use a three. The story carries enough risk or unknowns that it is not a two; therefore, it&#8217;s very likely that it will actually be a four. Using an average or an off scale number can briefly (and unnecessarily) confuse a team member or stakeholder. Also, in the big picture of the project, the occasional uncommon estimate isn&#8217;t likely to make much of a difference. Keep it simple, stick to the scale.</p>
<p><strong>Vote independently- no baising</strong></p>
<p>It&#8217;s human nature to be influenced by other people. If a technical leader says a story is a two, it&#8217;s likely that the rest of the team will follow his lead. For this reason I prefer an estimation process that lets each team member vote independently. This can be done by using sheets of paper that no one reveals until everyone is ready. Another option (that I prefer) is to give your estimation rock-paper-scissors (RPS) style. In our estimation meetings we talk about a story until we are ready to estimate then we all &#8220;throw&#8221; our estimations the same as you would &#8220;throw&#8221; rock, paper, or scissors. What I mean by &#8220;throw our estimation&#8221; is that if we think it&#8217;s a 1 we point 1 finger. Likewise a 2 is two fingers and 4 is four fingers. If you need to throw an 8, you can use both hands.</p>
<p><strong>Take the largest estimate - that&#8217;s the safest way</strong></p>
<p>Even when reminded, developers seem to have a hard time estimating with a team in mind. If a developer thinks they can do the story in 1 day, they throw 1 finger. Unfortunately, that developer may not be available to do the story, and then some other team member is stuck working on a story that they thought was a 2 or even a 4. I prefer to always take the largest estimate thrown by any team member. You may consider this to be sandbagging, but in reality it&#8217;s likely that each team member has identified different risks and the team member with the largest estimate has probably correctly identified that there is more risk than the other members have thought of.</p>
<p>Taking the largest estimate has additional benefits. If you must agree on a lower estimate then the team member with the larger estimate will need to discuss why they chose a larger value. This discussion can be uncomfortable for developers who are less senior on the team. They may not know how to do something as quickly, based on limited experience with the language or tools. Their concerns are often justified by their skill level, and it would be unfortunate if they felt uncomfortable giving their true estimate because they were afraid to discuss why it was higher.</p>
<p>Any discussion around taking a higher or lower value may lead to the entire team raising their value, or it may lead to that developer uncomfortably lowering their estimate. Either way, you&#8217;ll need to spend more time talking and you wont have gained&#8211;in the end it&#8217;s consistency that matters. You always know how many stories you expect to get done in an iteration by tracking velocity. Therefore, even if your estimates are &#8220;bloated&#8221; so will your velocity be, thus it has no effect on planning.</p>
<p>Finally, taking the largest estimate can help save time in an estimation meeting. If any member of the team believes the story is an 8 he can speak up at any time while discussing the story and announce that he is going to throw an eight. Unless someone else believes that there is a large estimation gap among team members, there&#8217;s no reason to continue talking about the story since it will ultimately become an eight anyway.</p>
<p><strong>Large estimate gaps - something is not right </strong></p>
<p>When estimating it&#8217;s usually the exception that the entire team agrees on the size of a story. Like I previously said, I like to handle the mismatch by always taking the larger estimate. However, sometimes a large gap represents a misunderstanding. For this reason any time there is a two value gap in estimation, additional conversation always occurs (e.g. if a team member throws a 1 and another throws a 4, some clarification needs to occur). Discussing large gaps also ensures that taking the largest estimate has less chance of being abused.</p>
<p><strong>Insufficient information - may lead to inaccurate estimates</strong></p>
<p>On occasion a story may need leave the meeting unestimated. It&#8217;s better to ask for more information than to give an estimate that you are uncomfortable with. An estimate of 8 implies that it&#8217;s a large story, but you expect it to take twice as long as a 4. Therefore, don&#8217;t simply estimate ill-defined stories as eights, because you will likely be expected to get it done in the same amount of time as it takes to get two stories estimated as fours completed. The goal of an estimation meeting isn&#8217;t to estimate all the stories, it&#8217;s to provide estimates on the stories that provide sufficient information.</p>
<p><strong>Business and Developers - the two different line of thoughts</strong></p>
<p>It&#8217;s as simple as this, the business wants to know what functionality they can get in the next iteration. To know what to expect they need estimates. Since the business will not be writing the code, they cannot contribute proper estimates. The more they are involved (in the actual estimation), the less likely it is that they will receive realistic estimates. The best domain experts answer questions in meetings, but never assert in any way the level of effort it will take to complete any given story.</p>
<p><strong>Estimation group size - the right number is the trick</strong></p>
<p>Teams come in many different sizes. On smaller teams (6 or less) I suggest the entire team attend the estimation session. The many points of view are likely to solidify vision and positively contribute to an estimate. However, I believe there is a point of diminishing returns. Not everyone on a large team needs to be part of estimating each story. Additionally, it&#8217;s an estimate, 6 people should be just as accurate as 15 people would be. If your team is larger than 6 people I suggest breaking into smaller groups for estimation. In general I like to get at least 3 people to estimate any given story, but no more than 6.</p>
<p><strong>New stories - when should they be estimated</strong></p>
<p>New stories come in two forms: new feature requests and stories that split. I generally wait to estimate new stories based on their priority. If a story needs to be done in the next iteration, it generally requires an immediate estimate. However, if the new stories aren&#8217;t going to be played for several iterations it can make sense to hold off until you have enough stories to justify an estimation meeting. I find estimates from estimation meetings to be more reliable, since they come from an environment where everyone is focused solely on estimation. Stories resulting from a split provide an additional complication: they likely already have an estimate. I strongly suggest that the new stories be estimated without taking into consideration the previous estimate. If a story carried enough risk or uncertainty that it required splitting, it&#8217;s not likely that the estimate is realistic&#8211;ignore the original estimate.</p>
<p><strong>Required participation - this is important </strong></p>
<p>This suggestion is a very important one. In theory, no developer from outside the team should be attending an estimation session. That means that every developer that attends an estimation session will potentially be tasked with working on a story that&#8217;s being estimated. If a developer is not comfortable estimating a story, then I&#8217;m not comfortable with them working on the story. Of course, there are exceptions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/story-sizing-and-estimation-a-few-tried-approaches/feed</wfw:commentRss>
		</item>
		<item>
		<title>Simplifying Agile - The art of writing User Stories</title>
		<link>http://blogs.globallogic.com/simplifying-agile-the-art-of-writing-user-stories</link>
		<comments>http://blogs.globallogic.com/simplifying-agile-the-art-of-writing-user-stories#comments</comments>
		<pubDate>Sun, 08 Jan 2012 13:30:13 +0000</pubDate>
		<dc:creator>Sachin Gupta</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[documentation]]></category>

		<category><![CDATA[requirements]]></category>

		<category><![CDATA[template]]></category>

		<category><![CDATA[user stories]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=1890</guid>
		<description><![CDATA[When I started my current project as a Functional Analyst last year, I was advised to write user stories in the form of &#8220;As a &#60;user&#62;, I want &#60;goal&#62; so that &#60;reason&#62;”. It is a unique way to document the stories but definitely simplifies various challenges of the requirements documentation.
By learning how to gather requirements [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">When I started my current project as a Functional Analyst last year, I was advised to write user stories in the form of &#8220;As a &lt;user&gt;, I want &lt;goal&gt; so that &lt;reason&gt;”. It is a unique way to document the stories but definitely simplifies various challenges of the requirements documentation.</span></p>
<p class="MsoNormal"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">By learning how to gather requirements as user stories, I realized how agile plans are always kept up-to-date, contain only the latest and greatest information, and avoid one of the greatest wastes our industry has ever known—premature up-front analysis.</span></p>
<p class="MsoNormal"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">The key challenges that teams run into when they heavily rely on documentation for their software requirements are that:</span></p>
<ul>
<li><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">They can&#8217;t handle changes effectively</span></li>
<li><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">They build according to specs instead of what the customer wants</span></li>
<li><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">They make bad guess and false assumptions</span></li>
<li><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">They waste a lot of time</span></li>
</ul>
<p class="MsoNormal"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">So, Is a requirement really a requirement? If I put it in words of Kent Beck, </span><span style="&quot;Calibri&quot;,&quot;sans-serif&quot;;">one of the 17 original signatories of the Agile Manifesto</span><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">, then the term &#8216;Requirement&#8217; is just plain wrong. </span></p>
<p class="MsoNormal"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">“<em>Software development has been steered wrong by the term requirement, defined in the dictionary as something that is mandatory or obligatory. The word carries a connotation of absolutism and permanence, inhibitors for embracing change. And the word “requirement” is just plain wrong.</em></span></p>
<p class="MsoNormal"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;"><em>Out of the thousands of pages used to describe requirements, if you deliver the right 5, 10 or 20 percent, you will likely realize all of the business benefit envisioned for the whole system. So what were the other 80 percent? Not requirements—they weren’t mandatory or obligatory.</em>”</span></p>
<p class="MsoNormal"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">The problem with gathering requirements as documentation isn’t one of volume—it’s one of communication. </span></p>
<ul>
<li><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">First, you can’t have a conversation with a document </span></li>
<li><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">Second, it’s just really easy to misinterpret what someone wrote </span></li>
</ul>
<p class="MsoNormal"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">This leads us to one of the most important principles of agile: </span></p>
<p class="MsoNormal"><strong><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. </span></strong></p>
<p class="MsoNormal"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">So, what we need is something that enables us to have a conversation about a requirement, captures the essence of what our customer wants, and is small enough for planning yet descriptive enough to remind us what we are talking about &#8230;ENTER A USER STORY</span></p>
<p class="MsoNormal" style="normal;"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">Agile user story is a short description of a promise of a conversation. Agile encourages the user stories on index cards </span><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">to remind teams that the initial goal of the requirements-gathering exercise isn’t to get into all the details. It’s to write down a few key words to capture the spirit of the feature and file it away for a later date.</span></p>
<p class="MsoNormal" style="normal;"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">Why just few key words? </span><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">To save us the time and energy of going all in it now and having to redo it all later, we defer diving into the low-level details until later.</span></p>
<p class="MsoNormal" style="normal;"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">User stories have to make sense to business. That’s why we always try to write them in simple terms and try to stay away from any technical jargon. It is better if we put the information in terms that business understands. </span></p>
<p class="MsoNormal" style="normal;"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">A really good user story is one that goes from end to end - slicing through all the layers of the architecture and delivers something of value. The good user stories are Independent, Negotiable, Testable, and Concise that can be Estimated easily. </span></p>
<p class="MsoNormal" style="normal;"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">A few short, well-chosen words are usually enough to remind the team about what a particular user story is about: that brings up our User Story Template in existence </span></p>
<p class="MsoNormal" style="normal;"><strong><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">AS A &lt;USER&gt; I WANT &lt;GOAL&gt; SO THAT &lt;REASON&gt;</span></strong><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;"> </span></p>
<p class="MsoNormal" style="normal;"><span style="&quot;Verdana&quot;,&quot;sans-serif&quot;;">The nice thing about this template is it answers three important questions about the user story: <strong><em>the who, the what, and the why</em></strong>. It gives a little more context and really emphasizes and focuses on the business, which is a good thing.</span></p>
<p class="MsoNormal">
<p class="MsoNormal">
<p class="MsoNormal">
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/simplifying-agile-the-art-of-writing-user-stories/feed</wfw:commentRss>
		</item>
		<item>
		<title>Tech Trends for 2012</title>
		<link>http://blogs.globallogic.com/tech-trends-for-2012</link>
		<comments>http://blogs.globallogic.com/tech-trends-for-2012#comments</comments>
		<pubDate>Thu, 29 Dec 2011 16:39:53 +0000</pubDate>
		<dc:creator>Peter Harrison</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Cloud]]></category>

		<category><![CDATA[Global Product Development]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[2012]]></category>

		<category><![CDATA[design]]></category>

		<category><![CDATA[future]]></category>

		<category><![CDATA[Innovation]]></category>

		<category><![CDATA[m2m]]></category>

		<category><![CDATA[political apps]]></category>

		<category><![CDATA[predictions]]></category>

		<category><![CDATA[tablet]]></category>

		<category><![CDATA[trends]]></category>

		<category><![CDATA[TV]]></category>

		<category><![CDATA[voice]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=1792</guid>
		<description><![CDATA[As the CEO of a software R&#38;D services firm that focuses on new and game-changing technology, I’m often asked what technology trends I see dominating the year ahead. I have several predictions for 2012, and I thought it would be fun to share them with you and learn what trends you foresee developing in the [...]]]></description>
			<content:encoded><![CDATA[<p><span>As the CEO of a software R&amp;D services firm that focuses on new and game-changing technology, I’m often asked what technology trends I see dominating the year ahead. I have several predictions for 2012, and I thought it would be fun to share them with you and learn what trends you foresee developing in the upcoming twelve months:</span></p>
<ol>
<li><strong>Revenge of the Tablet:</strong> Just as Android created some serious competition for Apple with smartphones, it&#8217;s about to do the same with the tablet. 2012 will be the year when we finally see some serious alternatives to the iPad.</li>
<li><strong>Gesture-Based TV:</strong> The last few years have seen gesture-based technology come to the phone, the tablet and the game console. Next up will be the TV. Why search for the remote when you can just snap your fingers? And why not run apps directly on your TV?</li>
<li><strong>Machine to Machine:</strong> Next year we’ll see more and more real-world applications of M2M. Our cars already talks to the cloud; very soon anything and everything of value will.</li>
<li><strong>Social Goes Enterprise:</strong> I predict that 2012 will be the year when most corporations start to embrace social networks and look for ways to harness their value. Think: “Who in my company knows how to optimize Android for video the best?”</li>
<li><strong>Return of Zero Install:</strong> With the introduction of HTML5 and 4G/LTE, our tablets and smartphones will no longer be dependent on apps and app stores. We’ll be able to access an app’s functionality without the installation.</li>
<li><strong>A Planet’s Worth of Data:</strong> With sensors showing up in everything, the amount of data we can gather and keep is exploding. What if all this data found its way back to the cloud? Well soon it will, and we’ll need BI tools that can help us understand not just a company’s worth of data, but a planet’s worth.</li>
<li><strong>Consumerization of Healthcare:</strong> With government incentives pushing doctors from one side and patients pulling from the other, we’ll soon see an explosion of consumer-to-doctor options. We&#8217;re already seeing sites like Zocdoc change the way you schedule an appointment. A patient record that you can actually see can&#8217;t be far behind.</li>
<li><strong>Political Apps:</strong> Technology is having an increasing impact on politics, especially elections. With the 2012 U.S. election less than a year away, you can bet this cycle will see an explosion of political apps for tablets and smartphones.</li>
<li><strong>Voice Gets Smart:</strong> With the Siri feature on iPhone 4S, you can bet voice apps are about to get a major boost. We’ll see voice interfaces getting built into more and more devices.</li>
<li><strong>Agile in Business:</strong> This rapid development approach, which favors continuous results over analysis paralysis, is making its way into business. Agile makes sense for companies that want to get into new markets quickly and use learning over planning as the way to &#8220;get it right.”</li>
</ol>
<p><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/tech-trends-for-2012/feed</wfw:commentRss>
		</item>
		<item>
		<title>Build management for iOS and Mac based projects</title>
		<link>http://blogs.globallogic.com/build-management-for-ios-and-mac-based-projects</link>
		<comments>http://blogs.globallogic.com/build-management-for-ios-and-mac-based-projects#comments</comments>
		<pubDate>Fri, 23 Dec 2011 06:31:38 +0000</pubDate>
		<dc:creator>Praveen Jha</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Global Product Development]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[CI]]></category>

		<category><![CDATA[iOS]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=1802</guid>
		<description><![CDATA[I remember my career&#8217;s first and career&#8217;s largest software project with over 150 team members and more than 20 different modules working as a fresher in developing India&#8217;s largest electronic depository system - NSDL.I was fresh out from my university and my colleagues 2 years older in project used to scare me with their bombardment [...]]]></description>
			<content:encoded><![CDATA[<p>I remember my career&#8217;s first and career&#8217;s largest software project with over 150 team members and more than 20 different modules working as a fresher in developing India&#8217;s largest electronic depository system - NSDL.I was fresh out from my university and my colleagues 2 years older in project used to scare me with their bombardment of knowledge transfers almost every day. Of all the module we had in that project, one was auto-installation. This module had 5-6 members dedicatedly working days and nights merging various modules together to create a single installer that could be delivered to the client for weekly testing. Daily delivery of any application/module was out of question. I was told that &#8220;Installshield&#8221; was a saving grace for the entire team and the 5-6 member team was a boon for making final deliveries. This project had been in development for a couple of years with a couple of modules already in place. My lead told me that nobody really knew how long it would take to finish delivery and integration of everything that was committed to client. From this I learned a common story of software projects: integration is a long and unpredictable process. One thing or the other gets missed and the project can meet the doom at the most unpredictable and inopportune moments.</p>
<p>Since that date, I have been part of multiple teams with a wide variety of experienced team members (in one project I&#8217;ve worked with the punch card developers of the ages of 1960s). One particular project with a very small group of developers was at Liebert,Ohio. My colleagues at Liebert, and many others around the world, treated  integration as a non-event. Any individual developer&#8217;s work is 		only a few hours away from a shared project state and can be 		integrated back into that state in minutes. Any integration errors 		are found rapidly and can be fixed rapidly.</p>
<p>This contrast is not the result of an expensive or for that matter any complex 		tool. The essence of all of this lies in a very simple practice of everyone on 		the team integrating frequently, usually daily, against a 		controlled source code repository or any source code configuration management tool like SVN, CVS, VSS, Git, Mercurial, Perforce etc. to name a few.</p>
<p>This practice becomes all the more very important when teams are Agile or practice XP (extreme programming) or any such other method of development like TDD etc. Creating continuous builds for every change that&#8217;s committed into the repository becomes a matter of seconds and it also eases the troubleshooting any broken feature. There are multiple tools available in the market. The most commonly used and heard is the CruiseControl.</p>
<p>The story is, however, very different when it comes to mobile projects especially iOS based projects. We had a tough time initially having to come up with something that builds continuously and communicates any issue(s) found as soon as they happen. I am going to describe here in as detailed way as possible for setting up an automated process for building the apps for iOS based projects. But before we do that I think it will be wise to consider the following: Integration is primarily about communication. Integration 				allows developers to tell other developers about the changes 				they have made. Frequent communication allows people to know 				quickly as changes develop. The one prerequisite for a developer committing to the 				mainline is that they can correctly build their code. This, of 				course, includes passing the build tests. As with any commit 				cycle the developer first updates their working copy to match 				the mainline, resolves any conflicts with the mainline, then 				builds on their local machine. If the build passes, then they 				are free to commit to the mainline. By doing this regularly and frequently, developers quickly find out if 				there&#8217;s a conflict between two developers. The key to fixing 				problems quickly is finding them quickly. With developers 				committing every few hours a conflict can be detected within a 				few hours of it occurring, at that point not much has 				happened and it&#8217;s easy to resolve. Conflicts that stay 				undetected for weeks can be very hard to resolve. So if your team is not accustomed for this practice yet, this process is going to be more of a headache for you rather than an ease. If your developers keep their code changes for weeks for fear of losing them, it won&#8217;t work for your team.</p>
<p>The general rule of thumb is that every developer should 				commit to the repository every day. Practically it&#8217;s often more useful if developers commit more frequently than 				that. The more frequently you commit, the less places you have 				to look for conflict errors, and the more rapidly you fix 				conflicts. Besides it also an excellent advantage. And that is that frequent commits encourage developers to break down their 				work into smaller chunks of a few hours each. This helps 				track progress and provides a sense of progress for the entire team. Often people 				initially feel they can&#8217;t do something meaningful in just a few 				hours, but I&#8217;ve found that mentoring and practice helps them learn. This way team becomes more Agile and aligned to achievement.</p>
<p>Having said that we have come to the first necessity of setting up the process and that is:</p>
<ol>
<li><span style="#993300;"><span style="#993300;">Everyone commits to the mainline everyday.</span></span></li>
</ol>
<div>Now, if the first practice is being followed, it will mean that we have a team that gets frequent tested 				builds. Please be warned this ought to mean that the mainline stays in a 				healthy state. In practice, however, things still do go 				wrong. I have had several occasions when I had to go back 12 revisions back in SVN in the mainline and revert all changes. One reason is discipline, people not doing an update 				and build before they commit. Another is environmental 				differences between developers&#8217; machines (which at times causes havoc in the build process - for example - one team sitting in another geography using XCode 3.2.x and other team working from another geography using XCode 4.x toolsets).</div>
<div>
<p>As a result you should ensure that regular builds happen on 				an integration machine (preferably a Mac server) and only if this integration build 				succeeds should the commit be considered to be done. Since the 				developer who commits is responsible for this, that developer 				needs to monitor the mainline build so they can fix it if it 				breaks. An impact analysis leads me to believe that you shouldn&#8217;t go home 				until the mainline build has passed with any commits you&#8217;ve 				added late in the day. I know at times this can become inhuman, but why commit something so late in the day and break the build than wait for the night to pass so other teams working from other geographies can still continue to work and you can commit your changes on the next day?</p>
<p>There are two main ways I&#8217;ve seen to ensure this: using a manual build or a continuous integration server. The manual build approach is the simplest one to 				describe. Essentially it&#8217;s a similar thing to the local build 				that a developer does before the commit into the 				repository. The developer goes to the integration machine, 				checks out the head of the mainline (which now houses his last 				commit) and kicks off the integration build. Usually for iOS based or Mac based projects, such an activity could be managed by writing a very simple shell script using the tools which come by default with the installation of XCode and developer tools on any mac if you are a registered developer with Apple.</p>
<p>Having said that we have the second general rule for this process to work:</p>
<p><span style="#993300;"><span style="#993300;">2.Every commit should build the mainline on an integration machine or server</span></span></p>
<p>Given that all of the good things mentioned above is practiced by the development and QA team, let&#8217;s take a look at the manual process.</p>
<p>XCode tools are in general installed within the /Developer/ directory unless you changed the directory during the XCode installation process. Assuming you chose the default locations when installing XCode, I&#8217;m going to put down some bash commands here which will help you understand the build process that XCode follows when you, as an iOS developer, start building your project and hence the output product.</p>
<ul>
<li>Every build process involves code signing if you are doing it for the device (iPhone, iPod, iPad etc.). It makes sense to understand what XCode does to access the keychain security that you have on your Mac. Keychain security is like a vault for all your keys, passwords, certificates etc. Tools can use this vault to get access to the certificates that you downloaded and installed from developer.apple.com for your application identifier. Your application needs to be codesigned to be able to run successfully on a developer&#8217;s or QA&#8217;s device. XCode uses your security credentials to unlock access to keychain security. You could also do the same to unlock the keychain containing the provisioning profile&#8217;s private key and set it as the default keychain. (You might need sudo access for running these commands)</li>
</ul>
<div style="30px;"><span style="#ff6600;"><span class="s1">security unlock-keychain -p </span>&#8220;YourKeychainPassword&#8221;<span class="s1"> </span>&#8220;$HOME/Library/Keychains/login.keychain&#8221;</span></div>
<div style="60px;">assuming your default keychain is login keychain. If not, you could set the default keychain thus:</div>
<div style="60px;"><span style="#ff6600;"><span class="s1">security default-keychain -s </span>&#8220;$HOME/Library/Keychains/login.keychain&#8221;</span></div>
<div>
<ul>
<li>Now, to make sure that our provisioning profile is valid for app codesigning, you could simply ask keychain about the same:</li>
</ul>
<div style="30px;">
<p class="p1" style="30px;"><span style="#ff6600;"><span style="#ff6600;">security find-identity -p codesigning -v</span></span></p>
<p class="p1">
<p class="p1">You should also verify that the requested provisioning profile can be found.</p>
<p class="p1"><span style="#ff6600;"><span style="#ff6600;">security find-certificate -a -c <span class="s1">&#8220;iPhone Developer: developers name&#8221;</span> -Z | grep ^SHA-<span class="s2">1</span></span></span></p>
<p class="p1">XCode comes with a tool called xcodebuild. It&#8217;s this that is responsible for building our products when we hit build or build &amp; Archive in XCode.</p>
<p class="p1">Let&#8217;s see what all we could use</p>
<p class="p1">
<p class="p1"><span style="#ff6600;"><span style="#ff6600;">xcodebuild -showsdks</span></span> shows all the available SDKs on your mac.</p>
<p class="p1">
<p class="p1"><span style="#ff6600;"><span style="#ff6600;">xcodebuild -list -workspace YourWorkspaceName</span></span> describes your workspace.</p>
<p class="p1">Before we jump on to other commands for manual build, most of the times, you&#8217;d like to increment your info.plist&#8217;s version number. XCode could that as well using</p>
<p class="p1">
<p class="p1"><span style="#ff6600;"><span style="#ff6600;">agvtool -noscm new-version -all YourNewBuildNumber</span></span></p>
<p class="p1">
<p class="p1"><span style="#ff6600;"><span style="#ff6600;">CFBundleShortVersionString</span></span> and <span style="#ff6600;"><span style="#ff6600;">CFBundleIdentifier</span></span> should be available in info.plist for the versioning to work properly.</p>
<p class="p1">Now go to your project directory and launch the build process:</p>
<p class="p1">
<p class="p1"><span style="#ff6600;"><span style="#ff6600;">xcodebuild -verbose -workspace YourW<span class="s1">orkspaceName</span> -scheme YourS<span class="s1">chemeName</span> -sdk iphoneos -configuration Debug clean build &gt;| xcodebuild_output</span></span></p>
<p class="p1">Mind you, you should build it for AdHoc or Release, if you want to release it to QA so you&#8217;d run</p>
<p class="p1">
<p class="p1"><span style="#ff6600;">xcodebuild -verbose -workspace YourW<span class="s1">orkspaceName</span> -scheme YourS<span class="s1">chemeName</span> -sdk iphoneos -configuration Release clean build&gt;| xcodebuild_output</span></p>
<p class="p1">It&#8217;s going to take sometime depending upon how many files the compiler has to compile or how many png files to be copied or how many header files to be moved etc. Sit tight while xcodebuild finishes execution or displays you a build error that you&#8217;d need to fix. If all goes well and your project/scheme/workspace were in good shape, it will display a message &#8220;****BUILD SUCCEEDED****&#8221;. You will have the output in xcodebuild_output file within the directory where you started this build process (pwd).</p>
<p class="p1">If you&#8217;re using XCode 4.x, you would have noticed that the .app folder is no longer built by default under the /build/ directory within your project directory. This is commanded by the preferences in your &#8220;<span style="#ff6600;">XCode-&gt;Preferences-&gt;Locations-&gt;Derived Data-&gt;Advanced-&gt;Build Location</span>&#8221; set value. By default it will be under &#8220;Derived Data location&#8221;.</p>
<p class="p1">This derived data location is very difficult to find but thanks to shell script you could do this easily:</p>
<p class="p1"><span style="#ff6600;"><span class="s1">devired_data_path=</span>&#8220;$HOME/Library/Developer/Xcode/DerivedData&#8221;</span></p>
<p class="p1">get the name of the workspace to be build, used as the prefix of the DerivedData directory for this build:</p>
<p class="p1"><span style="#ff6600;"><span class="s1">workspace_name=$(echo </span>&#8220;YourWorkspaceName&#8221;<span class="s1"> | sed -n </span>&#8217;s/\([^\.]\{1,\}\)\.xcworkspace/\1/p&#8217;<span class="s1">)</span></span></p>
<p class="p1">Let&#8217;s try and locate this project&#8217;s DerivedData directory:</p>
<p class="p1">
<p class="p1"><span style="#ff6600;">project_derived_data_directory=$(grep -oE <span class="s1">&#8220;$workspace_name-([a-zA-Z0-9]+)[/]&#8220;</span> xcodebuild_output | sed -n <span class="s1">&#8220;s/\($workspace_name-[a-z]\{1,\}\)\//\1/p&#8221;</span> | head -n1)</span></p>
<p class="p1">
<p class="p1"><span style="#ff6600;"><span class="s1">project_derived_data_path=</span>&#8220;$devired_data_path/$project_derived_data_directory&#8221;</span></p>
<p class="p1">
<p class="p1">Now, that we have the derived data location, we can get to the built app:</p>
<p class="p1">
<p class="p1"><span style="#ff6600;"><span class="s1">project_app=$(ls -</span><span class="s2">1</span><span class="s1"> </span>&#8220;$project_derived_data_path/Build/Products/Release-iphoneos/&#8221;<span class="s1"> | grep </span>&#8220;.*\.app$&#8221;<span class="s1"> | head -n1)</span></span></p>
<p class="p1">
<p class="p1">Copy the product .app folder and the debug symbols .dSYM files into your project directory for easy access:</p>
<p class="p1">
<p class="p1"><span style="#ff6600;"><span class="s1"> cp -Rf </span>&#8220;$project_derived_data_path/Build/Products/Release-iphoneos/$project_app&#8221;<span class="s1"> $project_dir</span></span></p>
<p class="p1"><span style="#ff6600;"><span class="s1"> cp -Rf </span>&#8220;$project_derived_data_path/Build/Products/Release-iphoneos/$project_app.dSYM&#8221;<span class="s1"> $project_dir</span></span></p>
<p class="p1">where project_app is the name of your app and project_dir is the full path to current working directory of your project.</p>
<p class="p1">If you could all of the above, you already have the .app file which you can drag and drop into iTunes library section and sync to get the app installed on your connected device. You also have the debug symbols that you need to debug your application.</p>
<p class="p1">If however, you also want the .ipa (archive) file to be created, you could go ahead and run the following commands to sign build for distribution and package as a .ipa:</p>
<p class="p1">
<p class="p1"><span style="#ff6600;"><span class="s1">xcrun -sdk iphoneos PackageApplication </span>&#8220;$project_dir/$project_app&#8221;<span class="s1"> -o </span>&#8220;$project_dir/$project_app.ipa&#8221;<span class="s1"> &#8211;sign </span>&#8220;iPhone Distribution: Praveen Jha&#8221;<span class="s1"> &#8211;embed </span>&#8220;$mobileprovision&#8221;</span></p>
<p class="p1">where <span class="s1">mobileprovision is the full path to </span>the mobil provisioning profile with which you want the app to be signed. My suggestion would be to keep it somewhere within your project directory and rename it to something more identifiable like &#8220;Developer.mobileprovision&#8221; or &#8220;Distribution.mobileprovision&#8221;.</p>
<p class="p1">You should also verify the resulting ipa archive just to be sure. You could do this by</p>
<p class="p1">
<p class="p1"><span style="#ff6600;">codesign -d -vvv &#8211;file-list - <span class="s1">&#8220;$project_dir/$project_app&#8221;</span></span></p>
<p class="p1">So now you have the .app, .ipa as well as .dSYM files. you are all set.</p>
<p class="p1">you could compile all of the above commands into a single shell script file and run them in sequence as a bash shell script in one single go.</p>
<p class="p1">
<p class="p1">This completes the manual setup of the build process for mainline on the integration machine or server. In the next blog, I&#8217;ll describe how to setup the automated build process that will take up all the code from your repository and initiate the build process on its own. It will also inform you of success or failure immediately and will direct you to exact locations from where the build failed. But I&#8217;d highly recommend getting used to the commands above to fully understand the build process - manual or automated. you won&#8217;t follow what might be going in behind the scene if you don&#8217;t appreciate what&#8217;s being done manually here.</p>
<p class="p1">Until then Ciao.</p>
<p class="p1">Cheers!</p>
<p class="p1">
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/build-management-for-ios-and-mac-based-projects/feed</wfw:commentRss>
		</item>
		<item>
		<title>Why GPS Embodies Agile</title>
		<link>http://blogs.globallogic.com/why-gps-embodies-agile</link>
		<comments>http://blogs.globallogic.com/why-gps-embodies-agile#comments</comments>
		<pubDate>Thu, 08 Dec 2011 17:35:29 +0000</pubDate>
		<dc:creator>Peter Harrison</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=1744</guid>
		<description><![CDATA[
As I make travel plans over the holiday season, I&#8217;m reminded of the technology behind Global Positioning Systems (GPS) and how it has made a huge impact on the way we interact with the world. From satellite street views to real-time functioning, GPS software has dramatically increased our ability to navigate new cities &#8212; and [...]]]></description>
			<content:encoded><![CDATA[<div>
<p class="MsoNormal"><span>As I make travel plans over the holiday season, I&#8217;m reminded of the technology behind Global Positioning Systems (GPS) and how it has made a huge impact on the way we interact with the world. From satellite street views to real-time functioning, GPS software has dramatically increased our ability to navigate new cities &#8212; and even new countries &#8212; with the ease of a native. Interestingly, GPS-based apps embody the Agile principles of adaptability, real-time reports and a focus on forward momentum. Let&#8217;s consider a few of the things they have in common:</span></p>
<p class="MsoNormal"><strong><span>Adaptability.</span></strong><span> </span><span>GPS-based products work on the principle that plans are important, but continuous planning is more important. It’s not just about determining the appropriate deadline or schedule. Planning, especially in an environment where change is the only constant, is about adapting quickly to the situation. Just as GPS apps adapt to detours and other factors by quickly providing an alternate route that minimally impacts a traveler’s time and distance, so do Agile teams employ iterative planning to work around changes while still delivering high-quality products that maximize a client’s ROI.</span></p>
<p class="MsoNormal"><strong><span>Real-Time Reports.</span></strong><span> </span><span>Kids are infamous for asking “Are we there yet?” when driving on a long trip &#8212; or even short ones, for that matter. But with GPS, they can see exactly how much longer and farther the trip will take. Similarly, I had a senior developer recently tell me at an Agile event that as soon as she transitioned to Agile principles, she no longer had people asking her “Are we done yet?” The iterative and incremental approach helped her entire team &#8212; including management &#8212; see in real-time which user stories were developed, which were in-progress, etc.</span></p>
<p class="MsoNormal"><strong><span>Forward Focus.</span></strong><span> </span><span>GPS also takes an entirely different approach to how you view a progress report. Instead of focusing on how far you’re already gone, GPS instead keeps you updated on the distance and time you have left. Agile teams also learn to focus on how much work is left by keeping a close eye on sprint and release burn down charts. This enables them to identify how many more sprints are required to deliver the entire backlog of a product based on the team’s average velocity.</span></p>
<p class="MsoNormal"><span>When people ask me how Agile teams work, I tell them to think about how they interact with their GPS device. Used wisely, you will spend less time planning a trip and more time actually enjoying your journey and getting towards your goal. Agile principles in turn will lead your team to a more predictable outcome; help them quickly respond to change; bring a higher level of innovation; reduce waste and minimize risk; and help you arrive at the correct destination on time and less stressed.</span></p>
<p class="MsoNormal"><span>This Post was an Agile collaboration between Peter Harrison &amp; Mayank Gupta of GlobalLogic</span></p>
<p class="MsoNormal"><span> </span></p>
<p class="MsoNormal"><span> </span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/why-gps-embodies-agile/feed</wfw:commentRss>
		</item>
		<item>
		<title>Scrum for Maintenance Projects</title>
		<link>http://blogs.globallogic.com/scrum-for-maintenance-projects</link>
		<comments>http://blogs.globallogic.com/scrum-for-maintenance-projects#comments</comments>
		<pubDate>Fri, 11 Nov 2011 12:07:20 +0000</pubDate>
		<dc:creator>Amol Umate</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[maintenance projects]]></category>

		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=1713</guid>
		<description><![CDATA[
Maintenance Projects are little different than development project in the nature. They are more volatile than typical development projects. All the activities planned may or may not get executed during the sprint and there may be possibility of sudden change in priorities in the plan.
Planning for Maintenance Projects 
Looking at the nature of execution, we [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">
<p class="MsoNormal">Maintenance Projects are little different than development project in the nature. They are more volatile than typical development projects. All the activities planned may or may not get executed during the sprint and there may be possibility of sudden change in priorities in the plan.</p>
<h3><span>Planning for Maintenance Projects </span></h3>
<p class="MsoNormal">Looking at the nature of execution, we make take few things into account while planning for maintenance projects.</p>
<p class="MsoListParagraphCxSpFirst">
<ul>
<li>Sprint Iteration should be planned for shorter duration (ex: 1 week) to minimize the impact of unplanned movement.</li>
<li>Activities can be planned into following categories:
<ul>
<li>Features pulled from Product backlog</li>
<li>Daily activities required during maintenance (like daily system health check-up, back up, clean up)</li>
<li>Issue fixing for known open issues identified in earlier sprints maintained in issue backlog.</li>
<li>Time planned for issue fixing which may be newly identified in this sprint (aka placeholder).  This is buffer time for fixing high issues which may be induces during the sprint. The exact time may not be planned as no. of issues is unknown but time planned is on historical data on earlier Sprints by the team.</li>
<li>Hot fix release. This needs to be derived from historical data on how much time needs to be spending if team needs to give hot fix and number of hot fixes coming up.</li>
<li>Buffer time (around 15%), Product backlog grooming (around 10%) (for upcoming sprints) and issue backlog grooming (around 10%) (for current sprint) should be considered to come up for available time.</li>
</ul>
</li>
<li>Definition of done should be very clear and crisp for planned activities and issues.</li>
<li>Maintain a separate backlog for issues apart from normal product backlog.</li>
<li>Priorities of planned activities as well as issues should be strictly prioritized by Product Owner.</li>
<li>Product Owner should earlier decide on what priority issues should be picked from issue backlog.</li>
<li>50% of assigned time from placeholder time should be considered for assigning planned activities (But this should be good to have items). In case issue fixing time is consumed, there will be no harm in moving these items in next sprint.</li>
<li>Daily quick meeting apart from daily stand up to absorb new issues cropped up</li>
<li>Retrospective Meeting can be more focused on analysing the refinement required for grey areas for issue backlog apart from normal retrospection.</li>
</ul>
<p class="MsoListParagraphCxSpLast">
<h3><span>Challenges in Maintenance Projects</span></h3>
<p class="MsoNormal">Usual Challenges seen in maintenance Project are:</p>
<p class="MsoListParagraphCxSpFirst">
<ul>
<li>New issues come on the fly and can’t be completely planned.</li>
<li>There can be possibility of hot fix release. Although hot fix needs to be avoided for same sprint and see if this hot fix can be planned in upcoming sprint.</li>
</ul>
<p><!--[if !supportLists]--></p>
<p class="MsoListParagraphCxSpLast">
<h3><span>Benefits of Scrum </span></h3>
<p class="MsoNormal">Benefits that come along with following scrum are:</p>
<p class="MsoListParagraphCxSpFirst">
<ul>
<li>Self-organized team having complete domain knowledge of the product</li>
<li>Less management efforts in maintenance</li>
<li>Reactive to high priority issues but having an eye on product backlog as well resulting into quick deliveries.</li>
<li>Accommodating unknown factors of issues in maintenance.</li>
<li>Good visibility for everyone and hence helping in better planning of upcoming sprints</li>
</ul>
<p><!--[if !supportLists]--></p>
<p class="MsoListParagraphCxSpLast">
<p class="MsoNormal">Lastly but not least, there is no perfect way to handle the maintenance projects, but team has to evolve and together refine the processes to get the best out of them. Moreover as Scrum has always said<strong> &#8220;If you don’t know the way, try it out for one sprint and either adapt it or refine it&#8221;.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/scrum-for-maintenance-projects/feed</wfw:commentRss>
		</item>
		<item>
		<title>Overcoming the Law of Diminishing Returns</title>
		<link>http://blogs.globallogic.com/overcoming-the-law-of-diminishing-returns</link>
		<comments>http://blogs.globallogic.com/overcoming-the-law-of-diminishing-returns#comments</comments>
		<pubDate>Tue, 01 Nov 2011 04:56:17 +0000</pubDate>
		<dc:creator>Peter Harrison</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Innovation]]></category>

		<category><![CDATA[Pareto's principle]]></category>

		<category><![CDATA[Planning Poker]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=1699</guid>
		<description><![CDATA[A farmer adding an extra bushel of fertilizer to a saturated cornfield; a student cramming for one more hour after 2AM; a homeowner remodeling beyond the value of his neighborhood – all are examples of the Law of Diminishing Returns, which states, “As more investment in an area is made, overall return on that investment [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">A farmer adding an extra bushel of fertilizer to a saturated cornfield; a student cramming for one more hour after 2AM; a homeowner remodeling beyond the value of his neighborhood – all are examples of the Law of Diminishing Returns, which states, “As more investment in an area is made, overall return on that investment increases at a declining rate; continuing to make an investment after a certain point is to receive a decreasing return on that input.” Basically, the more you invest, the less ROI you will realize until you reach a point where each new dollar you invest might actually produce less than a dollar – a condition known as “negative returns”.</p>
<p class="MsoNormal">The Law of Diminishing Returns has broader implications than just economics. Imagine an engineering team is preparing to scope a project. In theory, the more time and effort the team invests in outlining the project’s tasks and timelines, the more accurate the results will be. However, in reality, the team only needs to spend a fraction of this effort to achieve adequate results. The relationship between estimate accuracy and effort look like this:</p>
<p class="MsoNormal"><a href="http://blogs.globallogic.com/wp-content/uploads/2011/11/diminishing_returns.png"><img class="alignnone size-full wp-image-1701" src="http://blogs.globallogic.com/wp-content/uploads/2011/11/diminishing_returns.png" alt="" width="500" height="173" /></a></p>
<p class="MsoNormal">
<p class="MsoNormal">
<p class="MsoNormal">Predictive “plan-driven” teams often put so much effort into their plans that they become convinced these plans are absolute. They often fail to account for business viability and cannot respond to necessary changes, leading to increasingly elaborate and rigid controls, waste, inflexibility, misalignment, low levels of innovation, lower business value and lost ROI. Agile teams address this issue by applying two simple strategies:</p>
<p class="MsoListParagraphCxSpFirst">
<p><strong>1.  “80/20 Rule” or “Pareto’s Principle”:</strong> Italian economist Vilfredo Pareto observed that the distribution of wealth is predictably unbalanced, with 80% of the land being owned by 20% of the population. This observation eventually became known as the 80/20 principle and can be applied to multiple fields. For example, roughly 80% of an organization’s sales come from 20% of its clients. Similarly, 80% of the value in a software product comes from 20% of its functions. So nearly two-thirds of a product’s features are unused, which is obviously a problem. Not only is it very expensive to develop these extra features, but it adds unnecessary complexity to the code base and makes it both more difficult and costly to maintain. The outcome is often a reduced life for the software.</p>
<p>An Agile team, on the other hand, will apply the 80/20 principle to identify the features that are in the top 20% of the product backlog. By developing the most important features first, an Agile team delivers maximum value to the client. This method helps establish a highly collaborative environment that enables feedback, gives the team a chance to inspect their work and make the right decisions, and ensures the delivery of high-quality, incremental software releases in quicker cycles.</p>
<p><strong>2.  &#8221;Planning Poker&#8221;:</strong> Agile teams employ two levels of planning: iteration planning and release planning. Iteration planning, which is very short-term and detailed, is when a team discusses how to implement a specific feature. During release planning, a team takes a less precise and longer-term view of the project. The objective is two-fold: (1) make a ballpark estimate of the time and effort required to build the product and (2) split the product backlog into the desired set of releases. The whole team participates in this exercise and spends just enough time on estimates, all while considering inevitable uncertainties. Even if the initial estimates aren’t completely accurate, an Agile team’s plans are still more reliable because it frequently delivers small increments of fully working, tested and integrated code.</p>
<p>As an Agile team moves from iteration to iteration, it measures its productivity through the Agile/Scrum metric &#8220;Velocity,&#8221; which has units of story points per sprint. As a standard, team Velocity should not decrease from sprint to sprint on a rolling average basis. The idea is not necessarily delivering at a faster rate, but maintaining a sustainable pace and making reasonable commitments to clients. Planning Poker is by no means a silver bullet, but it does optimize the estimation process by reducing waste and, more importantly, relying on the collective wisdom of the team.</p>
<p class="MsoNormal">By employing strategies that focus on what clients value most along with plenty of collaboration, empirical Agile teams are able to quickly respond to change. This approach leads to more predictable outcomes, higher levels of innovation, reduced risks and greatly reduces the risk of either over investing or investing in the wrong plans/features thereby greatly reducing the impact of the Diminishing Return and nearly eliminating the risk of the Negative R<a name="_GoBack"></a>eturn.</p>
<p class="MsoNormal"><span>This Post was an Agile collaboration between Peter Harrison &amp; Mayank Gupta of GlobalLogic</span></p>
<p class="MsoNormal">
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/overcoming-the-law-of-diminishing-returns/feed</wfw:commentRss>
		</item>
		<item>
		<title>Creating the Right Environment to Get the Right Results</title>
		<link>http://blogs.globallogic.com/creating-the-right-environment-to-get-the-right-results</link>
		<comments>http://blogs.globallogic.com/creating-the-right-environment-to-get-the-right-results#comments</comments>
		<pubDate>Mon, 03 Oct 2011 15:23:47 +0000</pubDate>
		<dc:creator>Peter Harrison</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[GLIDE]]></category>

		<category><![CDATA[GLO]]></category>

		<category><![CDATA[Velocity]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=1624</guid>
		<description><![CDATA[I recently read a blog entry by business consultant Peter Bregman, who talked about visiting Disneyland’s Animal Kingdom Park. He saw a lion sitting on a rock, where apparently he sat every day. When he asked the ranger how they trained the lion to sit there every day, the ranger laughed and said, “We don’t [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">I recently read a blog entry by business consultant Peter Bregman, who talked about visiting Disneyland’s Animal Kingdom Park. He saw a lion sitting on a rock, where apparently he sat every day. When he asked the ranger how they trained the lion to sit there every day, the ranger laughed and said, “We don’t train the lion; that rock is temperature-controlled. We make it a place where he wants to be.”</p>
<p class="MsoNormal">Just like that theme park, corporations must focus on creating the right environment to get the results they want. When applied to software R&amp;D companies with geographically distributed teams, this means leveraging the right tools and processes to overcome challenges such as limited real-time collaboration, unclear communication or general misalignment, location-based silos and delays caused by a lag between development and testing cycles.</p>
<p class="MsoNormal">Here at GlobalLogic, we must juggle these challenges every day with thousands of R&amp;D professionals distributed across four continents and eight time zones. Creating a solution to address these issues was not easy, and it certainly did not happen overnight, but the results have been impressive. Primarily, we leverage tools and processes to create an environment where our distributed teams can connect, collaborate and innovate with each.</p>
<p class="MsoNormal">For example, we use a specialized collaboration platform called GlobalLogic Velocity™ to build software products in a distributed environment. This platform is invaluable because it facilitates effective communication across distributed teams and provides complete transparency into project health monitoring, risk management and progress tracking. It also reduces lags between testing and development by taking an Agile approach and running quality assurance and development cycles as parallel as possible.</p>
<p class="MsoNormal">We also deploy a rich, contextual social network called GLO that connects people across teams and time zones to easily find each other and share their knowledge to accelerate innovation. With GLO, people think “community” rather than “hierarchy.” It aims to promote a culture of collaboration, participation and openness that helps increase their productivity, foster new ideas and increase employee satisfaction. GLO also creates awareness of in-house capabilities, increases agility and responsiveness, accelerates communication and increases innovation.</p>
<p class="MsoNormal">Finally, we recently developed an innovation-focused platform and rewards system called GLIDE that encourages new ideas. This “ideation platform” collects, validates, sustains and implements ideas in a crowd-sourced environment for new businesses, products, processes and improvements on existing products and processes. GLIDE is an open innovation model, where the community decides what is valuable, encouraging individuals at all locations and positions to really think outside the box.</p>
<p class="MsoNormal">GlobalLogic has experienced a positive track record of success in both delivering quality technology products and providing clients with a high degree of innovation. I wholeheartedly believe this success is in part a result of creating a connected infrastructure where our global teams are constantly communicating and collaborating with each other and have real-time visibility into each other’s work. In short, we’ve created the right environment to get the results we nee<a name="_GoBack"></a>d to be in the right place at the right time.</p>
<p><span>To read more about how to create a global culture of innovation within your own organization, I encourage you read my colleague Shashank Samant’s recent article on SandHill.com:</span></p>
<p><a href="http://sandhill.com/article/practical-steps-for-building-a-global-culture-of-innovation/">http://sandhill.com/article/practical-steps-for-building-a-global-culture-of-innovation/</a></p>
<p><span>This Post was an Agile collaboration between Peter Harrison &amp; Mayank Gupta of GlobalLogic</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/creating-the-right-environment-to-get-the-right-results/feed</wfw:commentRss>
		</item>
		<item>
		<title>Merrill Covey Matrix</title>
		<link>http://blogs.globallogic.com/merrill-covey-matrix</link>
		<comments>http://blogs.globallogic.com/merrill-covey-matrix#comments</comments>
		<pubDate>Tue, 30 Aug 2011 20:47:58 +0000</pubDate>
		<dc:creator>Luke Hohmann</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Innovation Games]]></category>

		<category><![CDATA[luke hohmann]]></category>

		<category><![CDATA[Merrill Covey Matrix]]></category>

		<category><![CDATA[productivity]]></category>

		<category><![CDATA[Serious Games]]></category>

		<category><![CDATA[task list]]></category>

		<guid isPermaLink="false">http://blogs.globallogic.com/?p=1411</guid>
		<description><![CDATA[Many of us are overwhelmed by our to-do lists, and work hard each day to accomplish just a few of our countless tasks. However, we tend to focus on urgent items while disregarding the importance of planning for tasks that are necessary to reach our overall goal. This negligence will lead to even more stress [...]]]></description>
			<content:encoded><![CDATA[<p>Many of us are overwhelmed by our to-do lists, and work hard each day to accomplish just a few of our countless tasks. However, we tend to focus on urgent items while disregarding the importance of planning for tasks that are necessary to reach our overall goal. This negligence will lead to even more stress in the long run, as everything will eventually become urgent if not prepared for. Fortunately, <a title="Innovation Games Merrill Covey Matrix" href="http://innovationgames.com/merrill-covey-matrix/" target="_blank"><em>Merrill Covey Matrix</em></a>, based on Stephen Covey, A. Roger Merrill, and Rebecca R. Merrill&#8217;s description in their book <em><a href="http://en.wikipedia.org/wiki/First_Things_First_(book)" target="_blank">First Things First</a></em>, allows you to evaluate the urgency and importance of your tasks. The goal of this activity is to prioritize your to-do list in order to plan ahead and work efficiently. With only 5-8 people and 1 hour, you and your team at work, key partners, or customers can clarify the value of your tasks and discover which items should be minimized.</p>
<p><strong>Directions</strong><br />
Before your meeting, draw a 2&#215;2 matrix on a large white board or poster. Label the axes as followed:</p>
<ul>
<li>2 left cells – Urgent</li>
<li>2 right cells – Not urgent</li>
<li>2 top cells – Important</li>
<li>2 bottom cells– Not important</li>
</ul>
<p>After describing the matrix to your participants, hand out pens and plenty of sticky notes.  Allow 5 – 10 minutes for participants to write to-do items on the post-its: one per note. Once everyone is finished, have players present their tasks to the group. Collaborate as a team to identify where each to-do item should be placed on the matrix.</p>
<p>Keep in mind the value of each cell:</p>
<ul>
<li><strong>Cell 1</strong>: Urgent, important – these tasks should be at the top of your to-do list</li>
<li><strong>Cell 2</strong>: Not urgent, important – these items are likely to be neglected, but are necessary for long-term success. Set aside time each week to focus on these in order to be more productive. We suggest making this cell a different color so you will remember its significance.</li>
<li><strong>Cell 3</strong>: Urgent, not important – these tasks suck your time and are often the result of poor-planning. They should be minimized or eliminated.</li>
<li><strong>Cell 4</strong>: Not urgent, not important – these items are trivial time-wasters that should be eliminated</li>
</ul>
<p>Write down the new order of your to-do list, but make sure to take a picture of the chart or leave it up so you can refer back to it. Avoid creating a long, intimidating to-do list by breaking it down into smaller lists. For example, consider creating a task sheet for each person or a group list for each day or week.</p>
<p>Collaborate to clarify the value of the items and to identify which team members will be responsible for each task. Delegation is an integral part of time management. Rather than assuming everyone will work together on each item, you must assign tasks in order to prevent social loafing. This way, people will feel more responsible for certain items and will accomplish them more efficiently.</p>
<h2>Play Merrill Covey Matrix Online</h2>
<p><a href="http://innovationgames.com/game_view/instant_play/PWVGQ2Z2GMM5IZEYFKOMAL5DR02KORZV" target="_blank"><img class="alignright size-medium wp-image-777" src="http://www.gogamestorm.com/wp-content/uploads/2011/08/MerrillMatrixGame-300x266.png" alt="" width="300" height="266" /></a>Now you can play <em>Merrill Covey Matrix </em>instantly online! Clicking on the picture to the right will start an <a title="Innovation Games Instant Play Game" href="http://innovationgames.com/resources/instant-play-games/" target="_blank">“instant play” game</a> at <a title="Innovation Games" href="http://innovationgames.com/" target="_blank">innovationgames.com</a>. Here, this image will be used as the “game board.” The chart is organized the same way as the in-person version, and the second cell is highlighted yellow to remind you of its importance. However, instead of post-it notes, there will be two different icons that players can drag onto the chart and describe to represent the tasks:</p>
<ul>
<li>Green squares – priority tasks that require attention</li>
<li>Red squares – tasks to minimize/eliminate</li>
</ul>
<p>All moves can be seen in real time by each participant, so everyone can edit the positions and descriptions of the icons. Also, the integrated chat facility allows you and your players to collaborate to form the most efficient to-do list.</p>
<p><strong>Bottom Line</strong><br />
While we are all busy working through our to-do lists, we may not be doing so as efficiently as we think. Play <em>Merrill Covey Matrix</em> to identify the purpose and value of your tasks and to minimize or eliminate time-wasters. Plan ahead to avoid unproductive busy work and to accomplish your goal in a productive manner.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.globallogic.com/merrill-covey-matrix/feed</wfw:commentRss>
		</item>
	</channel>
</rss>

