Agile Transformation :: A Secret Sauce

We discussed sometime back that each agile transformation is completely unique. We don’t have a blueprint or a template which tells us how the ideal transformation goes. In fact there is nothing like an ideal agile transformation. You only have your own transformation.

Even then, almpst all successful agile transformations show some common elements. Transformations that I was part of also validate these elements. In  this article , I want to describe the secret sauce needed to make your transformation successful.

  1. Acceptance that current way of work is not working. For any agile transformation to succeed , the teams need to accept that our current way project execution is not working. Unless teams have really accepted this fact, they are not likely to have the motivation needed to bring about such a humongous change
  2. Willingness to adopt scrum. Scrum requires a lot of change in our current way of working. It is human nature to be wary of the change. and people are not really be ready to change their way of working so drastically. Therefore, it is not enough that the team acknowledges current way of working is not succeeding. They also need to be convinced that at scrum or agile are indeed the way to success. This conviction about success of scrum  is essential for successful scrum transformation.
  3. Agile/Scrum is not limited to IT only. I have met many business stakeholders who insist that their users cannot really adopt to this new way of working. These users are often used to having long requirement specification documents. They are now scared to work in a way where they have to give the requirements in a small vertical slices. They insist that for their organisation, it may be a better idea to become IT only agile  where the development happens in sprints after the requirements are frozen!! According to me, this is not agile but actually mockery of what agile is really supposed to be. To get real benefits that agile can offer it is important that the entire life cycle is being done in agile and not just part of the life cycle.
  4. Create the right support structure Scrum works when the team has right supportive ecosystem. Setting up this ecosystem requires the organisational structure altered to suit the scrum work way of working. This may mean adapting the contracts, legal , infrastructure ,HR policies…List is endless. The change truly is pervasive.
  5. Set the teams for success with with seeding in capability. As I have said often, agile is a difficult change. As the scrum guide says it’s easy to understand but difficult to master. Many organizations believe that they can just to send a few of their people for scrum master training. They then imagine that these newly trained scrum masters can drive the transformation on their own. This approach usually does not work.Training is definitely necessary . It helps with knowledge acquisition. But its not enough by itself. The newly trained scrum masters will usually end up with multiple issues while implementing scrum. They struggle converting their knowledge into skill. This is where a good coach can help the team. This person brings in outside perspective and also a fresh outlook.

Agile Testing:: Role Of tester

The role of a tester in an Agile team includes activities that generate and provide feedback not only on test status, test progress, and product quality, but also on process quality. These activities include:

  • Understanding, implementing, and updating the test strategy
  • Measuring and reporting test coverage across all applicable coverage dimensions o Ensuring proper use of testing tools
  • Configuring, using, and managing test environments and test data o Reporting defects and working with the team to resolve them
  • Coaching other team members in relevant aspects of testing
  • Ensuring the appropriate testing tasks are scheduled during release and iteration planning
  • Actively collaborating with developers and business stakeholders to clarify requirements, especially in terms of testability, consistency, and completeness
  • Participating proactively in team retrospectives, suggesting and implementing improvements

Within an Agile team, each team member is responsible for product quality and plays a role in performing test-related tasks.

Agile organizations may encounter some test-related organizational risks:

  • Testers work so closely to developers that they lose the appropriate tester mindset
  • Testers become tolerant of or silent about inefficient, ineffective, or low-quality practices within the team
  • Testers cannot keep pace with the incoming changes in time-constrained iterations
  • To mitigate these risks, organizations may consider variations for preserving independence.

The Role of a Tester in a Scrum Lifecycle

Throughout this study content, general reference has been made to Agile methods and techniques, and the role of a tester within various Agile lifecycles. This subsection looks specifically at the role of a tester in a project following a Scrum lifecycle .

Teamwork

