Instructor: Scott Duncan

Agile Boot Camp for Non-Software Work: ICP Fundamentals Certification

Part 1: Why Agile? The Case for Change

Businesses have historically been plagued by many problems, including inadequate requirements, which lead to products that customers aren’t happy with and sometimes can’t use. We start the class by making the case for a shift to an Agile approach to solve the problems and to gain an overall understanding of the basic principles, and benefits of Agile approaches.

Team Exercise: As a class we will discuss the various problems that the class has experienced in their own projects so that we can then understand how Agile will help them address these problems. The class will understand from this exercise that they are not alone with a set of problems that others also experience.

Part 2: Becoming Agile

We will understand the Agile Manifesto and Principles. We first visit Lean which is foundational and influences all other Agile methodologies. Then we will have an overview of Scrum. Scrum is the most popular Agile methodology and is great for projects. Scrum or Scrum variants are being used by about 75% of those using Agile, but Scrum is not the only Agile approach. We’ll then see how Kanban might be a better answer for other types work (e.g. operations and sustainment).

Review Agile methodologies practiced in organizations today (e.g. Scrum, Kanban).

  • Agile Mental Models
  • Agile Manifesto
  • Agile Principles
  • Agile Practices

Team Exercise: Teams will engage in a fun exercise that will reinforce the importance of, and power behind, self-organizing teams. As with sports teams, individual roles are important, but even more important is the need to work toward a common goal together. At times that means blurring the lines of traditional roles. Great teams will not define themselves by their individual roles.

Part 3: Building an Agile Team

Agile focuses on creating a team that can deliver results over and over. In this section we will discuss what makes a high-performing team and how to build that team. The section will also cover the team roles associated with an Agile approach.

Team Exercise: We will discuss as a class what makes a great team based on teams we've participated on that were great.

Part 4: Delivery with Scrum

In this section, we will review the Scrum framework and the various Scrum techniques. Scrum provides a great framework for building new products, especially when all the requirements are not known. Scrum techniques can also be used with other Agile methods like Kanban.

Agile Project Planning

  • Vision
  • Roadmap
  • User Roles and Personas

Team Exercise: Teams will practice turning User Roles into full fleshed personas.

Part 5: Backlog Planning

  • Writing User Stories
  • Prioritization
  • Estimating

Team Exercise: Each team will conduct a brainstorming session for creating a product backlog in the form of user stories. Each team will present some of their user stories and the instructor will lead discussion about where teams hit the mark and areas for improvement (Instructor will not have all of the ideas, this is a great opportunity for team dynamic).

Part 6: Iteration Execution

  •  The Daily Scrum
  •  Story Review
  •  Visual Management
  •  Agile Metrics

 

Part 7: Inspect and Adapt

The power of Agile comes from the fact that continuous improvement is built into the Agile system. In this section we will review how People, Product and Process improve themselves through a frequent inspect and adapt process. We will discuss the main Agile ceremonies that help us accomplish this: Iteration Review/Demo and the Retrospective.

  • The Iteration Review
  • The Demo
  • The Retrospective

Team Exercise: Teams will discuss what things they can do the day after class ends to take what they've learned and implement it immediately so that they don't lose what they've learned.

Part 8: Kanban Overview and Concepts

Not all work fits well into a Scrum framework. Kanban is an Agile method that helps us to improve a delivery process with a focus on continuous improvement. We will cover the foundation of Kanban concepts, properties, and terminology. We will also understand the philosophy behind the Kanban framework and how it originated.

Topics covered:

  • Kanban's 5 Core Properties
  • Kanban Emergent Behaviors
  • Kanban concepts, principles, and terminology

Part 9: Implementing Kanban

The best way to understand Kanban is to go through the process of implementing it. This section goes through the various techniques and ceremonies associated with Kanban.

Topics covered:

  • Visualization of Work
  • Work Item Types, Card Walls
  • Workflow, Queues and Buffers
  • Cadences, Work-in-Progress
  • Bottlenecks, Issues and Blocked Items

Team Exercise: Kanban boards are an invaluable communication tool. Each team is tasked with coming up with their board that clearly communicates their commitments and progress against those commitments.

Part 10: Kanban Metrics and Reporting

