Use a planning solution that is flexible enough to support different processes
Agile helps companies cope with change in software development. However, it isn’t a "one size fits all" solution, so depending on a number of factors (including the type of work, team size, or current company culture) processes might need customization. Also, no team remains static. The planning solution itself has to be agile!
Avoid rework by automatically retrieving the correct code base
This helps avoid simple human error, especially when looking after multiple releases. Changes can be scheduled against the software version where they have to be applied: hot fixes against live releases and new features against the release currently in development. Fully integrating release planning with CM allows developers to retrieve the correct configuration automatically, based on the release that these work items are scheduled against.
Agile methodologies rely on close collaboration between team members from an early stage. As a result, siloed planning and CM solutions for each functional group are not appropriate. Collaboration is also challenging when working with teams distributed across different sites or continents—meaning end-to-end solutions are needed.
Share scheduling information with all team members
Allowing all team members to check on progress is motivating and facilitates collaboration, as each member knows which tasks his peers are currently working on. Team members also gain an understanding of the product roadmap by looking at the features scheduled for the next release or prioritized in the backlog.
Automate status updates
Make sure task status is updated based on the actions that team members take to complete their tasks. All actions, from a checkout to completing a task or feature, should be fed through from bottom to top to provide automated, real-time tracking throughout your project hierarchy. This minimizes overhead for team members, saving valuable time that would have been used to manually update task statuses and boosting productivity. It also gives team managers real-time status reporting on project health.
Allow team members to share work throughout the development lifecycle
Having all project artifacts stored in the same place allows team members to share their work across team and geographical boundaries. Documents can be assigned to any team member for review or a development task in progress can be shelved and reassigned to a colleague, e.g., in case of a sick leave. This also increases transparency when sharing work, as any action from raising a task to its completion is tracked and accessible to team members.
Performance Implications of Frequent Delivery
Automated and continuous builds are two of the most popular agile practices, as both help with early detection of bugs. However, supporting frequent builds and labelling create another set of challenges, especially when looking at source control and CM.
Facilitate frequent (and automated) builds
When moving from weekly or daily to continuous integration, automation is required to make sure kicking off builds and getting feedback does not create additional overhead. Choose source control tools or ALM components that support integration with build tools. This allows the tools to either retrieve the latest project version or even the latest check in from each developer for continuous integration and results feedback—for example, did the build succeed or fail?
Make sure you can take frequent snapshots
Even though task-based solutions allow you to retrieve any project configuration easily, highlighting a specific project configuration as a build or release enhances transparency. This is often referred to as creating a tag, label, or project snapshot. With frequent builds, frequent snapshots must be supported in two ways: near-instant creation and no limit on the number created. Stream-based solutions do not need to write to every element of a project when taking a snapshot, but instead should make a reference to the point in time a snapshot was created, to maximize performance.