Teamwork is a fundamental principle in Agile development. Agile emphasizes the whole-team approach consisting of developers, testers, and business representatives working together. The following are organizational and behavioural best practices in Scrum teams:

  • Cross-functional: Each team member brings a different set of skills to the team. The team works together on test strategy, test planning, test specification, test execution, test evaluation, and test results reporting.
  • Self-organizing: The team may consist only of developers, but ideally there would be one or more testers.
  • Co-located: Testers sit together with the developers and the product owner.
  • ·         Collaborative: Testers collaborate with their team members, other teams, the stakeholders, the product owner, and the Scrum Master.
  • Empowered: Technical decisions regarding design and testing are made by the team as a whole (developers, testers, and Scrum Master), in collaboration with the product owner and other teams if needed.
  • Committed: The tester is committed to question and evaluate the product’s behavior and characteristics with respect to the expectations and needs of the customers and users.
  • Transparent: Development and testing progress is visible on the Agile task board.
  • Credible: The tester must ensure the credibility of the strategy for testing, its implementation, and execution; otherwise the stakeholders will not trust the test results. This is often done by providing information to the stakeholders about the testing process.
  • Open to feedback: Feedback is an important aspect of being successful in any project, especially in Agile projects. Retrospectives allow teams to learn from successes and from failures.
  • Resilient: Testing must be able to respond to change, like all other activities in Agile projects.

These best practices maximize the likelihood of successful testing in Scrum projects.

Initial Set Up Activities

Like all areas of project, testers need to do some preparatory work in first iteration of the project . The tester collaborates with the team on the following activities during this iteration:

  • Identify the scope of the project (i.e., the product backlog)
  • Create an initial system architecture and high-level prototypes
  • Plan, acquire, and install needed tools (e.g., for test management, defect management, test automation, and continuous integration)
  • Create an initial test strategy for all test levels, addressing (among other topics) test scope, technical risks, test types, and coverage goals
  • Perform an initial quality risk analysis
  • Define test metrics to measure the test process, the progress of testing in the project, and product quality
  • Specify the definition of “done”
  • Create the task board
  • Define when to continue or stop testing before delivering the system to the customer
  • Sprint zero sets the direction for what testing needs to achieve and how testing needs to achieve it throughout the sprints.

Integration

In Agile projects, the objective is to deliver customer value on a continuous basis (preferably in every sprint). To enable this, the integration strategy should consider both design and testing. To enable a continuous testing strategy for the delivered functionality and characteristics, it is important to identify all dependencies between underlying functions and features.

Test Planning

Since testing is fully integrated into the Agile team, test planning should start during the release planning session and be updated during each sprint. Test planning for the release and each sprint should address the issues.

Sprint planning results in a set of tasks to put on the task board, where each task should have a length of one or two days of work. In addition, any testing issues should be tracked to keep a steady flow of testing.

DevOps

DevOps (a clipped compound of “software DEVelopment” and “information technology OPerationS”) is a term used to refer to a set of practices that emphasize the collaboration and communication of both software developers and information technology (IT) professionals while automating the process of software delivery and infrastructure changes.

It aims at establishing a culture and environment, where building, testing, and releasing software can happen rapidly, frequently, and more reliably.

DevOps isn’t a framework or methodology in and of itself. It doesn’t stand alone. DevOps adopts and leverages multiple frameworks and philosophies such as Agile, Lean and ITSM. DevOps is benefitted tremendously from the work the Agile community has done, showing how small teams, operating with high-trust, small batch sizes with smaller, more frequent software releases, can dramatically increase the productivity of development organizations. DevOps applies Lean principles such as increasing flow and reducing waste to the IT value stream. DevOps requires agile service management processes to remove bottlenecks and achieve faster lead and cycle times. By adopting and adapting practices from multiple frameworks we generate more productivity and economic value for the business.

This series of Blog Posts will address the various myths associated with DevOps and will attempt to address them.

Challenges In An Agile Transformation

Change is everywhere.” and “change is painful” are two statements that we keep on hearing again and again.Even then many companies enter the agile transformation thinking that this is going to be just a set of activities that they will do and boom!! They will be agile!!!!

