Presentation from Agile Base Camp 2 conference (Kiev, may 2010) about major activities to do before starting iterative development with one of the Agile methodologies.
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Agile Way to First Iteration
1. Agile Way to First Iteration
Mikalai Alimenkou
http://xpinjection.com
2. Background
• Java Technical Lead/Scrum Master at
Zoral Labs
• 6+ years in software development
• 4+ years of working by Agile
methodologies
• Expert in Agile engineering practices
• Agile coach (TDD, Testing, Planning, etc.)
at XP Injection (http://xpinjection.com)
13. When things are simple?
• Another CRUD application
• Application with many competitors on the
market
• Ready to use requirements or specification
from the customer
• Cool idea but simple product
• Reverse engineering of existing project
14. What is iteration 0?
• Before first real iteration
• Prepare all tools and environments
• Establish team practices
• Prepare backlog to first iteration planning
• Learning new technologies
• Establishing team velocity
• Even earning some business value
15. What happens in real world?
Backlog is not ready because customer is not
ahead of developers
16. What happens in real world?
UI has many inconsistencies without common
UI design
17. What happens in real world?
Architectural decisions can’t satisfy nearest
project requirements
18. What happens in real world?
Functionality is ready but product doesn’t
satisfy non-functional requirements
19. What happens in real world?
Lack of deep common understanding of what
product is built
24. What do we need to start?
Concepts
???
User
Stories
Iteration
plan
Acceptance
Tests
Budget Team
25. What does customer need to start?
Concepts
Major
Features
Product
Design
Product
Architecture
Test
Strategy
Risks
User
Value
Efforts
Estimates
Skills
Set
Cost
Estimates
Release
Plan
User
Stories
Iteration
plan
Acceptance
Tests
Budget
Team
Execution
PlanningVision
27. Product vision
• Help everyone be on the same page
• Collective understanding of the product
• Define main and differentiating features
• Ways:
– Product workshop
– Users, roles and functions game
– UI prototyping
28. We understand
• Who are the customers
• Competitors and alternative products on the
market
• Product category and role on the market
• Key features of the product
29. Product design
• Major data flows
• Main UI navigation paths
• Messaging and communication protocols
• Users and their roles in the system
• Main user activities
31. Agile approach
• Actors, roles and goals list
– Whiteboard snapshots or simple spreadsheets
– Personas for each role (details like name, life cycle,
image, etc.)
• Paper or other lightweight prototyping
– Mockup tools as cheap and quick as possible
– Helps communicate effectively
• User testing
– Execution of scenarios on prototypes
– Get feedback from users to avoid early mistakes
32. Agile risk management
• Risk meeting to identify risks
• Store main risks on cards and put them into
zone by impact and probability
• Brainstorm for high right corner risks
• Make results visible and revisit during
development
33. Define architecture
• Understand key components, flows and
technologies
• Reduce technological and schedule risks
• Prove main assumptions
34. Traditional approach
• Create detailed architectural document
• Build all kinds of diagrams and architectural
views
• Review architecture
• etc.
35. Agile approach
• Use informal style of documents
• Validate main architectural decisions with
architectural prototypes
• Mock unneeded components and services
36. Testing strategy
• Testing strategy helps to reduce time of tests
automation
• Select testing frameworks and tools for each
kind of tests
• Define roles and responsibilities for testing
37. Acceptance testing
• Define acceptance criteria for each User Story
during iteration planning (PO, QA)
• Create acceptance tests (PO, QA, DEV)
• Implement acceptance tests (QA, DEV)
• Use them as part of DONE criteria
• At the end of iteration all acceptance criteria
must pass
38. Release planning
• Divide functionality by importance
• Must have, Important, Would be nice
• Estimate features, not stories
• Don’t put all top priority stories in first release
• Story mapping
40. Hiring business resources
• Important Product Owner role:
– Strong business leadership and vision
– Understand needs of users
– Open to new ways of working
– Have planning skills, not just reacting to the facts
– Collaborative, decisive, conceptual thinker
• Wrong Product Owner can:
– Slow down the project
– Lead the team in the wrong direction
41. Hiring technical team
• Need experienced senior development staff early:
– Estimate features
– Define architecture
– Prepare “proof of the concept” architectural prototypes
– Help to hire rest of the team
• Full team hiring should wait for budget approval and
architectural decisions:
– Identify needed skills and team size
– Some time should be spent to bring team up to speed on
the vision
– Team trainings on Agile and engineering practices
42. You take away
• Not all projects may be started quickly with
Agile
• Some things needs to be done upfront
• Don’t use Agile practices fanatically
• Almost every traditional activity may be
performed in Agile way