My First Post - Agile software development

What is agile? Agile is one of the big buzzwords of the IT development industry. But exactly what is agile software development?
Agile software development is a group of software development methodologies 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.
The use of the word agile in this context derives from the agile manifesto. A small group of people got together in 2001 to discuss their feelings that the traditional approach to managing software development projects was failing far too often, and there had to be a better way. They came up with the agile manifesto, which describes 4 important values that are as relevant today as they were then. It says, we 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.
Ever since then, the use of methods that support these values has become increasingly popular.
From my learn in AGILE DEVELOPMENT, I have written about 9 key principles of agile. And the things that I think make agile fundamentally different to a more traditional waterfall approach to software development. They are: 
1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
7. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
8. Continuous attention to technical excellence and good design enhances agility.
9. Simplicity--the art of maximizing the amount of work not done--is essential.

There are various methodologies that are collectively known as agile. The most popular ones are:
DSDM is probably the original agile development method. DSDM was around before the term ‘agile’ was even invented.
XP (Extreme Programming) is a more radical agile methodology, focusing more on the software engineering process and addressing the analysis, development and test phases with novel approaches that make a substantial difference to the quality of the end product.
Scrum is also an agile development method, which concentrates particularly on how to manage tasks within a team-based development environment.
The Agile methodology which I used in my software development carrier is Scrum
A typical scrum team has between five and nine people, but Scrum projects can easily scale into the hundreds. Scrum can easily be used by one-person teams and often is. The team does not include any of the traditional software engineering roles such as programmer, designer, tester, or architect. Everyone on the project works together to complete the set of work they have collectively committed to complete within a sprint. Scrum teams develop a deep form of camaraderie and a feeling that “we’re all in this together.
The product owner is the project’s key stakeholder and represents users, customers and others in the process. The product owner is often someone from product management or marketing, a key stakeholder or a key user.
The Scrum Master is responsible for making sure the team is as productive as possible. The Scrum Master does this by helping the team use the Scrum process, by removing impediments to progress, by protecting the team from outside, and so on.
The product backlog is a prioritized features list containing every desired feature or change to the product.
At the start of each sprint, a sprint planning meeting is held during which the product owner presents the top items on the product backlog to the team, and the Scrum team selects the work they can complete during the coming sprint. That work is then moved from the product backlog to a sprint backlog, which is the list of tasks needed to complete the product backlog items the team has committed to complete in the sprint. Each day during the sprint, a brief meeting called the daily scrum is conducted. This meeting helps set the context for each day’s work and helps the team stay on track. All team members are required to attend the daily scrum.
At the end of each sprint, the team demonstrates the completed functionality at a sprint review meeting, during which, the team shows what they accomplished during the sprint. Typically, this takes the form of a demonstration of the new features, but in an informal way; for example, PowerPoint slides are not allowed. The meeting must not become a task in itself nor a distraction from the process.
Also at the end of each sprint, the team conducts a sprint retrospective, which is a meeting during which the team (including its Scrum Master and product owner) reflect on how well Scrum is working for them and what changes they may wish to make for it to work even better.
Note: To clarify: The product backlog is a list of desired features for the product. The sprint backlog is a list of tasks to be completed in a sprint.

A Visual Introduction to Scrum


This graphic is an introduction to the essential elements of using Scrum for agile software development. On the left, we see the product backlog, which has been prioritized by the product owner and contains everything desired in the product that’s known at the time.
At the start of each sprint, the team selects some amount of work from the product backlog and commits to completing that work during the sprint. Part of figuring out how much they can commit to is creating the sprint backlog, which is the list of tasks (and an estimate of how long each will take) needed to deliver the selected set of product backlog items to be completed in the sprint.
At the end of each sprint, the team produces a potentially shippable product increment — i.e. working, high-quality software. Each day during the sprint, team members meet to discuss their progress and any impediments to completing the work for that sprint. This is known as the daily scrum, and is shown as the smaller green circle above.
Agile development can be a very exciting and invigorating approach. Agile can be a lot more enjoyable than the waterfall approach, which requires lots more documentation and is less flexible by its nature. And when people enjoy their work, it’s amazing what they can achieve!

Comments

Popular Posts