Like always, the reality is quite different from what we expect.I have seen many companies struggling with agile transformation of for years together.In this article, I am going to explore why this specific change is painful. In other words, we are going to see the challenges we typically typically see in an agile transformation.

  1. Agile transformation never really ends. By Definition, an agile team is always on lookout for next thing to improve. This means, agile is a journey and not a destination. So the transformation never really ends. It makes measuring your success difficult. Also, the team is likely to loose their moral when they realize they will never be done.
  2. There are no templates available .While there is an abundance of material on Agile Scrum, agile looks different for each organisation. As a result, agile transformation is essentially unique in nature .There is no a proven path. More ever agility evolves over time . It is not really possible to plan your agile transformation right upfront. The plan is fluid and evolves as teams become agile. This creates a problem for organisations who are used to following the OCM  way of gap analysis followed by road map creation and then the road map execution.
  3. Agile is everywhere. Literally speaking, scrum is a pervasive entity. It impacts complete organisation structure as well as the operating model for projects.When any change is limited to a certain area it is possible to limit the blast radius. Agile other hand not only changes how a developer works but it also forces the team to continually learn new skills. More importantly,to be really successful ,Agile needs a complete change in mindset and a change in organisational structure . This impacts a lot more people than just the software development community of the organisation.
  4. Agile expects more Agile means paradigm shift to our way of working. Over the years we believed that principles like specialization, ironclad role segregation as well as meticulous plan based execution were the cornerstones of successful project delivery. “Process over people” was our mantra. Stringent processes and defined control points were put in to compensate for human inefficiencies and imperfections. Agile on other hand, puts the responsibility back on people who are executing the project. It expects the teams to step up. It needs the management  to trust the teams and have a mind set of supporting and not controlling. These changed mindset expectations are often the most difficult to implement.
  5. Bottom up and top down, a single direction doesn’t work . Many organisations are inherently top down or bottom up .In some organizations things get done when boss says so. On the other end of the spectrum some organisations change only when the teams want to. For Agile to succeed, neither approach is enough by itself. It will need a combination of bottom up and top down change approach for Agile to succeed.

These challenges beg the question, if it is so difficult is agile worth it? I plan to write a post soon to explore why organisations are going agile



Agile Testing

The Differences between Testing in Traditional and Agile Approaches

Testers must understand the differences between testing in traditional lifecycle models (e.g., sequential such as the V-model or iterative such as RUP) and Agile lifecycles in order to work effectively and efficiently. The Agile models differ in terms of the way testing and development activities are integrated, the project work products, the names, entry and exit criteria used for various levels of testing, the use of tools, and how independent testing can be effectively utilized.

Testers should remember that organizations vary considerably in their implementation of lifecycles. Deviation from the ideals of Agile lifecycles may represent intelligent customization and adaptation of the practices. The ability to adapt to the context of a given project, including the software development practices actually followed, is a key success factor for testers.

Testing and Development Activities

One of the main differences between traditional lifecycles and Agile lifecycles is the idea of very short iterations, each iteration resulting in working software that delivers features of value to business stakeholders. At the beginning of the project, there is a release planning period. This is followed by a sequence of iterations. At the beginning of each iteration, there is an iteration planning period. Once iteration scope is established, the selected user stories are developed, integrated with the system, and tested. These iterations are highly dynamic, with development, integration, and testing activities taking place throughout each iteration, and with considerable parallelism and overlap. Testing activities occur throughout the iteration, not as a final activity.

Testers, developers, and business stakeholders all have a role in testing, as with traditional lifecycles.

  • Developers perform unit tests as they develop features from the user stories.
  • Testers then test those features. Business stakeholders also test the stories during implementation.
  • Business stakeholders might use written test cases, but they also might simply experiment with and use the feature in order to provide fast feedback to the development team.

In some cases, hardening or stabilization iterations occur periodically to resolve any lingering defects and other forms of technical debt. However, the best practice is that no feature is considered done until it has been integrated and tested with the system. Another good practice is to address defects remaining from the previous iteration at the beginning of the next iteration, as part of the backlog for that iteration (referred to as “fix bugs first”).

