<?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>Software Configuration Management and Agile Software Development &#187; Tips and Tricks</title>
	<atom:link href="http://accurev.com/blog/category/tips-and-tricks/feed/" rel="self" type="application/rss+xml" />
	<link>http://accurev.com/blog</link>
	<description>SCM and Agile Software Development Blog</description>
	<lastBuildDate>Thu, 17 May 2012 15:00:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Do You Really Know what Continuous Integration is All About?</title>
		<link>http://accurev.com/blog/2012/05/17/do-you-really-know-what-continuous-integration-is-all-about/</link>
		<comments>http://accurev.com/blog/2012/05/17/do-you-really-know-what-continuous-integration-is-all-about/#comments</comments>
		<pubDate>Thu, 17 May 2012 15:00:08 +0000</pubDate>
		<dc:creator>clucca</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[CI]]></category>
		<category><![CDATA[feedback loop]]></category>
		<category><![CDATA[poppendieck]]></category>

		<guid isPermaLink="false">http://accurev.com/blog/?p=3061</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/05/17/do-you-really-know-what-continuous-integration-is-all-about/' addthis:title='Do You Really Know what Continuous Integration is All About? ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>When I ask people what Continuous Integration (CI) is, I generally get a lot of different answers. Popular ones include: &#8220;Running builds all the time!&#8221; &#8220;Binaries on demand for QA.&#8221; &#8220;The automation of the build so that developers don’t have to do it.&#8221; And my favorite &#8211; &#8220;That server that sits in the corner that [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/05/17/do-you-really-know-what-continuous-integration-is-all-about/' addthis:title='Do You Really Know what Continuous Integration is All About? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/05/17/do-you-really-know-what-continuous-integration-is-all-about/' addthis:title='Do You Really Know what Continuous Integration is All About? ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>When I ask people what <a href="http://www.accurev.com/continuous-integration.html">Continuous Integration</a> (CI) is, I generally get a lot of different answers. Popular ones include:</p>
<p><em>&#8220;Running builds all the time!&#8221;</em></p>
<p><em>&#8220;Binaries on demand for QA.&#8221;</em></p>
<p><em>&#8220;The automation of the build so that developers don’t have to do it.&#8221;</em></p>
<p>And my favorite &#8211; <em>&#8220;That server that sits in the corner that only the release engineer cares about.&#8221;</em></p>
<p>While all of these responses might be partially true, they don’t really cut to the core of what Continuous Integration is all about.</p>
<h2>The true value that CI provides to your organization is QUALITY.</h2>
<p>Let’s take a step back and talk about how quality happens. If we take a typical software development organization, feedback from the QA team is what drives product correctness. This feedback is used to help developers fix mistakes, and even change course in the way that something is designed for a specific release. One of the best ways to improve quality is to get that feedback to the developers <strong>faster</strong>, so developers don’t invest too much time, effort, and work into something that might actually be broken.</p>
<p>In Mary Poppendieck’s book “<a href="http://www.amazon.com/Lean-Software-Development-Agile-Toolkit/dp/0321150783/ref=sr_1_1?ie=UTF8&amp;qid=1337199273&amp;sr=8-1">Lean Software Development: An Agile Toolkit</a>” she often refers to feedback loops as being an important part of a development cycle &#8211; even going as far to point out that feedback loops help optimize certain common objects we use in everyday life, like a traffic light or in my opinion, a <a href="http://accurev.com/blog/2010/07/12/continuous-integration-toaster-oven/">toaster oven</a>. Feedback loops are all around us, it’s the difference between waiting at a traffic light that operates on a timer versus the ones that take feedback from the sensors in the road, sensing when vehicles are there. Which one do you think is more efficient?</p>
<p>This is what CI really is, it’s a basic feedback loop to tell your development organization that the code is either alive or dead. If dead, notify everyone and fix it. Without it, you might wait a week without fixing the problem, and will have coded yourself into a bad situation. It’s not about running builds all the time, it’s about knowing your code is still good.</p>
<p>What’s even more interesting about the current state of CI is that people are figuring out all kinds of ways to add new types of automation to it. For example, with Continuous Deployment, teams are measuring how the builds perform in a deployed state, even adding automated testing to it.</p>
<p>CI is turning into the ultimate feedback machine, going beyond regular builds and improving quality for development organizations.<br />
<strong id="internal-source-marker_0.003988654352724552"><br />
</strong></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/05/17/do-you-really-know-what-continuous-integration-is-all-about/' addthis:title='Do You Really Know what Continuous Integration is All About? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2012/05/17/do-you-really-know-what-continuous-integration-is-all-about/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Avoiding Merge Hell</title>
		<link>http://accurev.com/blog/2012/03/07/avoiding-merge-hell/</link>
		<comments>http://accurev.com/blog/2012/03/07/avoiding-merge-hell/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 14:15:34 +0000</pubDate>
		<dc:creator>clucca</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[SCM Resources]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[Software Tools]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[baseline methodology]]></category>
		<category><![CDATA[branching]]></category>
		<category><![CDATA[merging]]></category>
		<category><![CDATA[traditional SCM]]></category>

		<guid isPermaLink="false">http://accurev.com/blog/?p=3035</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/03/07/avoiding-merge-hell/' addthis:title='Avoiding Merge Hell ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>As you start to scale a software development process it becomes apparent that code and user stories have to be merged more frequently. Sometimes changes may flow from one organization to another. This means that you will need to take code from one team, merge, integrate and test those changes with everyone. Each team needs [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/03/07/avoiding-merge-hell/' addthis:title='Avoiding Merge Hell '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/03/07/avoiding-merge-hell/' addthis:title='Avoiding Merge Hell ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>As you start to scale a software development process it becomes apparent that code and user stories have to be merged more frequently. Sometimes changes may flow from one organization to another. This means that you will need to take code from one team, merge, integrate and test those changes with everyone. Each team needs to be able to work on its own schedule, this means that if multiple teams want to work on different sized iterations they can. It also means they can deliver changes as needed and on a regular basis, independent of other teams.</p>
