The four basic Agile values were described in Agile Manifesto in 2001. Brief interpretation of the values follows. I focused on the Working Software value, as it is the most relevant one to me at the moment.
1) Individuals and interactions over processes and tools
It's all about the TEAM which is executing the Tasks. Process and Tools exist in order to support the TEAM reaching its objectives.
2) Working software over comprehensive documentation
Test ALL THE TIME, deploy often and refactor constantly. Code by intention, not prescription. Design as you code and code as you design.
Coding by intention: What do I want to code? What is my intention? Coding starts with Interface as my understanding is vague and generic at first (I only know I need the code to do something and return something else), and evolves into concrete implementation as I learn and understand the topic better as-I-go. I also know basic test requirements from the beginning, so I can start testing as soon as I decided on my Interface.
Refactoring: Did I understand the requirement correctly and is it still reflected in my code? Is it as simple as can be? I rarely get my code spot on from the beginning, so refactoring is constant effort. And it's FUN! Only constant Refactoring creates Beautiful Code.
Detailed Design and documentation: Is often formalized at the end of the iterations cycle in extra iteration called a Landing Strip
3) Responding to change over following a plan
Plan is created and owned by the TEAM, is alive and constantly change after every iteration. If we get behind or ahead, we will know at the end of each ~10 days long Iteration.
4) Customer Collaboration over contract negotiation
The TEAM includes ALL the collaborating parties. On a typical application release we would have a BA and a PM in all of our daily stand-ups (and it would still take only 1/2hr!). Constant collaboration of all parties is more important than signing off "requirements" and delivering "something" few months later.
No comments:
Post a Comment