However, some complain that this practice results in a situation where the total work to be done in the iteration is unknown and it will be more difficult to estimate when the remaining features can be done. At the end of the sequence of iterations, there can be a set of release activities to get the software ready for delivery, though in some cases delivery occurs at the end of each iteration.

When risk-based testing is used as one of the test strategies, a high-level risk analysis occurs during release planning, with testers often driving that analysis. However, the specific quality risks associated with each iteration are identified and assessed in iteration planning. This risk analysis can influence the sequence of development as well as the priority and depth of testing for the features. It also influences the estimation of the test effort required for each feature.

In some Agile practices (e.g., Extreme Programming), pairing is used. Pairing can involve testers working together in twos to test a feature. Pairing can also involve a tester working collaboratively with a developer to develop and test a feature. Pairing can be difficult when the test team is distributed, but processes and tools can help enable distributed pairing.

Testers may also serve as testing and quality coaches within the team, sharing testing knowledge and supporting quality assurance work within the team. This promotes a sense of collective ownership of quality of the product.

Test automation at all levels of testing occurs in many Agile teams, and this can mean that testers spend time creating, executing, monitoring, and maintaining automated tests and results. Because of the heavy use of test automation, a higher percentage of the manual testing on Agile projects tends to be done using experience-based and defect-based techniques such as software attacks, exploratory testing, and error guessing. While developers will focus on creating unit tests, testers should focus on creating automated integration, system, and system integration tests. This leads to a tendency for Agile teams to favour testers with a strong technical and test automation background.

One core Agile principle is that change may occur throughout the project. Therefore, lightweight work product documentation is favoured in Agile projects. Changes to existing features have testing implications, especially regression testing implications. The use of automated testing is one way of managing the amount of test effort associated with change.

However, it’s important that the rate of change not exceed the project team’s ability to deal with the risks associated with those changes.

Project Work Products

Project work products of immediate interest to Agile testers typically fall into three categories:

  • Business-oriented work products that describe what is needed (e.g., requirements specifications) and how to use it (e.g., user documentation)
  • Development work products that describe how the system is built (e.g., database entity-relationship diagrams), that actually implement the system (e.g., code), or that evaluate individual pieces of code (e.g., automated unit tests)
  • Test work products that describe how the system is tested (e.g., test strategies and plans), that actually test the system (e.g., manual and automated tests), or that present test results (e.g., test dashboards)

In a typical Agile project, it is a common practice to avoid producing vast amounts of documentation. Instead, focus is more on having working software, together with automated tests that demonstrate conformance to requirements. This encouragement to reduce documentation applies only to documentation that does not deliver value to the customer. In a successful Agile project, a balance is struck between increasing efficiency by reducing documentation and providing sufficient documentation to support business, testing, development, and maintenance activities. The team must make a decision during release planning about which work products are required and what level of work product documentation is needed.

Typical business-oriented work products on Agile projects include user stories and acceptance criteria. User stories are the Agile form of requirements specifications, and should explain how the system should behave with respect to a single, coherent feature or function.

A user story should define a feature small enough to be completed in a single iteration. Larger collections of related features, or a collection of sub-features that make up a single complex feature, may be referred to as “epics”. Epics may include user stories for different development teams. For example, one user story can describe what is required at the API-level (middleware) while another story describes what is needed at the UI-level (application). These collections may be developed over a series of sprints. Each epic and its user stories should have associated acceptance criteria.

Epics can be easily broken down into user stories by slicing them vertically and they comply to INVEST criteria. Each Epic and user story contains acceptance criteria with necessary business rules and mockups attached to them.

Typical developer work products on Agile projects include code. Agile developers also often create automated unit tests. These tests might be created after the development of code. In some cases, though, developers create tests incrementally, before each portion of the code is written, in order to provide a way of verifying, once that portion of code is written, whether it works as expected. While this approach is referred to as test first or test-driven development, in reality the tests are more a form of executable low-level design specifications rather than tests.

Typical tester work products on Agile projects include automated tests, as well as documents such as test plans, quality risk catalogs, manual tests, defect reports, and test results logs. The documents are captured in as lightweight a fashion as possible, which is often also true of these documents in traditional lifecycles. Testers will also produce test metrics from defect reports and test results logs, and again there is an emphasis on a lightweight approach.