<p>To do this in a traditional Software Configuration Management system, you&#8217;ll face two major problems.</p>
<ol>
<li>You have to merge these code changes daily for them to be of any use.</li>
<li>You also still need to keep visibility into what stories are shared between teams, because delivering changes from user stories that are not completed in a sprint would be disastrous.</li>
</ol>
<p>Typically, configuration teams use a single baseline or “trunk” methodology for situations like this, where all changes from each team are delivered to trunk and pulled from trunk as their iterations complete.</p>
<p>In terms of traditional Software Configuration Management, your teams will have to deal with these branching and merging issues. But there are STILL other problems that can happen when you use this trunk methodology:</p>
<ol start="1">
<li>Delivering 2 weeks worth of changes only causes isolation among teams, because teams are working in such a rapidly paced environment.</li>
<li>It’s too difficult to pick out each user story from the codebase as it is completed because no tracking is in place.</li>
<li>Figuring out the dependencies of those above mentioned user stories is complex.</li>
<li>Identifying what changes came from what branch is impossible.</li>
</ol>
<p>This “baseline pollution” is<strong> not</strong> scale-able. There are a few ways to alleviate these issues that break the baseline mold. I recommend using a development hierarchy, and manage the relationship of dependencies between branches. This could also include process steps such as integration, quality assurance and code reviews.  A separate code configuration can be used for each step and user stories could simply be drag and dropped between each team, state or branch instead of a merge.</p>
<p>Doing this will increase code stability. As a completed user story is pushed from one stage to the next, the particular change as well as the system as a whole reaches a higher level of maturity. Many traditional SCM tools do not easily support or surface a development hierarchy. <a href="http://www.accurev.com/">AccuRev</a> supports the creation of a hierarchy, gives visibility into the changes at each stage, and enables straightforward merging between stages.</p>
<p>&nbsp;</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/03/07/avoiding-merge-hell/' addthis:title='Avoiding Merge Hell '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2012/03/07/avoiding-merge-hell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Create Branches?</title>
		<link>http://accurev.com/blog/2012/02/20/why-create-branches-2/</link>
		<comments>http://accurev.com/blog/2012/02/20/why-create-branches-2/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 15:45:54 +0000</pubDate>
		<dc:creator>clucca</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[branches]]></category>
		<category><![CDATA[branching and merging]]></category>
		<category><![CDATA[merge hell]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://accurev.com/blog/?p=3028</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/02/20/why-create-branches-2/' addthis:title='Why Create Branches? ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>Branching and merging is one of the most critical things a development team must work on over the course of a software release cycle. But there’s a funny thing about branching and merging &#8211; it’s usually not thought of as part of the development process. How often do you see a user story called “as [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/02/20/why-create-branches-2/' addthis:title='Why Create Branches? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/02/20/why-create-branches-2/' addthis:title='Why Create Branches? ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p><a href="http://www.accurev.com/whitepaper/guide-branching-merging-patterns">Branching and merging</a> is one of the most critical things a development team must work on over the course of a software release cycle. But there’s a funny thing about branching and merging &#8211; it’s usually not thought of as part of the development process. How often do you see a user story called “as a developer I want to merge code to trunk”?</p>
<p>The fact that we often don’t follow a process for the branching and merging of code leads to disarray and pain.  It really shouldn’t be that hard! Teams end up in “<a href="http://accurev.com/blog/2011/03/23/from-merge-hell-to-merge-master/">merge hell</a>” and deliver changes late to schedule. This problem stems from the way branches are created. They’re often not part of the process and are created from a specific business need, not a from a development practice.</p>
<p>When development teams do create a branching pattern, it’s usually drawn out on a white board or in a Visio document, and is used as a model for the overall development process. While the intention is good, many times these plans become quite complex for reasons that can’t be foreseen.</p>
<h2>So, why even create branches, if they’re too complex, and unaccounted for?</h2>
<p>Create branches the right way, and use them as:</p>
<ul>
<li>Development Branch – A branch created for a development code configurations and builds</li>
<li>Integration Branch – A special branch for parallel teams to integrate code</li>
<li>QA Branch – QA branches for QA teams to create builds and environments</li>
<li>BETA – A preproduction branch for customer sign-off, etc…</li>
<li>Production – All of the content that ends up in prod</li>
</ul>
<p>If we take a more philosophical view of what branches represent, beyond business needs, they actually serve as <a href="http://www.accurev.com/whitepaper/stream_based_architecture.htm">workflows for different aspects</a> of the software development process.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/02/20/why-create-branches-2/' addthis:title='Why Create Branches? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2012/02/20/why-create-branches-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Tips on Branching Patterns from an Expert</title>
		<link>http://accurev.com/blog/2012/02/10/quick-tips-branching-patterns-from-expert/</link>
		<comments>http://accurev.com/blog/2012/02/10/quick-tips-branching-patterns-from-expert/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 17:56:53 +0000</pubDate>
		<dc:creator>clucca</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[change packages]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[branching]]></category>
		<category><![CDATA[branching pattern]]></category>
		<category><![CDATA[change sets]]></category>
		<category><![CDATA[distributed teams]]></category>
		<category><![CDATA[merging]]></category>
		<category><![CDATA[software development process]]></category>

		<guid isPermaLink="false">http://accurev.com/blog/?p=3017</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/02/10/quick-tips-branching-patterns-from-expert/' addthis:title='Quick Tips on Branching Patterns from an Expert ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>The goals of a branching pattern should always to be to manage a software team’s development process and to make this process as easy and straight-forward as possible. With this process, the team should be able to complete all of the things that need to happen in order to release a piece of software. So [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/02/10/quick-tips-branching-patterns-from-expert/' addthis:title='Quick Tips on Branching Patterns from an Expert '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/02/10/quick-tips-branching-patterns-from-expert/' addthis:title='Quick Tips on Branching Patterns from an Expert ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p><strong><em>The goals of a branching pattern should always to be to manage a software team’s development process and to make this process as easy and straight-forward as possible. </em></strong>With this process, the team should be able to complete all of the things that need to happen in order to release a piece of software. So how you establish this pattern?</p>