Kanban uses metrics a little differently than other Agile methods. In this section we will understand how metrics and reporting are leveraged with Kanban.

Topics covered:

  • Tracking Work-in-Process, Cumulative Flow Diagrams
  • Lead Time, Trends, Throughput

Part 11: Scaling Kanban

Applying Kanban techniques to other types of efforts. How to track requirements, decouple work, and leverage the Minimal Marketable Release.

Topics covered:

  • Scaling Kanban for different size efforts
  • Minimal Marketable Release
  • Two-Tiered Card Walls

Part 12: Kanban Improvements

Learn how to recognize opportunities for improvement in your Kanban system and what to do about them.

Topics covered:

  • Three types of Improvement Opportunities
  • Estimations, Class of Service
  • Service Level Agreements, Policies

Team Exercise: Teams will build a cadence calendar to use with their teams to organize work, share learnings, and build a focus on continuous improvement.

Part 13: Agile Adoption

Agile Adoption can be accomplished with different approaches and at different speeds. In this section, we will review the best practices of Organizational Change Management as it applies to Agile adoption and considers the primary reasons for adoption failure. 

Topics covered:

  • Kaizen Culture and Mindset
  • Agile Leadership
  • Kotter's Model
  • Continuous improvement culture

Team Exercise: We will wrap the course up and end with a discussion on “Where do you go from here?”.

Fundamentals of Software Testing

Part 1: Introduction and Overview

Establishes a foundation for the course, provides a workable definition of software quality and shows how testing fits into the overall quality process.

Part 2: What to Test and How to Test it — The Universal Testing Method

Testers follow the same basic process that scientists use; we follow the principles of experimentation and measurement. In this course, we map your testing method back to those principles and show how, at each step in your testing, you’re making complex decisions about what to test and how to test it. Utilizing a combination of skills, tactics, practices, and tools – this section helps build a base that testers in any context (of any skill level) can apply to solve testing problems.

  1. Model the Testing Space. Compose, describe and work with visual models of the software to identify relevant dimensions, variables, and dynamics so you can develop an effective test strategy.
  2. Determine Test Coverage. Understand a variety of common measures of test coverage and choose the most appropriate ones for each project; determine the scope of testing; establish a structure to track test coverage
  3. Determine Test Oracles. Identify the sources of truth to determine whether the application has passed or failed tests; review common formal and heuristic oracles 
  4. Determine Test Procedures. Define what test procedures and test cases are; identify common test procedure types; learn how to document test procedures in a practical, efficient manner
  5. Configure the Test System. See how to ensure you have everything needed to support testing; discuss common challenges to test configuration; consider test lab requirements and realities
  6. Operate the Test System. Learn how to manage tester contact with the application under test (AUT); discuss different methods of interaction with the system to address different testing objectives; identify common artifacts and practices related to test operation
  7. Observe the Test System. Learn what empirical data to capture about the application under test and how to preserve testing interactions for review and reproducibility; consider common tools used to assist with test observation; identify common problems and human tendencies related to observation
  8. Evaluate Test Results. Discuss possibilities and probabilities related to test results (not every test failure is a bug!); identify typical test result evaluation tasks; consider performance test results interpretation; learn key factors related to defect communications
  9. Report Test Results. Learn how to make credible, professional reports of testing results and testing progress that address the varied needs of your target audiences; identify guiding principles for report design; review best practices and examples for defect reporting, progress status reporting, and quality statistics reporting

Part 3: Test Case Strategies

The heart of good testing is coming up with good test cases.  In this section, we will define what makes test cases “good”, and discuss these strategies for identifying test cases in specific contexts:

  1. White Box strategies
  2. Black Box strategies
  3. Input and data-based strategies
  4. User interface oriented strategies
  5. Business Process flow strategies
  6. Strategies based on your personal and organizational experiences

Part 4: Common Phases of Testing

Different testing activities take place as the software progresses through its life cycle. (Agile testers perform these same testing activities, even though they are not project phases.) This section explains the common phases of software testing, including the purpose of each, who normally performs it, and the typical types of tests that are done.

Test phases or types discussed:

  1. Unit and Software
  2. Integration
  3. System and System Integration
  4. Product Readiness
  5. Regression
  6. User Acceptance

