Posts Tagged ‘agile process’

Agile and SCM: Helping You Get to “Done”

January 24th, 2011 by clucca

You spent the last 2 weeks working on 10 user stories for you sprint. Your team has completed 8 of the 10 user stories, and now it’s time to show a working demo for your sprint review. Sounds like a typical scenario right?

Here’s the problem, the 2 remaining user stories have partial work associated with them. That code is in your source control system, and in order to correctly demo or ship what was accomplished in your sprint, you’re going to have to do some work to create a “done” product. You will have to subtractively merge those changes, or put them on another branch, then re-test the application, redeploy.. check the changes again etc. There is still a lot of work to finished in getting this sprint to “done.”

One way to get around this is to associate user stories with code changes in your SCM tool.  AccuRev already creates a link between your user stories and code in the form of change packages. Creating that link between the user stories and your code is the first step. But using a powerful story-driven process out of this linkage is the key to “getting to done” in an Agile environment.

Your user story will move through different stages as you move through your process. One user story may have these states:

chart Agile and SCM: Helping You Get to DoneDEV- Currently in progress with dev team, or “coding”
QA- Coding finished, ready for QA to test
UAT- QA finished ready for user acceptance testing
PROD- Tested by QA and users, ready to ship

However, while  user stories move through this process, the code doesn’t follow. Traditional SCM systems are designed around single branches and a long and lengthy merge processes. Fast paced Agile environments expose those limitations as development teams struggle to ship code to customers at the end of iterations.

During that iteration, testers may want to test completed user stories, but need a stable configuration to do so. If you’re using a traditional waterfall branching and merging based SCM tool, you may end up with some user stories ready for QA, and some still in the DEV stage, creating a poor testing environment and broken builds. As a result, developers often delay committing code so changes can be implemented, tested, and passed to QA before they integrate.

During your retrospective of the previous iteration, you may decide that parts of your process need modification. For example, you may decide to add a code review process right before testing. Your SCM system has to be flexible to enable this new step without time consuming tasks, like re-writing scripts.

SCM and an Agile Process

The trick is to have an SCM system that can help you manage and enforce an Agile process. Code should be able to follow the same process user stories follow. If a user story is in QA, all of the code needed to test that issue should reside in a QA configuration. The same goes for DEV, UAT, PROD, or any other process that is part of your environment.

A stream structure is an easy way to  process change – streams can be added to adjust your process. In a few clicks, you can add a code review between a DEV, and QA step.

Agile and SCM: Avoiding Agile Merge Hell

As you start to scale Agile, code and user stories have to be merged more often. Sometimes changes my 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 their own schedule, this means that if multiple teams want to work on different sized iterations they can. In addition they can deliver changes as they need to on a regular basis, independent of the the other teams.

The problem here is that to do this in a traditional SCM system, you would have to merge these code changes daily for them to be of any use. 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.

Typically, the type of configuration people use for this is a single baseline or “trunk” methodology, where all changes from each team are delivered to trunk and pulled from trunk as their iterations are completed.

Working within an Agile context, your teams will have to deal with these branching and merging issues. But there are other problems that can happen when you use this methodology:

  1. Delivering 2 weeks worth of changes only causes isolation among teams.
  2. It’s too hard to pick out each user story as it completes from our codebase.
  3. Figuring out the dependencies of those user stories is complex.
  4. Being able to identify what changes came from each branch is impossible.

This “baseline pollution” is not scale-able. You can get around this by 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.

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. While many traditional SCM tools do not easily support or surface a development hierarchy, AccuRev supports the creation of a hierarchy, gives visibility into the changes at each stage, and enables straightforward merging between stages.

Is your Executive Team Committed to Agile Adoption?

April 20th, 2010 by Bob DeMaria

We recently produced a webinar here at AccuRev, co-sponsored by Rally Software, about the Top 10 Factors for a Successful Agile Implementation.  #10 on that list was the Executive Commitment.  We all know that having an executive team committed to the success of a project of any kind is important, but in the Agile world it is even more critical.  Adopting Agile as a new methodology is a major shift in the way of thinking of how your business is being run, for the better.

