Aristotle in an Agile World By Ben Allen
Introduction Aim of the presentation is to introduce the agile mindset to software testers, using ancient philosophy as a reference point. What do ancient philosophers such as Aristotle have to do with modern day software testing? Why the interest in Agile methodology? Manifesto and principles behind the Agile movement. How philosophy can help in the agile pursuit of quality software. The Philosophical Agile Tester and High Performing Agile Teams.
Ancient Wisdom! Heraclitus: No man ever steps in the same river twice, for it s not the same river, and he s not the same man. Socrates / Plato: I only know that I know nothing. Aristotle: Knowing yourself is the beginning of all wisdom.
What does all that have to do with software testing and agile? A project is always changing and is never the same project with the same expertise. We cannot know everything about everything at the beginning of a project, sometimes we know nothing about important things. A team that takes time to ascertain its own capabilities and its customer s needs is a wise team that can deliver quality software.
What drives the high level of Agile interest? Reducing time to market Responsiveness to changing business and customer requirements Application quality Reducing costs Becoming more efficient Recognition that you don t know what you don t know Improvement in visibility
Agile Manifesto We are uncovering better ways of developing software by doing it and helping others to do it. Through this work we have come to value: Individuals and interactions Working Software Customer collaboration Responding to change over Processes and tools Comprehensive documentation Contract negotiation Following a plan That is, while there is value in the items on the right, we value the items on the left more.
How Aristotle can help Aristotle discusses the ideal middle ground (the golden mean) in his ethical theories. According to Aristotle we need just enough or the right amount of a certain characteristic at just the right time. Example of fear and confidence. - Too much confidence = Rash / Reckless - Too little fear = Cowardly - Ideal amount of confidence and fear = COURAGE
Aristotle and the Agile Manifesto It s not that we don t value the things on the right of the manifesto it s just that as a true Aristotelian we want to use the correct amount of the left hand side of the manifesto too. This will help to make us excellent agile testers and produce quality software.
The example of Just Enough Documentation More Details Less Details New System Simple to moderate addition to exisiting system Off-shore or distributed teams Co-located team Large complex solution Newly formed team Small simple solution Team that has been working together for a while i Document stable things, not speculative SearchSoftwareQuality: Approaches to defining requirements within Agile teams: Martin Crisp http://www.agilemodeling.com/essays/agiledocumentation.htm#issues WithDocumentation Scott Ambler
12 Principles of Agile Methods 1. Our highest priority is to satisfy the customer through the early and continuous delivery of valuable software 2. Welcome changing requirements, even late in the development. Agile processes harness change for the customer s competitive advantage 3. Deliver working software frequently, from a couple of weeks to a couple of months, with preference to the short time scale 4. Business people and developers must work together daily throughout the project 5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done 6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation 7. Working software is the primary measure of progress 8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely 9. Continuous attention to technical excellence and good design enhances agiltiy 10. Simplicity the art of maximising the amount of work not done is essential 11. The best architecture, requirements and designs emerge from self-organising teams 12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts behaviour accordingly
How Aristotle can help us to understand the agile principles (1) "We are what we repeatedly do. Excellence, then, is not an act, but a habit. Natural things are some or all of them subject to change. When several villagers are united in a single complete community, large enough to be self sufficing, the state comes into existence...and to be self-sufficing is the best end.
How Aristotle can help us to understand the agile principles (2) It is simplicity that makes the uneducated more effective than the educated. The function of man is activity of the soul according to reason. Excellence is never an accident. It is always the result of high intention, sincere effort, and intelligent execution; it represents the wise choice of many alternatives - choice, not chance, determines your destiny. IMAGINE HOW EFFECTIVE THE EDUCATED CAN BE!!!!
Common attributes of agile methods Incremental & Iterative Iterative with short cycles that are time-boxed to enable quick verification Cooperative Emphasis on communication, skilful people, interactions and collaboration Adaptive Responds to change, focuses on reducing risk early and able to change course as required Combine to give Working Software
Agile is NOT 1. Compressing the project schedule 2. Removing all existing software development processes 3. Throwing out all documentation 4. Writing code up to the last minute
Cross Functional Agile Teams Customer/ Customer Proxy Development QA / Testing Customer/ Customer Proxy Development QA / Testing Business Analyst 1 Business Analyst 2 Developer 1 Developer 2 Tester 1 Tester 2 Business Analyst 1 Business Analyst 2 Developer 1 Developer 2 Tester 1 Tester 2 Team 1 Team 2 Team 3 Business Analyst 3 Developer 3 Tester 3 Business Analyst 3 Developer 3 Tester 3
Tester Mindset Soft Skills No them and us Shorter timescales Less documentation Greater visibility Self management Team player Learn Get stuck in
High Performance Teams Five Characteristics of High Performance Teams 1. They have the right people on the team 2. They are led, not managed 3. They understand their mission 4. They communicate and collaborate continuously 5. They are accountable for their results Scaling Software Agility Best Practices for Large Enterprises - Leffingwell
The Agile Tester and the Ancient Philosopher Both need to be brave and leave their comfort zones. Both are searching for quality in their work and their results. Both are strong communicators with those around them and willing to try something new to produce the best.
Conclusion and Next Steps Have seen how philosophy can help with adapting to an agile mindset. Have discussed the agile manifesto and agile principles with reference to Aristotle. Have considered the cross functional role of agile testers and what makes a high performing team. If this has been of interest then the next steps are to look at the various stages of an agile project (planning, iterations, reviews and retrospectives). Please ask for more details if you are interested!