Part 5: Approaches to Testing

Different approaches to testing are used to address different testing objectives and different project conditions. Some approaches are more formal, lengthy, traceable, and reproducible. Others are more free-form, quicker, less traceable, and less reproducible. The range of such approaches forms a continuum from which testers select the optimal combination for a given project. The best selection of approaches addresses the needs for both positive and negative testing.

  1. The Testing Approach Continuum
  2. Scripted Testing
  3. Freestyle Testing
  4. Middle-Ground (Charters, Checklists, Scenarios)

Part 6: Non-Functional Testing

Without question, functional testing is a must-have for software quality. However, there’s more to the picture than that. This section describes several key types of non-functional testing and identifies, what their scope is, and what techniques or best practices apply. 

  1. Performance
  2. Usability
  3. Accessibility
  4. Security
  5. Portability
  6. Localization

Part 7: Platform Specialization

Software is not just on the desktop—it runs on numerous platforms, and it all needs to be tested. This section takes multiple platforms into consideration and identifies each platform’s unique challenges, and the best testing approaches for each given platform.

  1. Web-Based
  2. Mobile
  3. SOA (Service-Oriented Architecture)
  4. Telephony and Voice
  5. DW/BI (Data Warehouse and Business Intelligence)
  6. COTS/MOTS – Package Implementations (COTS)

Part 8: Test Automation — Bonus Section

There have been many organizations that have set out to implement automation testing in their projects, and many of them have failed. This section identifies the different types of tools and practices that fall into the “automation” category and helps set realistic expectations and goals for automated testing. Learn how to optimize your automation testing investment and plan properly for long-term success. This is a bonus section that is discussed as time permits.

  1. Automated Test Tools
  2. System Monitor Tools
  3. File/Database Comparison Tools
  4. Static Analysis Tools

Part 9: Behavior Driven Development (BDD) & Test Driven Development (TDD) — Bonus Section

BDD and TDD are related approaches to software development that came out of the Agile movement and have proven to have a significant positive impact on software quality. This section provides an introduction to the concepts so testers can be prepared to adopt them together with developers and other project members using iterative development methods. This is a bonus section that is discussed as time permits.

  1. Test-Driven Development activities
  2. Behavior-Driven Development activities
  3. Tools for Different Languages

Part 10: Managing Testing Projects

Whether you lead a team of testers or work as the lone tester on a project, effectively managing the testing work is key to your ability to successfully test the software on time with the resources at hand.  In this section, we will address the basics of managing your work in a way that is relevant to individual contributors and lead leads alike.

  1. Planning for Testing (Universal Testing Method Steps 1-4)
  2. Requirements Traceability
  3. Test Resource Needs
  4. Testing Risks and Issues
  5. Testing Entry and Exit Criteria
  6. Measuring Testing Progress

Agile Boot Camp: ICAgile Fundamentals Certification (ICP)

Module 1: Why Agile? 

In today’s rapidly changing business environment, traditional methods of product development cannot always match the business needs. Businesses often experience delivery issues such as long delivery times and failure to adapt to the changing customer demands. We start by making the case for shifting to an Agile approach to solve problems and to gain an overall understanding of the principles and benefits of Agile approaches. 

  • Business turbulence
  • Agile Compared to Traditional Delivery
  • Benefits of Adopting Agile

Team Exercises: We will discuss the various challenges that drives business turbulence and how agility helps companies to adapt to changing circumstances. These challenges are tied back to the attendees’ own experiences in a changing environment. 

Module 2: Becoming Agile 

To learn more about Agile we review the Agile Manifesto, Principles, and the Agile Mindset. We start with Lean, which is a foundational component and influences all Agile methodologies. We will visit different agile approaches for both iterative development and continuous flow work and identify different types of work in their own context.

  • Agile Mental Models
  • Agile Manifesto and Principles
  • Types of Work
  • Agile Methods

Team Exercises: Teams will engage in a fun exercise that will improve understanding, and reinforce the importance of, the agile principles. We will also discuss the various types of work that they encounter in their own context.

Module 3: Agile Teams 

Agile focuses on creating a team that can deliver outstanding results on a consistent basis. In this section we will discuss what makes a high-performing team and how to build that team. The section will also cover the team roles associated with an Agile approach.

  • Attributes of Successful Teams
  • Agile Team Roles
  • Team as a System
  • Collaborative Team Environments