As Agile adoption starts to take hold in your organization it can follow two different paths – from a motivated development team on up, or from an executive edict on down.  Either way you have decided to make a move toward Agile adoption, one of the very first hurdles you will encounter is executive buy-in.  Many changes are in store for your organization and to insure success you’re going to need to have that executive commitment.

First and foremost, let’s make sure the executive team has complete sponsorship of the Pilot project. While I will discuss selecting a Pilot team in a future blog post, you need to make sure that management is behind this launch. Management needs to be completely committed and willing to smooth any resistance that you may run up against as that pilot process starts to take off and Agile practices start to take hold.

Next is the area of trust and respect.  The people taking part in the transition need to do their best. There’re going to be a lot of changes happening within in the organization: the way people think, the way people function, the way teams interact.  Management really needs to be committed in changing to Agile development, and while there are going to be some pains and adjustments necessary, management will trust and respect that people on development teams are making the best choices for the organization.

Trust and respect is important due to the fact that Agile practices cause a major shift in the ways of thinking.  You’ve probably heard mention of the cultural change that Agile is going to impart on your organization. Executives need to be aware of a major shift in the way people think and the way people do business.

To expand on that just a little bit, it is necessary to ensure that the entire organization supports the transition to Agile development.  I’m not talking about just the development teams; we need to make sure that management understands that it’s going to impact the customers, and for the better. Agile is going to make the organization more productive, more effective, and more efficient, but it is going to cause changes and growing pains as we move towards that process.

One other area that I wanted to bring up briefly, is that going Agile does require an investment.  So management needs to understand there will be upfront investments in transitioning to Agile development and in turn, reaping the benefits of Agile.  That being said, rate of return on your investment can be very swift.  I’m tempted to say “will” be very swift, but obviously it’s going to depend on the successfulness of the project.

To understand some of those returns is to really understand the business benefits and value as well as making sure executives understand those as well, because there is a lot of value to the organization by adopting Agile. It’s not just making better, faster developers, obviously.  We’re talking about faster time to market.  Because we’re developing and shipping smaller increments of high-priority code we’re able to get that code to market much more quickly. That is obviously going to mean increased revenues by being able to hit the market need more quickly and get EXACTLY what the customer wants out the door. We’re going to be able to achieve an increase in revenue based on those features and those enhancements that are going out the door.

All of this because of the way the Agile development process is done and the way testing is baked-in and moved closer to the development cycle.

So all of those features that are getting to market quicker while increasing our revenues are going to be higher quality, as well.  Overall that’s going to greatly increase customer satisfaction as to the type and the software features they’re actually seeing based upon our Agile development.

Now that the executives are on board… how about we take a look at picking the Pilot?

Free Webinar: The Business Case for Pragmatic ALM – Agility with Governance

December 1st, 2008 by jwaccurev

As an AccuRev blog reader, you’re welcome to attend our upcoming free webinar that will discuss the intersection of Agile development and governance:

As more and more software development teams adopt Agile or other iterative processes it becomes difficult for them to reconcile the current state of their governance practices with a need for greater speed and improved productivity. Developers get frustrated with overbearing compliance regimens that fence them in and stifle creativity, while their managers struggle with the need to balance innovation and speed with predictability and control. In today’s market environment, eliminating waste and fast implementations that demonstrate value quickly are essential.

Join experts from AccuRev and special guest Forrester Senior Analyst Jeffrey Hammond, as they examine the market trends that are driving many organizations to reassess their software development and release processes, and what steps and tools these development teams are taking to best support heterogeneous software development process environments. You will also see a live demonstration of how to implement pragmatic ALM with AccuRev.

Attend this Webinar and learn:

How Agile processes and compliance can coexist in harmony

What pragmatic ALM is and how it can help you solve today’s business challenges

How to manage multiple processes dependent on project requirements (Waterfall, Agile, etc.)

Best practices for optimizing tools and processes for both software development and release management.

When: Thursday, December 4 at 1:00 PM EST

Register: The Business Case for Pragmatic ALM: Agility with Governance