Applying Thoughts

"Sometimes I Win, Other times I learn. but I never lose."

August 28, 2013

Agile Development & Methodologies

Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen interactions throughout the development cycle. - wikipedia

Agile development methodology provides opportunities to assess the direction of a project throughout the development life cycle. This is achieved through regular cadences of work, known as sprints or iterations, at the end of which teams must present a potentially shippable product increment. By focusing on the repetition of abbreviated work cycles as well as the functional product they yield, agile methodology is described as “iterative” and “incremental.”

"Waterfall model” implies a sequence of clearly defined steps necessary to complete any project: define, plan, organize, execute and then close. But practically that doesn't work out due to complexity and change of requirements in reallity . So Agile and scrum are born to tackle it by defining more small iterations and along with strong client involvement. The key for success is based upon on user feedback on each iteration 

Advantage over Waterfall model:
In waterfall, development teams only have one chance to get each aspect of a project right. In an agile paradigm, every aspect of development — requirements, design, etc. — is continually revisited throughout the life cycle. When a team stops and re-evaluates the direction of a project every two weeks, there’s always time to steer it in another direction


Agile's ideology is to provide solutions as parts which are in itself complete workflows. So we could actually identify what is to be expected at a very early stage of project development and since Agile Emphasizes on having a client work along with the development team there would actually be very less wastage of development time in-case there is any difference in the requirement and what is developed. Chances of error are less time taken for a particular workflow ultimately depends on the developers as they would have to provide an estimate and it also requires a great deal of team work as in case we have a particular task taken by a member and if not complete then the task could be taken up by another developer who might have completed their pat of work . 


Agile favours more to customer. Customer can make use of incremental changes made to the application. He can able to change priorities as per his needs, since the life cycle is short. He doenst want to wait too long to leverage the benefits of the application as like other methodologies....

Generally the Agile follows SCRUM or iterative models and Scrum basically helps us identify and divide the tasks we have a scrum master ... the discussion can go a long way :) Iterative is more regularly followed.

SCRUM is one of Agile development methodology to do the software development through SPRINTs. 


Scrum is an agile software development model based on multiple small teams working in an intensive and interdependent manner. The term is named for the scrum (or scrummage) formation in rugby, which is used to restart the game after an event that causes play to stop, such as an infringement. 


Of all the agile methodologies, 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 

The Scrum methodology of agile software development marks a dramatic departure from waterfall management. In fact, Scrum and other agile processes were inspired by its shortcomings. The Scrum methodology emphasizes communication and collaboration, functioning software, and the flexibility to adapt to emerging business realities — all attributes that suffer in the rigidly ordered waterfall paradigm.

Scrum is an iterative and incremental agile software development framework for managing software projects and product or application development. Its focus is on "a flexible, holistic product development strategy where a development team works as a unit to reach a common goal" as opposed to a "traditional, sequential approach". Scrum enables the creation of self-organizing teams by encouraging co-location of all team members, and verbal communication between all team members and disciplines in the project.

A key principle of Scrum is its recognition that during a project the customers can change their minds about what they want and need (often called requirements churn), and that unpredicted challenges cannot be easily addressed in a traditional predictive or planned manner. As such, Scrum adopts an empirical approach—accepting that the problem cannot be fully understood or defined, focusing instead on maximizing the team's ability to deliver quickly and respond to emerging requirements.

Like other agile development methodologies, Scrum can be implemented through a wide range of tools. Many companies use universal tools, such as spreadsheets to build and maintain artifacts such as the sprint backlog. There are also open-source and proprietary packages dedicated to management of products under the Scrum process. Other organizations implement Scrum without the use of any tools, and maintain their artifacts in hard-copy forms such as paper, whiteboards, and sticky notes.

Scrum has three fundamental roles: Product Owner, ScrumMaster, and team member. 

The Scrum methodology of agile software development marks a dramatic departure from waterfall management. In fact, Scrum and other agile processes were inspired by its shortcomings. The Scrum methodology emphasizes communication and collaboration, functioning software, and the flexibility to adapt to emerging business realities — all attributes that suffer in the rigidly ordered waterfall paradigm.


SPRINT is nothing but the release cycle with the scope of tasks to be delivered. Sprint duration can be 2 weeks or more than that based on project.

SPRINT Planning - All the requirement details will be tracked as backlog items in SPRINT. In SPRINT planning, Backlog items will be discussed in detail on what needs to be done and the priority of those. Finally the scope for the current sprint will be decided by the team.

Daily SPRINT calls - To track the status of the SPRINT tasks from team and the critical issues/clarifications will be discussed

Burn out chart - To track the actual hours spent by team members for each task. Gives clear view of which task will be delivered on what date

SPRINT Retrospective - Discuss the details of what has been done in Current SPRINT. Discuss the positive points of the current SPRINT and improvement areas needed for next SPRINT.


Taking C2G - day to day sprint as the Example Sheet

Employee (SCRUM) Master
Employee Master is a team facilitator. Ensures teams have what they need to get the job done. Also, sets up meetings and monitors everything. Also, kicks ass when necessary.


Product Backlog
The Product Backlog contains the wish list of all the User Stories that would make the product great. In Scrum, features are known as User Stories and they are written from the perspective of the end-user. The Product Owner, representing the users and customers of the product, decides which User Stories or items make it into the Product Backlog.


(User) Story:
A feature that is added to the backlog is commonly referred to as a story and has a specific suggested
structure. The structure of a story is: "As a I want to so that " This is done so that the development team can identify the user, action and required result in a request and is a simple way of writing requests that anyone can understand. A story is an independent, negotiable, valuable, estimable, small, testable requirement ("INVEST"). Despite being independent, i.e., they have no direct dependencies with other requirements; stories may be clustered into epics when represented on a product roadmap or further down in the backlog.


Sprint
A sprint is the basic unit of development in Scrum. The sprint is a "time boxed" effort; that is, it is restricted to a specific duration. The duration is fixed in advance for each sprint and is normally between one week and one month, although two weeks is typical.

Each sprint is preceded by a planning meeting, where the tasks for the sprint are identified and an estimated commitment for the sprint goal is made, and followed by a review or retrospective meeting, where the progress is reviewed and lessons for the next sprint are identified


Tasks

Added to the story at the beginning of a sprint and broken down into hours. Each task should not exceed 12 hours, but it's common for teams to insist that a task take no more than a day to finish.


Definition of Done (DoD)
The exit-criteria to determine whether a product backlog item is complete. In many cases the DoD requires that all regression tests should be successful.

No comments: