Super-charge Your IT Career with Agile Training
Although Agile methodologies can be applied across a variety of scenarios, they are invaluable tools for software development teams — and they have taken the industry by storm! They encourage adaptive planning, evolutionary development, flexible responses to change, and continual improvement, which are all vital in our complex technological age.
Ideal for experienced software developers and programmers, our Introduction to Agile Software Development course will teach you the principles behind the Agile Manifesto, and methodologies like Lean, Kanban, Extreme Programming and Scrum software development.
You will also learn about Agile project planning, design, architecture and collaboration; and behaviour-driven and Test-driven Development (TDD). Add industry-recognised skills to your next software development project and show employers that you have mastered an essential component of today’s IT industry!
Learning Outcomes
Outcomes achieved by undertaking agile training include:
- Learning about the advantages of Agile over the waterfall approach
- Exploring the principles, values, methodologies and best practices of Agile software development
- Gaining an understanding of the development life cycle
- Studying the Agile information radiator
- Gaining insights into Agile methods and the design-code-test loop
- Understanding incremental and iterative development (IID)
- Learning about the key concepts of extreme programming
- Exploring the seven principles of lean software development
- Studying the three phases in an ASD project
- Gaining insights into the Kanban approach to agile software development
- Understanding the features of FDD and Crystal
- Learning about the main principles of DSDM
- Exploring what occurs at each stage of an AUP project
- Studying the main features of EssUP
- Gaining insights into the main principles of the DAD framework
- Understanding Agile architecture and its principles and design
- Learning about emergent design
- Exploring the three objectives of intentional architecture
- Studying enterprise architecture
- Examining agile architectural modelling and its challenges
- Understanding the seven pillars of Agile collaboration
- Learning how to implement pair programming and collective ownership of code
- Exploring code refactoring, test-first programming and the features of BDD
- Studying continuous integration, Agile coding convention and sharing a common codebase
- Understanding Agile testing practices including the GUI testing process
- Learning about test data management and how to apply BDD to Agile development
- Studying how to implement an Agile testing lifecycle and UI testing in Agile projects
- Gaining insights into Scrum software development including framework roles and workflow
- Understanding the purpose of a daily Scrum
- Learning about Sprint review and backlog refinement
- Exploring the three Scrum artefact roles and Scrum limitations and values
- Gaining an understanding of how a Scrumban is used
- Studying how Scrums help improve team coordination
- Gaining insights into how test-driven development works
- Understanding developer TDD, and TDD acceptance and best practices
- Comparing TDD to other Agile testing techniques
- Learning about the importance of TDD documentation and test-driven database development
- Exploring BDD and TDD approaches to Agile development
- Studying how to apply TDD to Agile database development
- Gaining insights into the red/green/refactor cycle
- Understanding how to select tasks and perform iteration balancing
- Learning how to support communication and collaboration during iterative development
- Exploring how to managing change, quantity and risk during iterative development
- Studying the best practices for documentation and how to communicate team progress
- Examining scaling issues, iteration tracking, feature estimation and the best practices for scheduling
- Understanding how to create an Agile user story and how to evaluate and estimate
- Learning about Agile user roles and proxies
- Exploring velocity-driven and commitment-driven iteration planning
- Studying the release and iteration planning phases of software development projects
- Gaining insights into the features and implementation of Agile modelling
- Understanding Agile model-driven development (AMDD) activities
And more!
Scrum versus Kanban
The Scrum and Kanban empirical models both embrace the principles of Lean and Agile training and development. They also both encourage self-organised teams, high-quality delivery, continuous improvement and a prioritising of requirements based on business value. But how do they differ?
Scrum
Scrum is essentially more prescriptive in nature, with certain roles allocated — the scrum master, the product owner and the development team. It includes ‘artefacts’ like product increment, and spring and product backlog, and time-boxed events including the ‘sprint’. The sprint includes processes like sprint planning, sprint reviews, daily stand-ups and retrospectives. It is quite rigid in terms of team adherence and the scrum master must ensure that scrum methodologies are ‘understood and enacted’.
One of the challenges with ‘pure’ scrum is that sprints must be time-boxed to a month or less, and should result in a potentially releasable product. Teams using scrum are also asked to commit to the delivery of production-quality software at the end of each sprint. This means having code designed and tested and a demo ready to host for stakeholders in a short time frame — all of which can increase pressure!
On the downside, because teams have already committed to the completion of their ‘user stories’, they may decide to cut corners to meet deadlines. However, others believe time-boxed sprints, although challenging, help to provide structure and discipline, and any ‘failures’ are opportunities to learn and improve.
Kanban
Kanban is not as prescriptive, with only three rules — visualise workflow, limit work in process (WIP), and measure and improve flow. With limited rules, teams can essentially apply Kanban processes to their existing methodologies, although some will argue that flow is not as optimised. Unfortunately, though, ‘pure’ Kanban is also less disciplined, and new teams can flounder.
Some say Kanban is also too ‘linear’, so more suited to maintenance work rather than new-feature development, and repeatable processes rather than complex tasks like software development. There is also the risk that teams won’t take the time to regularly reflect and improve without mandated retrospectives.
Scrumban
American Corey Ladas was the first to describe the Scrum/Kanban hybrid term ‘Scrumban’ in his 2009 book, Scrumban: Essays on Kanban Systems for Lean Software Development. In one of these essays, he suggests starting with Scrum and then optimising processes until teams reach a point where mandated time-boxed processes are no longer necessary.
Ajay Reddy, the author of The Scrumban [R]Evolution: Getting the most out of Agile, Scrum, and Lean Kanban, proposes a different management framework. This is one that emerges when teams employ Scrum as their chosen way of working, and then Kanban “as a lens through which to view, understand, and continuously improve how they work”.
It’s no surprise that Agile experts disagree on the definition of Scrumban, however, most believe that teams need discipline and structure as a starting point before they improve and adapt. They also agree that regular reflection and improvement is important. They recommend starting by understanding the underlying Lean and Agile concepts behind both methodologies (Agile training can help), and then working out either which is more suitable, or whether a hybrid like Scrumban is the way to go!
The 7 Lean Principles of Software Development
Founded on manufacturing principles first used by Toyota in their production systems, Lean development methodology helped to manage and optimise the process to minimise waste and increase customer value. Its transition into the area of software development first originated in a 2003 book titled, Lean Software Development: An Agile Toolkit by Mary and Tom Poppendieck. The seven principles proposed (which you will learn about when undertaking Agile training) include:
Eliminate Waste
The first principle is to eliminate anything that isn’t of value to the end-user. In software development, this is done by reviewing the value of the software product being built and then identifying the ‘waste’. This can include unclear requirements and unnecessary features, processes or codes. Tools that can help identify waste include
Create Knowledge
Software development is actually a knowledge-generating progression, however, following this principle requires development teams having the right structures to enable proper learning. It requires focus and commitment and can be assisted by code reviews, pair programming, project documentation and performance training etc.
Build In Quality
A Lean software development team should be focused on developing quality in the product and aspiring to minimal faults. Teams should also keep enhancing the development process to optimise the end result.
Ensure Fast Delivery
Lean development techniques focus on delivering software as fast as possible. Project teams need to provide targeted components to users at the right time and create a stable workflow by optimising the value of the process to facilitate faster results.
Empower Your Team
Everyone in the team needs to be respected and when things go wrong, work together to achieve a solution. People should be given innovative freedom to choose and identify the right approaches for any given task. Gaps in the process should also be identified to minimise conflict and challenges.
Delay Decision Making
It sounds counter-intuitive, however, delaying decision making allows teams to gather more information and data to help them make even better decisions. This gives them more time to learn and minimises the negative effects of hasty, rash decisions.
Optimize the Whole
Teams should strive for the optimisation of the entire development process, not just parts of it. This encourages the elimination of inefficient development and testing cycles and enables faster delivery. The entire value stream also needs to be optimised from start to finish.
Gain valuable industry-recognised skills and boost your IT career with our Introduction to Agile Software Development course.