The rise of the agile movement has led to huge changes in the way companies all over the world design and develop computer software. It has also led to a lot of confusion around what we mean by “agile” software development, and a bewildering assortment of processes and frameworks, jargon and buzzwords. This course will teach you and your team the principles of agile software development, and the techniques and tools you can use to encourage the adoption of agile processes within your organisation.
This course is intended for people who are already working together as part of a software development team; individual delegates will still find much here that is informative and insightful, but the ideas and material presented will be more effective if several people from the same team have attended the course.
The course can be delivered over two or three days. The course consists of four core modules and seven specialist modules. The three-day version includes all seven specialist modules; for the two-day version, we will agree ahead of time which modules are most relevant to your group’s situation and requirements.
Foundations of Agile
What do we mean when we talk about agile software development? This module covers the origins of the Agile Manifesto and its underlying principles: what was here before, and why has agile been so widely adopted? This module will also explain many of the jargon terms and buzzwords that have become associated with agile since it was first proposed nearly 20 years ago.
- Introduction – how did we get here?
- The Agile Manifesto and principles of agile software development
- Overview of agile methodologies: scrum, kanban, and extreme programming
- Risks and benefits
Managing Products and Projects with Agile
Project management often boils down to two key questions: what should we be working on right now, and what should we work on next? This module covers using agile techniques to identify all the things your team could be working on, to refine and prioritise those work items, and to make sure everybody – your teammates, stakeholders and customers – knows what’s happening next.
- Visions, roadmaps and backlogs
- The Minimum Viable Product (MVP)
- Roles and responsibilities
- Prioritisation, estimation and planning
Effective Agile Teamwork Through Communication
Communication is vital to successful agile software development. This module covers the various communication structures used on modern development teams. You’ll learn how to use these tools effectively, how to keep your teammates and stakeholders informed about what’s happening, and how to focus on delivering value instead of wasting time in unnecessary meetings.
- Writing effective stories
- Capturing decisions and sharing designs
- How to run effective meetings
- Collaboration through code – prototypes, spikes and code reviews
Adopting agile principles can dramatically change the way a software team operates, and this can often lead to friction between your team and the rest of the organisation. This module looks at some of the common scenarios that can lead to conflict between agile and non-agile teams, and how to manage those scenarios.
- Release management and deployment
- Communicating with stakeholders
- Coordinating with other development teams
- Infrastructure planning and cost management
Building and Running Agile Teams
Effective agile development is about collaboration, communication, and empowering individuals to do their best work. For teams who are new to agile, it can take time to figure out who is responsible for what, and how to coordinate work across the team. This module covers the key roles on an agile team and how they should expect to work together during an agile project lifecycle.
- Roles and responsibilities
- Collaboration styles
- Working with stakeholders and external contributors
- Recruiting and onboarding new team members
Quality and Control
Adopting agile technologies can dramatically improve your team’s output; it’s not unusual to see teams go from releasing code once every few months to doing multiple deployments in a week. In this module, we’ll look at how your team can work together to maintain quality control and manage defects on agile projects.
- The definition of “done” – how do we know when work is complete?
- Agile testing and quality assurance
- Monitoring and metrics
- Non-functional requirements, such as information security and compliance
Implementing Agile using Scrum
Scrum is a process framework for managing agile software development, based around a structured set of regular meetings, roles and responsibilities. Many teams have adopted scrum as their project management tool of choice; others use specific elements of scrum that work well for them. This module covers the principles and processes of scrum and how to apply them to your own projects.
- Working in sprints and sprint planning
- Daily stand-ups
- Reviews and retrospectives
- Backlog refinement
Agile Development with Extreme Programming
Extreme programming (XP) is a highly disciplined methodology that takes beneficial elements of conventional agile processes and incorporates them into every aspect of the development process. XP encourages techniques such as rapid iterations, test-driven development and pair programming to create continuous feedback cycles and promote rapid delivery of working software.
- Pair programming
- Test-driven development and the red/green/refactor cycle
- Continuous integration
- Working with rapid feedback cycles
Implementing Lean Agile using Kanban
Lean software development is a subset of agile based on ideas from lean manufacturing processes used in other industries, most notably the famous Toyota Production System. Kanban is a lightweight set of techniques and practices that can help teams adopt a lean approach to software development. This module discusses how your team can use kanban as part of your agile development process.
- Visualize your work; limit work in progress
- Identify and eliminate waste
- Deliver early and improve incrementally
- Create knowledge and optimise learning
- Respect people and work sustainably
The ideal agile team is 4–8 people working in the same room. Fewer than four people and it can be hard to collaborate, pair and review work effectively; more than eight people makes it hard to run effective meetings, stand-ups and retrospectives – and working with fully remote or distributed teams can introduce a whole new set of challenges. In this module, you’ll learn how to apply elements of agile development across different team sizes and structures.
- Challenges of scaling agile to different scenarios
- Scaling down: agile practices for solo developers and small teams
- Scaling up: agile for multiple teams and larger organisations
- Scaling out: agile for remote and distributed teams
Tools and Technologies for Running Agile Projects
Some teams run agile projects using sticky notes and a whiteboard; others use a rich array of online and offline tools and applications to gather requirements, refine backlogs and prioritise work. This module covers some of the common applications and tools used by agile teams to manage their process: their benefits, their risks, and what should you look for when choosing a tool.
- Manage your backlog with roadmapping tools
- Track and visualise work in progress
- Collaborate on documents, diagrams and designs
- Connect different tools via plugins and APIs
Upcoming Course Dates
No public dates are currently scheduled.
If you'd like to run this course for your team or at your conference, please get in touch