Agile With Scrum
Why choose “Agile”? “It
is not the strongest of the species that survive, nor the most intelligent, but the ones most responsive to change.” Charles Darwin, The Origin of Species
Agility implies individuals
and iterations over processes and
tasks working software over comprehensive documentation customer collaboration over contract negotiation responding to change over following a plan.
Agile software development
Agile methods emphasize real-time communication, preferably face-to-face, over written documents. Most agile teams include all the people necessary to finish software. This includes –
– –
programmers and their "customers" (customers are the people who define the product; they may be product managers, business analysts, or actual customers). testers, interaction designers, technical writers, (as Apllicapble) and ofcource managers.
Agile Project Methodology
Empirical management & control process Inspect and adapt feedback loops Used to manage complex projects since 1990 Delivers business functionality in short iterations Scalable to distributed, large, and long projects CMM Level/3 and ISO 9001 compliant Extremely simple but very hard
Agile Project Methodology
Scrum
Scrum
Waterfall project management Planning Analysis Design Coding Testing Performance User Acceptance Pilot Live Time
Scrum Process
How do you do Scrum?
Understanding Roles
Create a Project Team with three sets of roles • Project Owner • Scrum Master • Scrum Team
Daily Scrums
Daily 15 minute status meeting; Same place and time every day; Three questions;
What have you completed since last meeting? What will you complete before next meeting? What help do you need?
Any decisions to be made?
Monthly Demonstration
The
Team presents “Production quality” features to Owner
Unfinished/Next
items are discussed
Why Agile Waterfall
Agile Cost
Requirements
Schedule
Constraints Value /Vision Driven
Plan Driven
Estimates Cost
Schedule
The Plan creates cost/schedule estimates
Features
The Vision creates feature estimates
Project Roles/Responsibilities Product Owner Manage prioritized product backlog Review test cases and requirements Discuss trade-offs and clarifications with team
Scrum Master Run start-of-day daily scrum Facilitate issues resolution during GDC day Collect and collate individual daily updates + hours Protect team from scope changes during sprint
Project Roles/Responsibilities Team (Example Tasks)
Develop the sprint backlog Analyze, decompose and estimate tasks for backlog Write unit, acceptance and regression test cases Design, develop and test the features in the sprint Raise and solve issues with urgency Add items to the Sprint (as necessary)
Tools Product Backlog – spreadsheet of all desired features for product Product Burn-Down Graph – graph of the progress made in delivering the items on the Product Backlog. Sprint Backlog – spreadsheet of all tasks for features in a single sprint Sprint Burn-Down Graph – graph of the progres made in delivering the tasks in the Sprint backlog. Shows plan vs. actuals. Daily Scrum Meeting – <30 min, action-oriented meeting to identify and resolve issues and track status. Facilitated by consolidated daily, individual status eMails. Sprint Demonstration Meeting – meeting for team to demonstrate features delivered in Sprint and to obtain feedback
Sprint Schedule Lasts
for 7 to 15 days Max a month
Each Sprint can be released to the customer
Cultural shifts
Individual ownership and daily accountability eliminates end of project “death march”. Each day is valuable!!
Test driven development will ensure that we benefit from our collective strengths and will enable us to gain customer acceptance quicker
Issues can not linger… they must be attacked and solved quickly
We won’t be implementing pair programming but the concept is sound and as you feel comfortable seek that person that can improve your delivery.
Agile is based on empirical analysis. Let’s measure and evaluate ourselves at each step and constantly improve.
How To implement 1. understand scrum practices and rules 2. Team should Collectively build the Sprint Backlog
Analyze the prioritized features in the product backlog Break these features into discrete “stories” Break these stories into discrete tasks Take ownership for tasks Estimate duration for each task Raise questions and seek clarifications from Prod. Owner
Points to Consider During Estimation
1. If estimation exceeds 8hrs for any given task, task should be broken down into 2 separate tasks. 2. A task can have shared responsibilities. E.g. Both QA and Dev are responsible for a task like ‘Write Unit Tests’. In this case, Sprint backlog will have 2 entries for the same task - once for QA and once for Dev. In such a case, both QA and Dev should work together towards the completing the task. 3. Database schema/script modification tasks should have separate entries in the sprint backlog. They should not be coupled with tasks related to code change. 4. For any query modification, 2 separate entries should be created – one for DBA and one for Dev, to integrate query with the app. 5. Development tasks should be as less generic as possible. E.g. Task should mention the actual type change required – Modify jsp, Modify DAO, Modify Converter, modify resource bundle, modify struts.xml, add delegate and service bean method etc. 6. Estimate carefully. Collectively we will all be accountable to deliver on our estimates. Do the necessary research to get it right.
Questions