The document discusses agile software development methods. It begins by outlining qualities of great software such as being user-friendly, robust, adaptable, etc. It then contrasts traditional "waterfall" development with newer agile methods. The core of agile is outlined in the Agile Manifesto which values individuals, working software, customer collaboration, and responding to change over processes, documentation, contracts, and plans. Key agile principles are presented, focusing on satisfying customers, responding to change, frequent delivery, collaboration, motivated individuals, face-to-face communication, working software, sustainability, technical excellence, simplicity, and self-organizing teams. Specific agile frameworks like Scrum are introduced, covering concepts like backlogs
10. Great software needs to…
Work as intended
Be user friendly
Be robust
Be adaptable
11. Great software needs to…
Work as intended
Be user friendly
Be robust
Be adaptable
Be portable
12. Great software needs to…
Work as intended
Be user friendly
Be robust
Be adaptable
Be portable
Be scalable
13. Great software needs to…
Work as intended
Be user friendly
Be robust
Be adaptable
Be efficient
Be portable
Be scalable
14. Great software needs to…
Work as intended
Be user friendly
Be robust
Be adaptable
Be reusable
Be efficient
Be portable
Be scalable
15. Great software needs to…
Work as intended
Be user friendly
Be robust
Be adaptable
Be reusable
Be efficient
Be portable
Be secure
Be scalable
16. Great software needs to…
Work as intended
Be user friendly
Be robust
Be adaptable
Be reusable
Be efficient
Be portable
Be secure
Be scalable
Be deliverable
23. The Agile Manifesto
We are uncovering better ways of developing software by doing it and
helping others do it. Through this work we have come to value:
• Individuals and interactions over processes and tools
• Working software over comprehensive documentation
• Customer collaboration over contract negotiation
• Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on
the left more.
Learnability: How easy is it for users to accomplish basic tasks the first time they encounter the software?Efficiency: Once users have learned the software, how quickly can they perform tasks?Memorability: When users return to the software after a period of not using it, how easily can they re establish proficiency?Errors: How many errors do users make, how severe are these errors, and how easily can they recover from the errors?Satisfaction: How pleasant is it to use the software?
Over-plannedLots of rules and regulationsRegimentedMicromanagedPhased
Fewer rules and regulationsAdaptabilityEvolvesOwnership
17 prominent developersKent Beck (SmallTalk, TDD, JUnit)Martin Fowler (Dependency injection, continuous integration, continuous delivery)Uncle Bob Martin (Software Craftmanship, Clean Code)Practitioners of several programming methodologies
Traditional wisdom: learn the fundamentals, techniques, heuristics, and proverbs
Break with tradition: detachment from the illusions of self
There are no techniques or proverbs, all moves are natural, becoming one with spirit alone without clinging to forms; transcending the physical
Framework for agileCross functional teamsValue at every layer of the system
Break down to smaller tasksSimplify deliveryIterate quickly
Features and development tasks broken down into User storiesStarts out fuzzy but becomes better understood as it is prioritised towards iterations