The Everything You Need to Know Guide
What kind of information are you looking for?
Agile software development refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams.
Agile methods or Agile processes generally promote a disciplined project management process that encourages frequent inspection and adaptation, a leadership philosophy that encourages teamwork, self-organization and accountability, a set of engineering best practices intended to allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs and company goals.
For a great reference guide of key Scrum techniques and concepts, download our free Scrum Cheat Sheet!
Scrum & Agile Basics
Scrum is a lightweight process framework for agile development, and the most widely-used one.
- A "process framework" is a particular set of practices that must be followed in order for a process to be consistent with the framework. (For example, the Scrum process framework requires the use of development cycles called Sprints, the XP framework requires pair programming, and so forth.)
- "Lightweight" means that the overhead of the process is kept as small as possible, to maximize the amount of productive time available for getting useful work done.
A Scrum process is distinguished from other agile processes by specific concepts and practices, divided into the three categories of Roles, Artifacts, and Time Boxes. These and other terms used in Scrum are defined below.
Scrum is most often used to manage complex software and product development, using iterative and incremental practices. Scrum significantly increases productivity and reduces time to benefits relative to classic "waterfall" processes. Scrum processes enable organizations to adjust smoothly to rapidly-changing requirements, and produce a product that meets evolving business goals.
An agile Scrum process benefits the organization by helping it to
- Increase the quality of the deliverables
- Cope better with change (and expect the changes)
- Provide better estimates while spending less time creating them
- Be more in control of the project schedule and state
As a result, Scrum projects achieve higher customer satisfaction rates.
Agile development refers to any development process that is aligned with the concepts of the Agile Manifesto. The Manifesto was developed by a group fourteen leading figures in the software industry, and reflects their experience of what approaches do and do not work for software development. The Manifesto says:
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
The agile philosophy holds that the best way to meet customer needs is through the collaboration of a committed group of people, who focus on achieving results quickly, with as little process overhead as possible.
A key element of this philosophy is that we must trust people and their ability to collaborate, more than we trust any particular process. This principle follows from the fact that people can succeed without a formal process, but no process can succeed without people. For this reason, we should design an agile process that best taps the abilities of team members by emphasizing collaboration, rather than relying on the structure of a process to guarantee success.
The Agile Manifesto does not specify any particular practices that a development team should follow. Specific agile process frameworks, such as Scrum and XP, do define practices that must be followed.
A Deeper Look Into Scrum
The benefits are different for different people.
Customers find that the vendor is more responsive to development requests. High-value features are developed and delivered more quickly with short cycles, than with the longer cycles favored by classic "waterfall" processes.
Vendors reduce wastage by focusing development effort on high-value features, and reduce time-to-market relative to waterfall processes due to decreased overhead and increased efficiency. Improved customer satisfaction translates to better customer retention and more positive customer references.
Team members enjoy development work, and like to see their work used and valued. Scrum benefits Team members by reducing non-productive work (e.g., writing specifications or other artifacts that no one uses), and giving them more time to do the work they enjoy. Team members also know their work is valued, because requirements are chosen to maximize value to customers.
Product Managers, who typically fill the Product Owner role, are responsible for making customers happy by ensuring that development work is aligned with customer needs. Scrum makes this alignment easier by providing frequent opportunities to re-prioritize work, to ensure maximum delivery of value.
Project Managers (and others) who fill the ScrumMaster role find that planning and tracking are easier and more concrete, compared to waterfall processes. The focus on task-level tracking, the use of Burndown Charts to display daily progress, and the Daily Scrum meetings, all together give the Project Manager tremendous awareness about the state of the project at all times. This awareness is key to monitoring the project, and to catching and addressing issues quickly.
Scrum provides high visibility into the state of a development project, on a daily basis. External stakeholders, such as C-Level executives and personnel in the Project Management Office, can use this visibility to plan more affectively, and adjust their strategies based on more hard information and less speculation.
Learn More about Agile Development & Scrum
Scrum differs from traditional "waterfall" approaches to project management in many ways, but is based on sound project-management principles. Our article on Scrum as Project Management dives deeper into the similarities and differences between Scrum and traditional project management methodologies.
Scrum does not define just what form requirements are to take, but simply says that they are gathered into the Product Backlog, and referred to generically as "Product Backlog Items," or "PBIs" for short. Given the time-boxed nature of a Sprint, we can also infer that each set should require significantly less time to implement than the duration of the Sprint.
Most Scrum projects borrow the "XP" (Extreme Programming) practice of describing a feature request as a "User Story," although a minority uses the older concept of a "Use Case." We will go with the majority view here, and describe three reasonably-standard requirements artifacts found in Product Backlogs.
A User Story describes a desired feature (functional requirement) in narrative form. User Stories are usually written by the Product Owner, and are the Product Owner's responsibility. The format is not standardized, but typically has a name, some descriptive text, references to external documents (such as screen shots), and information about how the implementation will be tested.
For example, a Story might resemble the following:
|Name: Planner enters new contact into address book, so that he can contact the person later by postal or electronic mail|
|Description: Planner enters standard contact information (first and last name, two street address lines, city, state, zip / postal code, country, etc.) into contact-entry screen. He clicks "Save" to keep the data, and "Cancel" to discard data and return to previous screen.|
|Screens and External Documents: http://myserver/screens/contact-entry.html|
|How to test: Tester enters and saves the data, finds the name in the address book, and clicks on it. He sees a read-only view of the contact-entry screen, with all data previously entered.|
The elements in this User Story are:
- Name: The Name is a descriptive phrase or sentence. The example uses a basic "Role-Action-Reason" organization. Another common style, popularized by Mike Cohn, follows the template "As a <type of user>, I want <some goal> so that <some reason>." The choice of template is less important than having a workable standard of some kind.
- Description: This is a high-level (low-detail) description of the need to be met. For functional (user-facing) requirements, the description is put in narrative form. For non-functional requirements, the description can be worded in any form that is easy to understand. In both cases, the key is that the level of detail is modest, because the fine details are worked out during the implementation phase, in discussions between team members, product owners, and anyone else who is involved. (This is one of the core concepts of Scrum: Requirements are specified at a level that allows rough estimation of the work required to implement them, not in detail.)
- Screens and External Documents: If the Story requires user-interface changes (especially non-trivial ones), the Story should contain or link to a prototype of the changes. Any external documents required to implement the Story should also be listed.
- How to test: The implementation of a Story is defined to be complete if, and only if, it passes all acceptance tests developed for it. This section provides a brief description of how the story will be tested. As for the feature itself, the description of testing methods is short, with the details to be worked out during implementation, but we need at least a summary to guide the estimation process.
There are two reasons for including the information about how to test the Story. The obvious reason is to guide development of test cases (acceptance tests) for the Story. The less-obvious, but important, reason, is that the Team will need this information in order to estimate how much work is required to implement the story (since test design and execution is part of the total work).
Not all requirements for new development represent user-facing features, but do represent significant work that must be done. These requirements often, but not always, represent work that must be done to support user-facing features. We call these non-functional requirements "Technical Stories."
Technical Stories have the same elements as User Stories, but need not be cast into narrative form if there is no benefit in doing so.
Technical Stories are usually written by Team members, and are added to the Product Backlog. The Product Owner must be familiar with these Stories, and understand the dependencies between these and User Stories in order to rank (sequence) all Stories for implementation.
A Defect, or bug report, is a description of a failure of the product to behave in the expected fashion. Defects are stored in a bug-tracking system, which may or may not be physically the same system used to store the Product Backlog. If not, then someone (usually the Product Owner) must enter each Defect into the Product Backlog, for sequencing and scheduling.
The three roles defined in Scrum are the ScrumMaster, the Product Owner, and the Team (which consists of Team members). The people who fulfill these roles work together closely, on a daily basis, to ensure the smooth flow of information and the quick resolution of issues.
The ScrumMaster (sometimes written "Scrum Master," although the official term has no space after "Scrum") is the keeper of the process. He is responsible for making the process run smoothly, for removing obstacles that impact productivity, and for organizing and facilitating the critical meetings.
The ScrumMasters responsibilities include
- Removing the barriers between the development Team and the Product Owner so that the Product Owner directly drives development.
- Teach the Product Owner how to maximize return on investment (ROI), and meet his/her objectives through Scrum.
- Improve the lives of the development Team by facilitating creativity and empowerment.
- Improve the productivity of the development Team in any way possible.
- Improve the engineering practices and tools so that each increment of functionality is potentially shippable.
- Keep information about the Team's progress up to date and visible to all parties.
In practical terms, the ScrumMaster needs to understand Scrum well enough to train and mentor the other roles, and educate and assist other stakeholders who are involved in the process. He should maintain a constant awareness of the status of the project (its progress to date) relative to the expected progress, investigate and facilitate resolution of any roadblocks that hold back progress, and generally be flexible enough to identify and deal with any issues that arise, in any way that is required. He must protect the Team from disturbance from other people by acting as the interface between the two.
The ScrumMaster does not assign tasks to Team members, as task assignment is a Team responsibility. His general approach towards the Team is to encourage and facilitate their decision-making and problem-solving capabilities, so that they can work with increasing efficiency and decreasing need for supervision. His goal is to have a team that is not only empowered to make important decisions, but does so well and routinely.
The Product Owner is the keeper of the requirements. He provides the "single source of truth" for the Team regarding requirements and their planned order of implementation.
In practice, the Product Owner is the interface between the business, the customers, and their product related needs on one side, and the Team on the other. He buffers the Team from feature and bug-fix requests that come from many sources, and is the single point of contact for all questions about product requirements. He works closely with the team to define the user-facing and technical requirements, to document the requirements as needed, and to determine the order of their implementation. He maintains the Product Backlog (which is the repository for all of this information), keeping it up to date and at the level of detail and quality the Team requires.
The Product Owner also sets the schedule for releasing completed work to customers, and makes the final call as to whether implementations have the features and quality required for release.
The Team is a self-organizing and cross-functional group of people who do the hands-on work of developing and testing the product. Since the Team is responsible for producing the product, it must also have the authority to make decisions about how to perform the work. The Team is therefore self-organizing: Team members decide how to break work into tasks, and how to allocate tasks to individuals, throughout the Sprint.
The Team size should be kept in the range from five to nine people, if possible. (A larger number make communication difficult, while a smaller number leads to low productivity and fragility.)
Note: A very similar term, "Scrum Team," refers to the Team plus the ScrumMaster and Product Owner.
Next Steps with Scrum
Agile Team Definition Template:
The amount of work an Agile Team can perform in a Sprint must be known in order to plan the Sprint effectively. You can use this template to estimate the Team’s capacity for work for a particular Sprint.
First enter the Sprint duration, and the hours the whole Team spends in standard meetings and activities, to compute the best-case “free time” in which Team Members can be working on Sprint Backlog Items. Then provide each Team Member’s hours off per Sprint, and percentage availability to work on Sprint Backlog items. The template will then compute the Team’s total capacity for work in Points, or Person-Days, and the effective number of full-time employees (Net Team Resources).
When you have estimated the Team’s capacity, and estimated the size of requirements (Stories, Defects) in the Product Backlog, you can then determine which items will fit in this Sprint’s Backlog.
Agile Estimation Decks:
Estimating work is difficult to do well, and difficult to do quickly. Our estimation process leverages your team’s expertise to produce quick and accurate results. By using these estimation decks, we eliminate the problem of expert bias, and ensure that your team produces the best possible results!
Scrum Cheet Sheet
This is a great reference sheet to have on hand when thinking about Scrum or studying for the Certified Scrum Master Exam. It summarizes the Scrum Roles, Scrum Artifacts, Scrum Meetings and more. Pin it up on your wall or carry it around with you to help yourself remember the key techniques of a scrum project.
- Scrum Estimation Techniques
- Scrum Tools
- Scrum FAQ's
- Scrum Process
- Glossary of Terms
The Scrum Alliance has defined five certifications, as indicated in the chart.
The primary value of a certification is always in the opportunities it opens up for the holder.
- Companies increasingly seek Project Managers with CSM certifications, to organize and facilitate their Scrum development teams.
- Product Managers who have CSPO certifications are more attractive to companies that develop with Scrum, than those who don't.
- The CSP provides a strong statement to potential employers that the holder has deep practical experience with Scrum (as a ScrumMaster or Product Owner), and corresponding value.
- The CSC and CST certifications are useful for firms and consultants who provide Scrum coaching and teaching services, as they confirm that the holder has strong experience in these areas. (A CST is also required for anyone who will teach a CSM or CSPO course.)
All Scrum certifications are offered by the Scrum Alliance. For information on how to apply for certifications, consult the Scrum Alliance certification page.
The CSM certification is the starting point for people who wish to fill the ScrumMaster role, either as their primary goal, or as a step towards other certifications. A CSM indicates that the holder has attended a CSM class, and passed the CSM exam.
After sucessfully completing ScrumMaster course, the student receives an email from the Scrum Alliance. The message contains information about membership, and how to create an online profile and take the CSM exam.
The CSM exam consists of 60 multiple-choice questions, to be answered within 60 minutes. The exam focuses on the following information (taught in the class):
- Scrum Basics - The principles of Scrum, Scrum framework, and artifacts and roles
- Meetings - Sprint Review, Sprint Planning Meeting, Daily Scrum, and Sprint Retrospective
- Roles - Scrum Team, Product Owner, ScrumMaster roles and responsibilities
- Artifacts - Product Backlog, Sprint Backlog, and Burndown charts, and how they are used
The cost of the exam is included in the cost of the ScrumMaster course. There is no exam charge for the first and subsequent attempts to pass the exam.
The CSM exam is currently under design, and the ScrumAlliance is collecting information about responses to the exam questions. Until the exam is finalized, everyone who takes it automatically receives a passing grade.
The CSPO certification is the starting point for people who wish to fill the Product Owner role, either as their primary goal, or as a step towards other certifications.
The CSP certification is the next step for ScrumMasters and Product Owners. A CSP indicates that the holder has successfully served in one of these roles for at least one year. The CSP candidate must submit an application containing a detailed description what he has done in his role.
The CSP may be obtained immediately after the CSM or CSPO, if the applicant has been actively practicing his Scrum role for the required duration.
The CSC certification indicates that the holder has acted as a Scrum coach, meaning coached Teams through their adoption and mastery of Scrum, for at least 1500 hours in the past 5 years. It is intended for those who focus on coaching.
The CST certification is required for anyone who wants to teach CSM or CSPO classes. Applicants must have a CSP for at least a year before applying, along with either a CSM or CSPO.
Enterprise Agile Assessments
Contact Us today to speak with a Scrum Coach about what kind of Agile training you and your company need. Find out more about our enterprise Agile implementations today!
According to a Standish Group Survey, approximately half of all software projects fail.
According to IDC research and a study done by QSMA Associates indicates:
Companies are embracing the transition to Agile in an effort to ship more frequently, have more predictability, establish consistent quality while delivering end-user satisfaction. These key benefits of Scrum enable you to be successful.
Agile Video Tutorials
Wideband Delphi | Planning Poker | Rapid Estimation Techniques
In these series of videos, Dr. Kevin Thompson will teach you how to provide good estimates for your projects quickly, using some best practices in expert estimation. These techniques are used widely in the software industry, especially for Agile projects, but they are useful for any kind of project in any industry.
Since the problem of uncertainty is critical for any estimation process, we examine how uncertainty limits our ability to make accurate estimates. We see that uncertainty is related to scope and understand how uncertainties accumulate over time. With this information, we understand better why our techniques for estimation have been designed as they are. See a full list of courses on Agile Development and Agile Methodologies.
Please follow the links bellow to watch the following series.
Agile | Waterfall & Uncertainty in Project Management
In these series of videos, Dr. Kevin Thompson compares and contrasts Agile projects with Waterfall projects and shows the affects of each when facing uncertainty. Kevin conducts a methodology experiment and shows why Agile projects succeed when others fail.
How Uncertainty Works
All estimates are subject to uncertainty, and project schedules are no exception. A schedule consists of a set of tasks, which are executed at times dictated by dependencies and resources. The simplest schedule, consists of a set of tasks that are executed one after the other.
The schedule for a project contains uncertainty because the estimated effort or duration of each task has some uncertainty associated with it. We would really like to know exactly how long a task will take. If we can’t know that, we would at least like to know how much uncertainty is associated with the task. Unfortunately, we will never know the first, and usually will never know the second, either. (The exception to the latter rule is for tasks that are repeated, identically, enough times for us to collect meaningful statistics about them.) Read the entire article.
Please follow the links bellow to watch the remaining series
Other Frequently Viewed Articles
Agile Software Development with Scrum FAQ: Learn about Agile Software Development, Scrum, Stories, Roles and More...
Agile, Waterfall and Uncertainty in Project Management: Agile Development vs. Waterfall
Introduction to Scrum: Benefits and Practices to Agile Software Development with Scrum.
Scrum as Project Management: Comparing and Contrasting Agile Development Scrum from Traditional Project Management Methodologies.
Agile Development & Scrum Meets the PMP: Agile Development and How it Compares and Contrasts to the PMI's Methodology.
Daily Scrums in a Distributed World: Formal Collaboration to Reduce Overhead.
Integration of Waterfall and Agile Development: Tips for integrating Waterfall and Agile Development Methodologies.