Team Exercises: As a class, we will discuss the attributes of a great team based on the attendees’ own experiences. The class will also identify components needed for collaborative environments – physical and virtual.

Module 4: Agile Product Planning 

A common myth is that Agile does not involve planning. In actually, there are five levels of planning on an Agile project including the Product Vision, Roadmap, Release Planning, Sprint Planning, and the Daily Standup. Utilizing team projects, we will take a hands-on look at the different levels of planning and how it applies to the team’s work. 

  • 5 Levels of Planning
  • Product Visions
  • Product Roadmaps
  • User Roles and Personas

Team Exercises: Teams will identify a team project and use that project for many upcoming exercises. They will practice creating a Product Vision, identifying Roadmap components, and turn User Roles into full-fleshed personas.

Module 5: Product Backlog 

The Product Backlog contents represent all the work of the Agile Team. We will investigate the different types of items represented in the Product Backlog including how those items are refined over time.

  • Product Backlog Items
  • Writing User Stories
  • Acceptance Criteria
  • Story Reviews

Team Exercises: The class will discuss Product Backlog components and how to break Epics into smaller User Stories. Teams will conduct a User Story Writing Workshop to create initial User Stories for their team project. Each team will present examples of their user stories and the Instructor will lead a discussion about where teams hit the mark and areas for improvement (Instructor will not have all of the ideas, this is a great opportunity for team dynamics).

Module 6: Prioritization and Estimation

The Product Backlog contains the work but the way the Backlog is prioritized and estimated is key to building a successful product. We will look at agile practices for prioritization and team estimation. In addition, we will better understand how we deliver product increments through Releases.

  • Prioritization
  • Estimating
  • Story Points
  • Release Planning

Team Exercises: We will review a retailer case study and their approach to prioritization key system features. Team will practice Story Point estimation. Project teams will identify needs for their first product release.

Module 7: Sprint Planning and Execution

In iterative development, the team works in a series of time-boxed events to deliver incremental value. These timeboxes are called “Sprints”. We will look inside the Sprint to understand the way the team works to produce value.

  • Sprint Planning
  • Product Increment
  • The Daily Standup
  • Agile Metrics

Team Exercises: Teams for define a Definition of Done for their team project. Teams will also identify key learnings and critical points about sprint execution. 

Module 8: Inspect and Adapt

The power of Agile comes from the fact that continuous improvement is built into the Agile system. In this section, we will review how People, Product and Process improve through a frequent inspect and adapt process. We will discuss the main Agile ceremonies that help us accomplish this: Sprint Review, Demo and the Retrospective.

  • Sprint Review
  • Demo
  • Retrospective

Team Exercises: The class will engage in an exercise to summarize the key events and artifacts within the Scrum framework. Teams will discuss how they could apply what they have learned to their current work and what they can start doing now so they do not lose what they have learned.

Module 9: Kanban Systems

Not all work fits well into a Scrum framework. Kanban is an Agile method that helps us to improve a delivery process with a focus on continuous improvement. We will cover the foundation of Kanban concepts, properties, and terminology. We will also understand the philosophy behind the Kanban framework and how it originated. The best way to understand Kanban is to go through the process of implementing it. This section goes through the various techniques and ceremonies associated with Kanban.

  • Kanban's Core Practices
  • Kanban Concepts, Principles, and Terminology
  • Visualization of Work
  • Managing Work-in-Progress

Team Exercises: We will use new team projects based on continuous flow types of work. Teams will engage in several exercises to build their own Kanban board that clearly communicates their commitments, encourages collaboration, and enables continuous improvement. We will also engage in discussions on key Kanban concepts and how Kanban may apply to their types of work.

Module 10: Adoption and Scaling

Agile Adoption can be accomplished with different approaches and at different speeds. We will review the best practices of Organizational Change Management as it applies to an Agile adoption and consider some of the primary reasons for adoption failure.  

  • Organizational Change Models
  • Scaling Methods
  • Delivery Self-Assessment

Team Exercises: We will wrap-up the course and attendees will identify concepts they can apply to improve their own product delivery.