In some Agile implementations, especially regulated, safety critical, distributed, or highly complex projects and products, further formalization of these work products is required. For example, some teams transform user stories and acceptance criteria into more formal requirements specifications. Vertical and horizontal traceability reports may be prepared to satisfy auditors, regulations, and other requirements.

In some regulated agile projects, more inspection of the documentation that is being produced during the project execution may be required.

For example: Federal drug administration (FDA) projects require lot of audit reports, strategy reports and compliance reports that need to be produced during the project execution.

Scrum

Scrum is an iterative and incremental Agile product development framework for managing software projects and product or application development. Its focus is on “a flexible, holistic product development strategy where a development team works as a unit to reach a common goal” as opposed to a “traditional, sequential approach”. Scrum enables the creation of self-organizing teams by encouraging collaboration of all team members, and verbal communication among all team members and disciplines in the project. A key principle of Scrum is its recognition that during a project the customers can change their minds about what they want and need (often called requirements churn), and that unpredicted challenges cannot be easily addressed in a traditional predictive or planned manner. As such, Scrum is founded on Empirical Process Control Theory, or empiricism. Empiricism asserts that knowledge comes from experience and making decisions based on what is known. Scrum Employs an iterative, incremental approach to optimize predictability and control Risk.

Manual Testing is Obsolete – Career progression for testers

Aggressive and exhaustive manual testing has long been seen as an mandatory task that took as much as 30 % duration of the entire life cycle and 35-45 % of the effort of entire software development life cycle. This focus on dedicated manual testing has led to creation of an army of manual testers. These career testers have often spent many years doing manual testing and do not have very well developed technical skills.With agile becoming predominant, the focus is now on end to end working product delivered by a cross functional team. This creates a question of existence for the dedicated manual tester.

In my daily work I meet many such people who have done manual testing for 10- 15 years and now are worried about what next? This post is for them

Focus On What The Manual Testers Can do? Often the testers are worried about quickly acquiring new technical skills. They have not done any “coding” for last few years and starting fresh scares them. Best way is to think what they do know. I have seen usually these testers have tested the same system for a long time and have gathered an enormous knowledge about end to end system working. This domain knowledge is a hot commodity in agile world where working software in a short time is the key expectation. It then makes most sense to leverage this domain depth and build on top.

  1. For those Who Want To Remain In Testing For those who enjoy the the world of testing, the options are in 2 areas
    1. Entering the Automation World – These days BDD tools like cucumber allow for easy UAT automation. The major skill lies in understanding the end to end functionality and deciding what to automate. Even functional automation tools like Katalon Studio require minimal amount of coding. This option does involve learning some new skills but learning those does not need a tester to learn extensive coding. An activity which many testers do not seem to enjoy , Re skilling Needed is learning about automation tools. Usually takes 3-6 months
    2. Test Strategist at Enterprise level As the application sizes grow , balancing the test coverage with available cost and time becomes more and more difficult task. A test strategist analyzes the application and the project needs to recommend types and phases of testing needed for current project – what and when to automate. , Up skilling Needed to fill in the gaps about application knowledge and learn latest testing trends and techniques
  2. For Those Who Want to Step Out Of The Test World For those who want to leave the testing world behind , the domain knowledge they have amassed becomes an excellent opportunity
    1. Starting Out As a BA – With their system knowledge most of the testers make excellent bridge between the domain guys and the technocrats. Both of these people often talk seemingly different language and having a Business Analyst in team is often priceless. ,Up skilling Needed to increase depth of domain knowledge , some executional skills like writing a good user story may need to be acquired. The executional skils are easy to aquire and usually do not take more than 2 months or so
    2. Path to PO – As a next step from the BA, good domain expert can aspire for a role as PO where they leverage their domain knowledge to decide the path the product takes. Up skilling Needed to increase depth of domain knowledge , understand industry trends. some agile skills like understanding empirical product development , managing the product backlog , vertical slicing etc may need to be acquired.