<h2><strong>Make Merging Changes Easy and Straight-forward</strong></h2>
<p><a href="http://accurev.com/blog/wp-content/uploads/2012/02/Whiteboard.jpg"><img class=" wp-image-3018 alignright" title="Typically someone from the team will draw the branching pattern on the whiteboard" src="http://accurev.com/blog/wp-content/uploads/2012/02/Whiteboard.jpg" alt="Whiteboard Quick Tips on Branching Patterns from an Expert" width="275" height="203" /></a>The funny thing about branching patterns is that we often attempt to create a process, but have a hard time following it. Typically someone from the team will draw the branching pattern on the whiteboard, and even go as far to take a picture of it with a phone to send around to teams.</p>
<p>Unfortunately this process doesn’t scale well when development teams have more than a few people. Change management on the whiteboard isn’t an effective system for ensuring the success of a software release.</p>
<p>Branching patterns should be able to support the development process, and mirror the natural flow of the development team as they work towards a release.</p>
<p>To achieve this, we might want to think of branches as a process management tool, not just a place to put a specific release, patch or development build.  Promotional branching patterns allow for different “states” of code, which is hugely powerful when working through the development cycle. This is a huge topic that is part of larger conversation. To find out more about promotional branching and merging patterns check “<a href="http://www.accurev.com/whitepaper/guide-branching-merging-patterns">A Guide to Branching and Merging Patterns</a>.”</p>
<h2><strong>Provide Private Areas for Teams to Check-in and Integrate</strong></h2>
<p>Committing early and often is an SCM best practice. Over the years, developers have been told “If it’s not in source control, it never happened.” To avoid this philosophy, teams may require people to check code in everyday so work isn’t lost.</p>
<p>In a practical branching pattern, teams and developers create both private workspaces and branches, allowing them to create builds, releases, and tests of code before they push those changes to other team members. Avoid using mainline type branching patterns that don’t provide code stages; this leads to broken code and unfinished work making its way into a release.</p>
<h2><strong><a href="http://accurev.com/blog/wp-content/uploads/2012/02/GDD.jpg"><img class="alignleft size-full wp-image-3019" title="Geographically Distributed Teams" src="http://accurev.com/blog/wp-content/uploads/2012/02/GDD.jpg" alt="GDD Quick Tips on Branching Patterns from an Expert" width="306" height="226" /></a>Manage Distributed Teams</strong></h2>
<p>Collaborating and sharing code with <a href="http://www.accurev.com/geographically-distributed-development.html">distributed teams</a> is more complex than ever &#8211; teams routinely develop in one location and test or perform other tasks in another location. This distribution of teams strains the development process, yielding security, auditing, and integration problems.</p>
<p>Development teams must appear to be co-located while utilizing the same process with lower complexity. This means code integrations with other projects should happen in real time, so teams can give each other feedback immediately. The branching pattern and process must be followed by everyone, to ensure they are all on the same page.</p>
<h2><strong>Understand What has been Delivered</strong></h2>
<p>User Stories, bugs, and requirements drive any process, but the ability to see what changes match such items and the location of those code changes are often overlooked in the branching structure.</p>
<p>There is a magical feature that many SCM tools have, called “change-sets” or “<a href="http://www.accurev.com/change-packages.html">Change Packages</a>” in AccuRev. Change Packages associate your changes in the branch with an issue, so you can stay organized and move issues from branch to branch, without having to remember what file went with what issues.</p>
<p>Take these pieces of advice, and they will help if you want to build a release with “finished” issues or if you want traceability into what people are currently working on for a specific release.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/02/10/quick-tips-branching-patterns-from-expert/' addthis:title='Quick Tips on Branching Patterns from an Expert '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2012/02/10/quick-tips-branching-patterns-from-expert/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Agile vs. Waterfall: We’ve Been Doing it Wrong for How Long!?</title>
		<link>http://accurev.com/blog/2012/01/16/doing-it-wrong-for-how-long-agile/</link>
		<comments>http://accurev.com/blog/2012/01/16/doing-it-wrong-for-how-long-agile/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 21:56:02 +0000</pubDate>
		<dc:creator>clucca</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[waterfall]]></category>
		<category><![CDATA[winston royce]]></category>

		<guid isPermaLink="false">http://accurev.com/blog/?p=2947</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/01/16/doing-it-wrong-for-how-long-agile/' addthis:title='Agile vs. Waterfall: We’ve Been Doing it Wrong for How Long!? ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>I was browsing reddit.com the other day and ran into this post: Yup. It’s true. The tried and true development approach of Waterfall that we’ve been using for years was an example of what NOT to do for software development. From the Wikipedia article: The first formal description of the waterfall model is often cited [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/01/16/doing-it-wrong-for-how-long-agile/' addthis:title='Agile vs. Waterfall: We’ve Been Doing it Wrong for How Long!? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/01/16/doing-it-wrong-for-how-long-agile/' addthis:title='Agile vs. Waterfall: We’ve Been Doing it Wrong for How Long!? ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>I was browsing <a href="http://www.reddit.com/">reddit.com</a> the other day and ran into <a href="http://it.reddit.com/r/programming/comments/nvatj/when_winston_royce_described_the_waterfall_design/">this post</a>:</p>
