Agile Software Development
Agile methods are incremental development methods in which the increments are small and, typically, new releases of the system are created and made available to customers every two or three weeks
Covering why rapid development became critical, why stable requirements are hard to achieve, the four values of the Agile Manifesto, the five principles of agile methods, what agile methods are best suited for, and how agile minimises documentation
Covering the practical difficulties of applying agile principles, the contract problem, time-based contracts and their risks, agile and software maintenance (maintainability, team continuity, customer involvement), and the balanced view of agile methods' shortcomings
Covering how agile and plan-driven approaches differ in their treatment of design/implementation, how iteration works in each, whether plan-driven can support incremental delivery, the documentation spike, and the ten factors for choosing between the two approaches
Covering XP's origin, the XP release cycle, requirements as user stories, key XP practices, the on-site customer, story cards and the planning game, release deadline handling, XP's rejection of designing for change, refactoring, and which practices are most commonly adopted in practice
Covering XP's four key testing features, test-first development, the benefits of writing tests before code, customer role in acceptance testing, automated testing frameworks, three reasons test-first doesn't guarantee thorough testing, build acceptance rules, and how user stories relate to tasks and test cases
Covering what pair programming is, its three advantages, egoless programming, pair programming vs formal code inspections, how pair programming supports refactoring, productivity findings from both student and experienced programmer studies, the critical value of knowledge sharing, and the dynamic nature of pair assignment
Covering why plan-driven management doesn't suit agile, Scrum's focus and scope, the three Scrum phases, sprints, the product backlog, the Scrum master role, team isolation during sprints, daily stand-up meetings, five advantages of Scrum, and Scrum's original co-located team design versus distributed development
Covering why scaling agile is important, the two scaling perspectives (scaling up vs scaling out), six ways large systems differ from small, three critical adaptations for large systems, brownfield systems, four reasons agile is difficult to introduce in large companies, conflicts with change management and testing standards, the most enthusiastic agile adopters, and agile introduction as cultural change
A comprehensive review of the agile software development, covering all fundamental knowledge areas: the Agile Manifesto and principles, agile method problems and limitations, plan-driven vs agile development, XP practices and release cycle, testing in XP and test-first development, pair programming, Scrum and agile project management, and scaling agile methods
Covering: why rapid delivery often matters more than functionality, how agile principles accelerate development, when to recommend against agile, user stories as requirements (advantages and disadvantages), test-first development understanding and difficulties, pair programming productivity, Scrum vs plan-driven management across four dimensions, development strategies for critical software, preventing customer representatives from 'going native', and remote work conflicts with agile methods
