Cross-functional – BA, QA, Developers etcPrefer no job title within teamFull-time member – some exceptions like DBA, external consultants etc.
Agile Methodology Naveen Singh
Core Agile Values• People over Process• Deliverables over Documentation• Collaborations over Controls• Responding to change over Performing to plan• Value generators over Management Controls• Agile Framework – Scrum, TDD, FDD, XP etc.
Scrum• Scrum is one of the leading agile software development approaches. Scrum has become recognized as one of the best project management frameworks for handling rapidly changing or evolving projects. Especially useful on projects with lots of technology or requirements uncertainty, Scrum is a proven, scalable agile process for managing software projects.• Scrum is unique because it introduced the idea of “empirical process control.” That is, Scrum uses the real-world progress of a project — not a best guess or uninformed forecast — to plan and schedule releases. In Scrum, projects are divided into succinct work cadences, known as sprints, which are typically one week, two weeks, or three weeks in duration. At the end of each sprint, stakeholders and team members meet to assess the progress of a project and plan its next steps. This allows a project’s direction to be adjusted or reoriented based on completed work, not speculation or predictions.
Scrum Framework – Roles• Product Owner - Define the features of the product, Decide on release date and content, Prioritize features, Adjust features and priority every iteration, Accept or reject work results• Scrum Master - Represents management to the project, Responsible for enacting Scrum values and practices, Removes impediments, Shield the team from external interferences• Team - Teams are self-organizing, Typically 5-9 people, Cross- functional, Members should be full-time, Membership should change only between sprints• Other roles – Functional managers, senior management etc. unchanged
Scrum Framework - Process• Sprint Planning – Team selects items from the product backlog they can commit to completing, Sprint backlog is created, Tasks are identified and each is estimated, High-level design is considered• Sprint Review – Team presents what it accomplished during the sprint, Demo of working system or underlying architecture, NO PPT, Whole team participates including any external members like customers• Sprint Retrospective – Periodically take a look at what is and is not working, Done after every sprint, Whole team participates• Daily Scrum Meeting – 15 minutes daily stand-up meeting to talk about what was done yesterday, what will be done today and any impediments.
Scrum Framework - Artifacts• Product Backlog – The requirements, A list of all desired work on the project, Ideally expressed such that each item has value to the users or customers of the product, Prioritized by the product owner, Reprioritized at the start of each sprint• Sprint Backlog – A short statement of what the work will be focused on during the sprint. Any team member can add, delete or change the sprint backlog, Work for the sprint emerges• Burndown Chart – Chart to see daily progress, updated based on daily scrum meeting.
Scrum Keywords• User Story – User stories document requirements with particular attention to the end user’s point of view.• Epics – Group of related user stories• Theme – Top level objective or project• Story Points – Points are estimate for a story. Best technique to estimate is planning poker.• Velocity – Team velocity calculates based on stories done during the sprints. Velocity helps in planning releases.• Distributed Scrum – Team member located at multiple locations.• Scrum of Scrums – Multiple teams working on same product.• Code Monkey – Junior programmer• Sprint Goal – SMART• Pig (PO & SCM) and Chicken(Team) - Committed Vs Involved• Agile Coach – Provide coaching to team and mentoring, identify impediments and explore new tools &technologies and manage Scrum Office (similar to PMO)
Why Scrum• Development is a complex process and identify all integration issues at beginning is very challenging• Having complete requirement upfront is challenge, too many changes expected during build cycle• Managing and training resources during execution is big challenges. attrition rate is very high• Frequent design change based on external dependencies• End to end testing become difficult• Lots of external dependencies that pushes team in waiting mode• Benefits - acknowledge and adopt key lessons learnt, need for earlier and clearer visibility of solution design, flush out issues earlier to prevent date creep, tighter organization of testing and launch process, more focus on performance of new capabilities, early go live if needed. High productivity, less rework, high team satisfaction, early go-live, better customer satisfaction.• Next step – ??• Suitable Approach - ??• Are we ready - ??
Constraints• 1. All environment should be ready (Test/UAT/Production) – Based on definition of done. Done means only tested by QA or also by UAT?. If environment and required tools/technologies or even resource training needed then a separate sprint can be executed for this purpose.• 2. Release cycle (may be end of every 4 sprints or some deadlines) – release to whom? UAT or Prod?• 3. External dependencies (external team members going to be part of sprint? If not then continuous update needed for scrum team)• 4. Most important - team and management both understand the value of Scrum/Agile otherwise it can be more dangerous than waterfall.• 5. Dedicated product Owner and Scrum Master otherwise team will be in waiting mode and productivity will go down drastically.• 6. Estimation technique, tools (continuous build, automated testing, release tools, Automated deployment etc.)• 7. Decision related to daily scrum meeting, sprint goal and roles of team member
Common criticisms about Scrum• Lack of structure and necessary documentation• Only works with senior-level developers• Incorporates insufficient software design• Requires too much cultural change to adopt• Can be very inefficient — if the requirements for one area of code change through various iterations, the same programming may need to be done several times over. Whereas if a plan were there to be followed, a single area of code is expected to be written once.• Impossible to develop realistic estimates of work effort needed to provide a quote, because at the beginning of the project no one knows the entire scope/requirements• Agile is feature driven, non-functional quality attributes are hard to be placed as user stories