<p><a href="http://it.reddit.com/r/programming/comments/nvatj/when_winston_royce_described_the_waterfall_design/"><img class="aligncenter size-full wp-image-2948" title="When Winston Royce described the Waterfall Design model, he presented it as what NOT to do." src="http://accurev.com/blog/wp-content/uploads/2012/01/20120116_Lucca_Reddit.png" alt="20120116 Lucca Reddit Agile vs. Waterfall: We’ve Been Doing it Wrong for How Long!?" width="733" height="62" /></a>Yup. It’s true. The tried and true development approach of Waterfall that we’ve been using for years was an example of what NOT to do for software development.</p>
<p>From the <a href="http://en.wikipedia.org/wiki/Waterfall_model">Wikipedia article</a>: The first formal description of the waterfall model is often cited as a 1970 article by <a href="http://en.wikipedia.org/wiki/Winston_W._Royce">Winston W. Royce,[3]</a> though Royce did not use the term &#8220;waterfall&#8221; in this article. Royce presented this model as an example of a flawed, non-working model (<a href="http://en.wikipedia.org/wiki/Waterfall_development#CITEREFRoyce1970">Royce 1970</a>). This, in fact, is how the term is generally used in writing about software development—to describe a critical view of a commonly used software practice.</p>
<p>That’s what’s amazing about waterfall, and the agile transformations that seem to be taking the industry by storm. Maybe we all know deep down there is a better way to develop software.</p>
<p>I hope someday we don’t look back on <a href="http://www.accurev.com/agile-software-development.html">Agile</a> the same way we look back on Waterfall. I don’t think it will happen for the simple reason that Agile <a href="http://www.accurev.com/agile-scm.html">doesn’t have one methodology</a> tied to it. Agile can mean a simple set of practices to help with software development, but it’s more like a mission statement as opposed to a plan.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/01/16/doing-it-wrong-for-how-long-agile/' addthis:title='Agile vs. Waterfall: We’ve Been Doing it Wrong for How Long!? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2012/01/16/doing-it-wrong-for-how-long-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Kids Say the Darndest Things</title>
		<link>http://accurev.com/blog/2011/11/28/agile-kids-say-the-darndest-things/</link>
		<comments>http://accurev.com/blog/2011/11/28/agile-kids-say-the-darndest-things/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 16:15:45 +0000</pubDate>
		<dc:creator>lorne cooper</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[Enterprise Agile]]></category>
		<category><![CDATA[Humor]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2915</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/28/agile-kids-say-the-darndest-things/' addthis:title='Agile Kids Say the Darndest Things ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>I hope I don’t end up with a seized engine on the side of the road, but if I do, I’ll know I should have had that oil change. I hope I don’t end up on the Worst Dressed List, but if I do, at least I’ll know I should have given away those old [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/28/agile-kids-say-the-darndest-things/' addthis:title='Agile Kids Say the Darndest Things '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/28/agile-kids-say-the-darndest-things/' addthis:title='Agile Kids Say the Darndest Things ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>I hope I don’t end up with a seized engine on the side of the road, but if I do, I’ll know I should have had that oil change. I hope I don’t end up on the Worst Dressed List, but if I do, at least I’ll know I should have given away those old shirts.  I feel sorry for those on the “Worst Agile Implementation” list who don’t even know they’re there.</p>
<p>In the past few months I’ve had the privilege of talking to approximately fifty organizations about their Agile implementation.  Most of them are doing well, and many of them have great insights about how they customized Agile to fit their process requirements.  But some of them really Say the Darndest Things.</p>
<p><strong>&#8220;We do Scrum, it’s just the rest of the company doesn’t.&#8221;</strong></p>
<p>“So first we break the requirements specification into pieces and call each of the pieces a story.  Then we do our iterations and pass them off to the release team.  We’d sure like to get Product Management, QA, and the customer involved, but they don’t want to.”</p>
<p>There are a lot of places an Agile approach can add value, and I’d hate to adopt a “waterfall approach to going Agile”, but you’re really not doing Scrum.  The biggest chunks of value, the incremental use of customer feedback, and going from “completed state” to “completed state” in each iteration are lost if you can’t get more support.</p>
<p><strong>&#8220;We’re Agile until the development is done.&#8221;</strong></p>
<p>More than once I’ve been speaking with an earnest development leader who’s describing the Scrum process.  They’ll launch in, with obvious pride, and tell me how they’ve gone to two week iterations, do standup meetings, <em>and</em> work from a backlog.  “Terrific!  And how do you do QA?”</p>
<p>Oh, yes, of course they do QA, silly!  In fact, they demo the completed development to the QA team every sprint review and send it off to get tested.  Sometimes, unfortunately, QA actually finds some bugs that need fixing.  So that’s why they put the sprint on hold for a while to fix the bugs and loop them back into QA “’cause we don’t want to wait an entire sprint before they can restart the testing.”</p>
<p>The other side of this one is the guys that take the old “Release Tail” loophole for all it’s worth.  “Yes, Lorne, we’ve been agile for three years now.  We do Scrum, unit testing, standups, and play in the World Series of ‘Planning Poker’.  We do that for about six weeks, or until the release.  Then we have a three month release testing tail, which follows a ‘modified Scrum process’ … the project leader estimates the amount of work on each bug QA finds, and assigns it to a developer.  Sure, sometimes we have to work on new functionality during the “release testing tail” … you can’t expect the customer to stop needing improvements for three months!”</p>
<p>Folks, I don’t think I’m sharing any great trade secret when I tell you the QA process needs to be completed before the story is considered “done.”  I don’t want to be Klaus Fuchs of Scrum, but here’s the secret: <strong>you’re going to have to invest more in testing up front.</strong><strong></strong></p>
<p><strong>&#8220;We do continuous integration every night.&#8221;</strong></p>
<p>I blame the education system: how’s an engineer supposed to know what “Continuous” means when we have “social promotion!”  Now some people understand the idea of continuous integration, and made a conscious effort to make it more “Discrete”.  Some companies I talked to had broken builds that lasted for a week.  You’d rather have a child repeating “Mummy” every 30<sup>th</sup> of a second before you’d like to get an email every five minutes saying the “Build Failed.”  I get it.  And if the email was going to your boss too, well, you don’t have to be Dogbert to know that’s a bad idea.</p>
<p>Builds are going to fail.  Get used to it.  The problem is not that the build failed, but that you couldn’t fix it.  Good practices are to have the team drop what they’re doing when the build fails and hop on fixing it.  If they can’t fix it, it needs to get escalated *pronto*.  Better is to have the team do local builds and unit testing before they check in.  Best Practices are to divide up the build process by team and stage of development, so your team only pollutes itself, not the rest of the development org.</p>
<p><strong>&#8220;We don’t need training since we can use the internet.&#8221;</strong></p>
<p>Uh huh. So I guess the schools will be shutting down any day now.  Not that the Internet might not turn out to be a useful aid someday, but the software development process is a hands-on activity.  And similar to other hands on activities, like dancing or carpentry, you can’t learn to do it by reading a book.  You’re going to need to get some experience with the process before you understand how to run a sprint review or a stand up, how to estimate stories, and how to work with your QA partner.</p>
<p>Now if you’re a hobbyist and working for free, your time is cheap, and there’s no reason not to use trial and error as a learning method.  But if you’re getting paid, and your work is important, you really don’t want to waste four sprints figuring out what someone can help you get right in sprint two.</p>
<p>I’m hoping my surgeon, pilot, and barber got a few lessons before it was my turn.</p>
<p><strong>Finally…</strong></p>
<p>No one has to pass a test to call themselves “Agile,” nor should they. Agilistas don’t have a monopoly on the right way to develop software.  But when people believe they’ve made it to Agile without using critical Agile concepts like time boxing development or getting to “done”, they’re missing the real value.</p>
<p>&nbsp;</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/28/agile-kids-say-the-darndest-things/' addthis:title='Agile Kids Say the Darndest Things '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2011/11/28/agile-kids-say-the-darndest-things/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Software Configuration Management and Version Control Are Not the Same… Trust Me!</title>
		<link>http://accurev.com/blog/2011/11/18/software-configuration-management-and-version-control-are-not-the-same/</link>
		<comments>http://accurev.com/blog/2011/11/18/software-configuration-management-and-version-control-are-not-the-same/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 15:52:13 +0000</pubDate>
		<dc:creator>clucca</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[SCM Resources]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[release management]]></category>
		<category><![CDATA[SCM]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2846</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/18/software-configuration-management-and-version-control-are-not-the-same/' addthis:title='Software Configuration Management and Version Control Are Not the Same… Trust Me! ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>Did you know that CM systems back in the day were basically people? This is where the term &#8220;check-in&#8221; &#38; &#8220;check-out&#8221; comes from- it refers to the days when there where actual software librarians would record peoples changes and check them in and out like books on disk or punch cards. It’s mind boggling to [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/18/software-configuration-management-and-version-control-are-not-the-same/' addthis:title='Software Configuration Management and Version Control Are Not the Same… Trust Me! '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/18/software-configuration-management-and-version-control-are-not-the-same/' addthis:title='Software Configuration Management and Version Control Are Not the Same… Trust Me! ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>Did you know that CM systems back in the day were basically people? This is where the term &#8220;check-in&#8221; &amp; &#8220;check-out&#8221; comes from- it refers to the days when there where actual software librarians would record peoples changes and check them in and out like books on disk or punch cards. It’s mind boggling to think of software this way.</p>
<p>If I was to ask software developers today what “software configuration management” was, they would probably say “SCM? Like Subversion?” Incorrect! You need to trust me on this one,<strong> SCM is <em>not </em>the same as a version control system</strong>. Yes, your version control system <em>is</em> an SCM tool (confusing?) but SCM is a broader discipline and technique that encompasses the management of change in software.</p>
<p>The introduction to the IEEE &#8220;Standard for Software Configuration begins with:</p>
<p>SCM constitutes good engineering practice for all software projects, whether phased development, rapid prototyping, or ongoing maintenance. It enhances the reliability and quality of software by:</p>
<ul>
<li>Providing a structure for identifying and controlling documentation, code, interfaces, and databases to support all life cycle phases</li>
<li>Supporting a chosen development/maintenance methodology that fits the requirements, standards, policies, organization, and management philosophy</li>
<li>Producing management and product information concerning the status of baselines, change control, tests, releases, audits, etc.</li>
</ul>
<p>Let&#8217;s be clear- all of the things on this list do <strong>not </strong>fit under the heading of your version control system. Many of them will require practices and policies to maximize your development efforts and methodologies. With version control, release engineers will still have to perform some of these SCM related functions:</p>
<ul>
<li>Merge early and often</li>
<li>Enforce a workflow for development teams to follow</li>
<li>Record and have full visibility into all of the changes that were made</li>
<li>Write build and compiler scripts</li>
<li>Automate builds, deploys and tests</li>
<li>Understand the dependencies between projects and code</li>
<li>Maintain the development environment for a team</li>
<li>Be responsible for the final product going out the door</li>
</ul>
<p>That&#8217;s just the tip of the iceberg. A talented release engineer or SCM expert <em>can</em> do all of those things independently, but his or her job would be a lot easier with SCM tools that can automate and facilitate the necessary practices and processes. (This includes version control, compilers, debuggers, editors, continuous integration machines, automated deploy, and the ITS system.)</p>
<p>At it’s core, SCM answers the question “Somebody did something, how can one reproduce it?” In addition it’s about understanding and establishing relationships among items that are likely to change. It’s a tricky job, not one that’s easily understood. We have to understand the relationships between versioned artifacts, like code, hardware, documents, design models and even directory structures. In addition we have to do all of the necessary things to make those versions valuable to our organization. We have to design process, workflow, automation, build automation, reports and security.</p>
<p>With all of this, don’t tell me that SCM is the same as version control. Trust me on this one!</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/18/software-configuration-management-and-version-control-are-not-the-same/' addthis:title='Software Configuration Management and Version Control Are Not the Same… Trust Me! '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2011/11/18/software-configuration-management-and-version-control-are-not-the-same/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Before Agile, We Never Called It Waterfall…</title>
		<link>http://accurev.com/blog/2011/10/31/before-agile-we-never-called-it-waterfall%e2%80%a6/</link>
		<comments>http://accurev.com/blog/2011/10/31/before-agile-we-never-called-it-waterfall%e2%80%a6/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 14:32:57 +0000</pubDate>
		<dc:creator>clucca</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[user stories]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[iterative]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[user story]]></category>
		<category><![CDATA[waterfall]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2838</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/10/31/before-agile-we-never-called-it-waterfall%e2%80%a6/' addthis:title='Before Agile, We Never Called It Waterfall… ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>A funny thing has happened over the last couple of years…. we started calling waterfall software development… er… &#8220;waterfall&#8221;. By this I mean, we never had a name for the process… waterfall was just called &#8220;software development&#8221;. There was no distinction or name for what we were doing- there was only one way. This is a [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/10/31/before-agile-we-never-called-it-waterfall%e2%80%a6/' addthis:title='Before Agile, We Never Called It Waterfall… '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/10/31/before-agile-we-never-called-it-waterfall%e2%80%a6/' addthis:title='Before Agile, We Never Called It Waterfall… ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>A funny thing has happened over the last couple of years…. we started calling waterfall software development… er… &#8220;waterfall&#8221;. By this I mean, we never had a <em>name</em> for the process… waterfall was just called &#8220;software development&#8221;. There was no distinction or name for what we were doing- there was only one way. This is a draw of agile, it&#8217;s something different.. and it&#8217;s the only new development methodology to actually get attention in the last 10 years.</p>
<p>So, what’s the deal?</p>
<p><strong>#1) Agile is an umbrella term for several methodologies.</strong><br />
Agile encompasses a lot of different things; it can mean different things to different people. This might be why people have such a hard time understanding it. So comparing &#8220;waterfall&#8221; to Agile isn&#8217;t entirely accurate, or possible, since it&#8217;s like comparing one NBA team to all of MLB. Agile encompasses several methodologies (such as XP, Scrum, Kanban), which are all iterative in nature… that brings us to…</p>
<p><strong>#2) Agile is iterative.</strong><br />
Yes, agile is an umbrella term, but all of the methods in agile share common core values: <em>The fundamentals are to incorporate iterative development and to have continuous feedback so that you can always improve.</em> This means you continuously plan, continuously test, and continuously integrate so you can adapt when needed.</p>
<p><strong>#3) Agile is adaptive, not predictive.</strong><br />
Do you remember what &#8220;waterfall&#8221; was like back in the day? We spent months gathering business requirements, writing specs, and designing, and then spent the next 10 months coding. Since we spent the first few months trying to predict what the next 10 months would entail, we could never accurately estimate how much work a task was supposed to be, and heaven forbid the requirement changed half way through! Agile is an attempt to shorten that cycle so we don&#8217;t have to waste 10 months before find out something was wrong.</p>
<p><strong>#4) You can pick and choose what methods you want to implement.</strong><br />
It’s funny. I ask people all the time, &#8220;How agile are you?&#8221; They typically say “Well, we&#8217;re somewhat agile, but not fully agile.” People tend to measure some sort of agile &#8220;zen&#8221; in their head, and that doesn&#8217;t exist! <strong>If you&#8217;re practicing some agile methodologies, you&#8217;ve won half the battle.</strong><strong><br />
</strong>You’ve won half the battle if you are practicing:<br />
·         Continuous Integration<br />
·         Agile Workflows<br />
·         Test Driven Development<br />
·         Short Iterations<br />
·         User Stories<br />
There&#8217;s no out of the box way to do this, but if these methods work for you… then you&#8217;re there.</p>
<p><strong>#5) The genius Of Agile is in the name.</strong><br />
Since the word &#8220;Agile&#8221; can&#8217;t be traced back to a specific methodology like &#8220;waterfall&#8221; we probably won&#8217;t ever think of it as &#8220;development&#8221;. In addition since it&#8217;s not a prescribed method of doing things (ex: Watefall.. requirements-&gt;design-&gt;implementation-&gt;verification-&gt;maintenance) it just can&#8217;t fail… whatever methods we use can always be improved and adapted to best suit our needs.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/10/31/before-agile-we-never-called-it-waterfall%e2%80%a6/' addthis:title='Before Agile, We Never Called It Waterfall… '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2011/10/31/before-agile-we-never-called-it-waterfall%e2%80%a6/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Learning From eCommerce Failures – and Successes</title>
		<link>http://accurev.com/blog/2011/09/20/learning-from-e-commerce-failures-%e2%80%93-and-successes/</link>
		<comments>http://accurev.com/blog/2011/09/20/learning-from-e-commerce-failures-%e2%80%93-and-successes/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 17:48:02 +0000</pubDate>
		<dc:creator>clucca</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[SCM Resources]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[eCommerce]]></category>
		<category><![CDATA[SCCM]]></category>
		<category><![CDATA[software development environment]]></category>
		<category><![CDATA[website crash]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2795</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/20/learning-from-e-commerce-failures-%e2%80%93-and-successes/' addthis:title='Learning From eCommerce Failures – and Successes ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>Mammoth retailer Target must have had very high hopes for big sales when a new designer collection went on sale last week. Unfortunately it ended up being a bust. (The site quickly became overwhelmed and crashed several times throughout the day.) Online retail experts say losses for the retailer could run into the millions as [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/20/learning-from-e-commerce-failures-%e2%80%93-and-successes/' addthis:title='Learning From eCommerce Failures – and Successes '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/20/learning-from-e-commerce-failures-%e2%80%93-and-successes/' addthis:title='Learning From eCommerce Failures – and Successes ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>Mammoth retailer Target must have had very high hopes for big sales when a new designer collection went on sale last week. Unfortunately it ended up <a href="http://www.boston.com/yourtown/cambridge/articles/2011/09/15/massachusetts_providers_not_to_blame_for_target_site_crash/">being a bust</a>. (The site quickly became overwhelmed and crashed several times throughout the day.) Online retail experts say losses for the retailer could run into the millions as a result.</p>
<p>Scenarios like this are not new, though with a large retailer like Target, it was somewhat surprising. The painful reality of eCommerce is when transactional websites experience dramatically increased traffic, there is always a chance that, without well maintained software development measures in place, crash scenarios like Target&#8217;s will occur.</p>
<p>When an eCommerce crisis like this occurs, developers go into fire drill mode to make rapid changes so the site is back up and running as quickly as possible. Software change and configuration management tools play a crucial role in both ongoing updates and crisis management updates, like the Target example.</p>
<p>It’s also important to note that traditional SCM tools won’t cut it when it comes to high volume transaction web sites like Target, Amazon or any major retailer. Most retail and eCommerce sites need enterprise SCM tools that can scale to accommodate large, geographically distributed teams of developers working in parallel. More advanced SCM tools are integral to the success of transactional web sites, both from a day-to-day aspect, and when there are spikes in traffic and transactions for special sales events, promotions, and holiday shopping.</p>
<p>While last week’s incident demonstrated what can go wrong when an eCommerce site experiences significant problems, there are some great stories out there as well.</p>
<p>One such example is that of a very large and well known travel eCommerce site that receives an average of ten million visitors a month.</p>
<p>As with most of the top of travel eCommerce sites, this one is very dynamic. Users can make reservations for airlines, car rental, hotels, sign up for text message alerts about delayed flights, rate their own experiences and much more.</p>
<p>While these features are popular with consumers, these transactional environments are highly complex to manage. At this particular website, there are as many as 40 different development teams working on 40 different projects. One “project” might be car rentals, another hotel reservations, etc.</p>
<p>When development environments have this much complexity, when teams are working in parallel on a wide variety of projects, only the most powerful SCM tools can help minimize version control problems that lead to bugs slipping through. What may appear at first to be a minor issue can, in the worst case scenario, cause an array of site problems and crashes that have a direct impact on the consumer and revenue. This travel site, which uses AccuRev’s SCM solution, is able to do everything possible to ensure the site and the software behind it stay up and running smoothly, 24/7.</p>
<p>The web storefront is a business critical tool for any type of eCommerce business.  For these reasons, enterprise level SCM tools under the hood are essential to success.</p>
<p>What other similar success and web crisis/failure stories have you experienced directly or heard about?</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/20/learning-from-e-commerce-failures-%e2%80%93-and-successes/' addthis:title='Learning From eCommerce Failures – and Successes '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2011/09/20/learning-from-e-commerce-failures-%e2%80%93-and-successes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Increased Security in AccuRev 5.2</title>
		<link>http://accurev.com/blog/2011/09/08/increased-security-in-accurev-5-2/</link>
		<comments>http://accurev.com/blog/2011/09/08/increased-security-in-accurev-5-2/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 17:19:56 +0000</pubDate>
		<dc:creator>AccuRev</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Product Review]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[access control list]]></category>
		<category><![CDATA[compliance]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2783</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/08/increased-security-in-accurev-5-2/' addthis:title='Increased Security in AccuRev 5.2 ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>AccuRev&#8217;s security has advanced to the next level with the release of version 5.2. One of the great new features that I&#8217;m happy to introduce is Access Control Lists, or ACLs. AccuRev&#8217;s ACLs Have you ever wanted to fine tune your security for files or streams based on role, group or user? Now you can using [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/08/increased-security-in-accurev-5-2/' addthis:title='Increased Security in AccuRev 5.2 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/08/increased-security-in-accurev-5-2/' addthis:title='Increased Security in AccuRev 5.2 ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>AccuRev&#8217;s security has advanced to the next level with the <a href="http://www.accurev.com/press-releases/20110726-accurev-52-advances-software-configuration-management-industry-leading-perfo">release of version 5.2.</a> One of the great new <a href="http://www.accurev.com/scm-features.html" target="_blank">features</a> that I&#8217;m happy to introduce is Access Control Lists, or <strong>ACLs.</strong></p>
<h2>AccuRev&#8217;s ACLs</h2>
<p>Have you ever wanted to fine tune your security for files or streams based on role, group or user? Now you can using our new built in security commands. Here&#8217;s how it works:</p>
<p>In addition to locks, each stream can have one or more permissions. This also applies to files and directories. This means that you can control who can modify/see certain streams, and who can modify/see specific elements.</p>
<p>Setting ACLs are easy, this can be done via the CLI:</p>
<p>C:\Users\clucca&gt;accurev setacl stream phoenix_Client chris all</p>
<p>The ACL has been set successfully.<a href="http://www.accurev.com/blog/wp-content/uploads/2011/09/acls.jpg"><img class="aligncenter size-full wp-image-2784" title="ACLs" src="http://www.accurev.com/blog/wp-content/uploads/2011/09/acls.jpg" alt="acls Increased Security in AccuRev 5.2" width="628" height="113" /></a></p>
<p>This will now lock me out of all the files under the phoenix_Client stream…</p>
<p>If I try to access that stream in the GUI, I will receive this message:<br />
<a href="http://www.accurev.com/blog/wp-content/uploads/2011/09/acls2.jpg"><img class="aligncenter size-full wp-image-2785" title="ACLs" src="http://www.accurev.com/blog/wp-content/uploads/2011/09/acls2.jpg" alt="acls2 Increased Security in AccuRev 5.2" width="358" height="139" /></a> This also works for files and directories, which is great for teams that want to have secure outsourcing and security conscious development initiatives.</p>
<p>In addition you can use the lsacl command to list permissions. You can see that for the stream phoenix_Client chris has no rights to access it, but the permission doesn&#8217;t inherit to the rest of the streams, so I can access everything underneath it.</p>
<p><a href="http://www.accurev.com/blog/wp-content/uploads/2011/09/acls3.jpg"><img class="aligncenter size-full wp-image-2786" title="ACLs" src="http://www.accurev.com/blog/wp-content/uploads/2011/09/acls3.jpg" alt="acls3 Increased Security in AccuRev 5.2" width="628" height="49" /></a></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/08/increased-security-in-accurev-5-2/' addthis:title='Increased Security in AccuRev 5.2 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2011/09/08/increased-security-in-accurev-5-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