Agile Transformation in An Agile Manner :: Form an Agile Team

Transforming the way of work to agile will be a one most effort consuming work your organization will take up. The team composition and roles need to be well thought out to ensure relatively smooth transformation. (The work anyway will be volatile enough!). Some of the key criterion to keep in mind while forming teams are

  1. Members who have influence – For a change that is all pervasive, it is important to choose stakeholders who can influence the change
  2. Members Who Are Excited – Having members who are excited about the change will make the initial part easier
  3. Diverse Skills Scrum is pervasive. So to adopt scrum we need changes in organizational process , technology , org structure , skill building – its essential to have people who can manage these diverse areas of impact
  4. Have a Sponsor – Choosing a sponsor who can not only influence but is also actively engaged with the team.He should be the leader who is engaged enough that he encourages others to be drive. Some of the most successful agile transformations have the sponsor as a product owner. This then ensures that his vision gets implemented. 
  5. Consider Chapter teams – Chapter teams are the horizontal teams who take up a specific item on the backlog and then drive it through the organizations. They usually end up having a sub blog for their own area of improvement.We discussed this sub log structure in earlier post
  6. “Two in a Box Coach team” At times it is helpful to have a combination of coaches – Internal and External coaches working together. External coaches are able to bring outside perspective and they are in a better position to influence senior management in their capacity as “expert consultant” . At the same time, internal coaches are better able to understand pulse of organization and carve out action items that actually work 🙂

Driving an Agile Transformation in Agile Way :: Build a Well Planned Product Backlog

Like every scrum project, an agile transformation needs to have its own Product backlog. This backlog will list all items that need to be accomplished in order to transform organizational way of work to agile.

Some Key Items to consider

  1. Consider using backlog with parent child structure – Agile transformation is a complex piece of work. In the initial stage all the items identified will be very large in size and each of those then needs to be decomposed in items that are manageable in size. Often the top level items are quite independent in nature and will be executed by different sets of people in your organization . For a recent transformation I was a part of some of the initial items in the backlog were Increase Scrum awareness ,Create a supporting organization structure that enables scrum and Increase automation . Each of these items needed to be implemented by completely different teams. Managing the backlog was becoming a difficult task and we ended up creating a sub backlog for each of the items in the parent backlog
  2. Ensure that each item has a defined/measurable acceptance criterion. For any large initiatives you will have negative stakeholders – Those stakeholders who are skeptical and don’t agree on value brought in by the transformation. It then helps to have measurable success criterion – defined and agreed upon before you start the work.
  3. Deliberate on Business value of each item – With stakeholders and team members being used to a plan driven way of operating, the product backlog transforms into action driven plan rather than a list of items where each item adds a discrete value. It helps to consciously call out the business value attached with each item. Over time this becomes a habit but it needs attention and focus initially while the team is getting used agile way of working

Driving an Agile Transformation in Agile Way :: Plan Short Sprints

As we discussed before, many of agile transformations start with a detailed, prescriptive plan mandating action items…..This a beautiful plan considering a lot of perspectives, it is rarely a short plan! This does not allow stakeholders to realize the value that is delivered. As a result after a while stakeholders, most of whom already have a lot of responsibilities start to get the dejected…

A good to way to conqueror this can be to design the transformation as a series of sprints which together deliver the large enterprise goal, but each sprint individually delivers at least a small, tangible piece of that large goal. These smaller goals allow stakeholders to taste success and retain their enthusiasm. It also helps to spread the word and convince those who are on fence.

I usually suggest that these sprints follow the scrum events and artefacts. It allows the team to collaborate in a structured manner. I have found that often stakeholders who are worried about one more topic for long meetings. They are really happy at the prospect of one short and time boxed meeting everyday. Once they see the benefits of shorter sprints , timeboxes and demonstrated values, they become the biggest supporters. In fact the opposing party stakeholder I mentioned in earlier article, went on to be the biggest agile champion in that organization.

For this short sprints to succeed its really important to have goals that can be measured and have a product backlog that is well refined. More about that in my next post…