Agile Development: Demystified



Similar documents
Creating a High Maturity Agile Implementation

Waterfall to Agile. DFI Case Study By Nick Van, PMP

Nova Software Quality Assurance Process

Agile Software Development

Who Doesn t Want to be Agile? By: Steve Dine President, Datasource Consulting, LLC 7/10/2008

Agile Scrum Workshop

Issues in Internet Design and Development

AGILE METHODOLOGY IN SOFTWARE DEVELOPMENT

Governments information technology

Topics covered. Agile methods Plan-driven and agile development Extreme programming Agile project management Scaling agile methods

AGILE - QUICK GUIDE AGILE - PRIMER

Building HR Capabilities. Through the Employee Survey Process

Agile Methodologies and Its Processes

The Basics of Scrum An introduction to the framework

1. Sprint Planning. Agile Ceremonies Demystified. A four part series written by Angela Boardman, CSM, CSP ATG (4284)

When User Experience Met Agile: A Case Study

Measuring ROI of Agile Transformation

Agile Notetaker & Scrum Reference. Designed by Axosoft, the creators of OnTime the #1 selling scrum software.

A MODEL FOR RISK MANAGEMENT IN AGILE SOFTWARE DEVELOPMENT

Transitioning from Waterfall to Agile Course AG01; 3 Days, Instructor-led

LEAN AGILE POCKET GUIDE

TSG Quick Reference Guide to Agile Development & Testing Enabling Successful Business Outcomes

Moderator: Albert Jeffrey Moore, ASA, MAAA. Presenters: Albert Jeffrey Moore, ASA, MAAA Kelly J. Rabin, FSA, MAAA Steven L. Stockman, ASA, MAAA

Is PRINCE 2 Still Valuable in an Agile Environment?

Agile Project Management By Mark C. Layton

A Viable Systems Engineering Approach. Presented by: Dick Carlson

Transitioning Your Software Process To Agile Jeffery Payne Chief Executive Officer Coveros, Inc.

This handbook is meant to be a quick-starter guide to Agile Project Management. It is meant for the following people:

Lean vs. Agile similarities and differences Created by Stephen Barkar -

An Introduction to Extreme Programming

Agile Beyond The Team 1

InfoAdvisors. Is your Data Modeling Workflow Agile or Fragile?

Applying Lean on Agile Scrum Development Methodology

Agile Software Development. Mohsen Afsharchi

Building Software in an Agile Manner

Agile So)ware Development

Agile Development Overview

Bridging the Gap: Traditional to Agile Project Management. I. S. Parente 1. Susan Parente, PMP, PMI ACP, CISSP, PMI RMP, ITIL, MSEM;

4180: Defined Processes, Evidence, and Rescuing Corporate Knowledge: Achieving Standards Compliance in Agile and Lean Environments

Software Development with Agile Methods

Agile QA Process. Anand Bagmar Version 1.

SOFTWARE LOCALIZATION FOR AGILE, WATERFALL, AND HYBRID DEVELOPMENT

Agile Projects 7. Agile Project Management 21

Agile Processes and Methodologies: A Conceptual Study

Agile Software Development Methodologies and Its Quality Assurance

Agile Project Management

Agile and ITIL And how they integrate. enterprise.bcs.org

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

Successful Strategies for Custom Software Development

THE AGILE WATERFALL MIX DELIVERING SUCCESSFUL PROGRAMS INVOLVING MULTIPLE ORGANIZATIONS

3 Steps to an Effective Retrospective December 2012

SmartBear Software Pragmatic Agile Development (PAD) Conceptual Framework

Sisyphus Would Be Proud

Is Your Organization Agile-Ready?

Getting Started with Agile Project Management Methods for Elearning

Controlling Change on Agile Software Development Projects

Five Core Principles of Successful Business Architecture

RAPID ENGINEERING WITH AGILE RIGHTSHORE DELIVERY (REWARD)

Basic Trends of Modern Software Development

Improving Management Review Meetings Frequently Asked Questions (FAQs)

Aligning Correct and Realistic Performance Testing with the Agile Development Process

BPM: Chess vs. Checkers

Show your value, grow your business:

Agile for Project and Programme Managers

Adopting Agile Project Management - Corporate Culture Must Match (Apr 15)

Agile processes. Extreme Programming, an agile software development process

TESTING TRENDS IN 2016: A SURVEY OF SOFTWARE PROFESSIONALS

Scrum includes a social agreement to be empirical as a Team. What do you think an empirical agreement is?

THE RIGHT WAY TO HIRE SERVICENOW STAFF

Agile and Earned Value. A white paper. October Author Stephen Jones, Sellafield Ltd

The Truths About Change

"Testing in the DevOps World of Continuous Delivery"

Introduction to Agile and Scrum

Agile Based Software Development Model : Benefits & Challenges

10 Reasons Why Project Managers Need Project Portfolio Management (PPM)

Agile extreme Development & Project Management Strategy Mentored/Component-based Workshop Series

The Truth About Agile Software Development with Scrum, The Facts You Should Know

Adopting a Continuous Integration / Continuous Delivery Model to Improve Software Delivery

Practical Agile Requirements Engineering

How to manage agile development? Rose Pruyne Jack Reed

Taking the first step to agile digital services

SCEA 2010 EST06. Estimating Issues Associated with Agile. Bob Hunt. Galorath Incorporated

Agile software development

Strategic HR Partner Assessment (SHRPA) Feedback Results

Lean Software Development and Kanban

SCM & Agile Business Intelligence. Anja Cielen

Application Overhaul. Key Initiative Overview

Agile Software Engineering Practice to Improve Project Success

EXERCISE 1: HR System Implementation

Adopting Agile Testing

Agile project management: A magic bullet?

BI Dashboards the Agile Way

Transcription:

Agile Development: Demystified by Scott Warner Sprint, Agile, Scrum - words we normally associate with sports. Agile Methodology is 1 very much [like ] a sport with a highly-structured, rules-based engagement and a clearly defined definition of victory. Who is this article for? This article is for software development managers, business leaders, IT professionals, and others interested in learning how to leverage the benefits of Agile Software Development whether the full methodology or a subset of the principles is used. What is Agile Development? The Agile Methodology is an approach to software development based on a set of 12 principles according to the Agile Manifesto. The primary goal of Agile is better alignment with customer expectations and faster overall completion. Agile Methodology can be employed with strict adherence to the principles and methods or leveraged in a way that maximizes the benefits and mitigates the risks. A simple way to think about Agile versus traditional sequential development (known as Waterfall ) is that Agile will take the full set of product requirements and choose only the most important features, code and deploy those as a product, get feedback, then continue to choose additional high-value features iteratively until the product is accepted by the customer. Agile vs. Waterfall Agile Methodology Iterative Development 1. Choose Sprint duration; 1-4 weeks usually. 2. Select highest value features that can be done during Sprint (even if coded minimally). 3. Get user feedback with every iteration. 4. Continue iterations with additional features until the Product Owner decides it s ready for market. Integrated Quality Assurance (code testing). Focus on working code as measure of progress. Code and technology is expected to evolve throughout entire project. Waterfall Methodology Linear Development 1. Define complete requirements. 2. Define project as Alpha, Beta, Final release. 3. Assign tasks, track progress against plan. 4. Get user feedback no earlier than Alpha. 5. Project is Released after all requirements coded, tested and documented. QA separated in time typically at end of project. Focus on the project plan as measure of progress. Technology decisions (such as platform, SDKs etc.) are chosen up front and changes are considered problematic. 1 It is left to the reader to decide if Agile is a sport or just similar to one. The author is still thinking about it.

What is the single biggest benefit of Agile Methodology? My opinion is that an agile approach allows a company to see working code much sooner than with linear development. This offers many benefits but the main one is that the translation between specifications and code becomes manifest very quickly and technical challenges are uncovered much earlier. What are the benefits of an Agile approach to software development? Teams can start coding much sooner as all code and technology decisions are impermanent. Technical challenges are discovered earlier in the process. Tight integration between all participants on a regular basis keeps things moving quickly. Accountability and transparency are natural as deliverables are days or weeks instead of months. Code quality is not an independent process left to the tail end of a project. The focus is always on working code as opposed to updates in a project plan. There is no separation between the development team and the business folks. Minimal Viable Product (MVP) is a natural outcome. Significantly less effort is expended on writing elegant code with copious comments as it s understood 2 that the code will likely be refactored or completely re-written later in the project( ). Teams make their own adjustments over time to be more effective. Is Agile the best way to get my project coded? Yes and maybe no. All software development projects will benefit from the adoption of at least some of the principles of Agile. The key is to understand which principles and methods are appropriate for your organization and how much change your development team is willing to adopt. But not all projects will benefit from a full-on Agile methodology because this only works if everyone is committed to it and has the discipline to follow through. What is Scrum? It s the framework for managing an Agile development with cross-functional teams with iterations called Sprints. Scrum defines in detail the structure and activities of a software project including roles, responsibilities, how meetings are conducted, work assigned etc. Do I need to hire a Scrum Master? This depends on how far you want to take your Agile Methodology. If you want to employ a strict adherence to all the principles then you will need someone to manage the process. There are many details of Agile development that need constant attention in order for complete adoption to work. 2 This is a very important issue and one that many software engineers resist. Most developers prefer writing a piece of code just once then move on taking great pains (and time) to write clean & elegantly structured code with lots of comments, however, the only way to end up with the highest quality code in the shortest amount of time is to write minimalist code the first iteration and later as the project matures refactor or better yet re write the code based on the new understanding of the requirements. Often, code modules are eliminated from a project being subsumed into another module or the functionality is deemed unnecessary. Developers fear they will not be given the chance to refactor as demands for new functionality are ever present, an agreement should be made at the outset to incorporate this.

What are some of the pitfalls of Agile Methodology? The most common issue companies face in adopting Agile is overcoming the resistance to change by everyone involved. Agile development does not allow programmers to spend months working on code before showing results. Further, a good measure of a successful Agile process is that change requests are very welcome - but how many coders want to re-write the code they just got working? The simple truth is that only a subset of software engineers can adapt their coding style to a strict Agile approach. Beyond the dev team, everyone else involved must understand, accept, and contribute to the Agile method. For example, product managers must be able to adapt to getting frequent releases and be able to provide valuable feedback quickly. How do we avoid the pitfalls of Agile? The main thing to understand about Agile is that it is a set of principles that can be modified to adapt to the realities of your project. Agile is not an all-or-nothing methodology. In fact, one of the 12 principles is Simplicity. I suggest that this be utilized as the guiding principle in how you adopt Agile itself. Does a Sprint need to be 2 weeks? No. A Sprint, which is a defined period of development effort that produces a result, is generally from one week to one month. A Sprint can be any length of time and each iteration can be it s own duration. The most common duration is 2 weeks because this is plenty of time for programmers to get a set of new features coded and it creates the opportunity to incorporate changes and feedback frequently which is what drives the quality of the final product. 3 What are the 12 principles of Agile Methodology? I have listed these approximately in order of importance. 1. Working software is delivered frequently. This is the most important principle as it drives everything else. Iterative development means that at the end of each Sprint working code is delivered to the customer (internal, external or both) that has, at least partially, been productized - meaning there is enough there to use/test the code. This generally means that UX design, user documentation, QA etc. are all iterated along with the code. As new features are added, the documentation etc. are iterated as well. A Sprint only works if the functionality chosen is able to be coded and all other expectations are clear to all involved. There are many approaches to determining what will be done for each Sprint but this has to include feedback and acceptance from each coder or things will break down quickly. 2. Simplicity maximizing the work not done. The real principle is that everything should have Occam s Razor applied whenever possible. Simplify then simplify again. Coding tasks are broken down into bite size pieces (requiring less than 8 hours of work) in order to be added to the Sprint backlog. However, even before asking a developer to estimate time required for a task, the task definition should be simplified as much as possible and a value score should be assigned to all features. Trust me, complexity can always be added later. 3 Source: http://www.agilemanifesto.org

3. Close cooperation between developers and all other stakeholders. This just sounds like; communication is good, but it s really an acknowledgement that developers and business people will often see things differently and this gap needs to be closed with open communication. 4. Changing requirements are welcome at all times. This is a crucial component of good software development - regardless of methodology. It s a simple truth that software meant to be used by humans must evolve over its entire lifespan. Change is good. Uncontrolled change for the sake of change - not so much. Good software development means there is a process in place to assess and include positive change requests on a regular basis. 5. Customer satisfaction is ensured through early and continuous delivery of valuable software. This principle essentially means to gather feedback and involve users as early as possible. This is not always easy to do and can easily lead a project astray if the right customers are not selected. 6. Continuous attention to technical excellence and great design. This principle can be restated as; Perfection is a process, not a goal. An Agile team will review technology decisions, code architecture, code quality, user experience, customer satisfaction, code security, performance and everything else on a fairly regular basis. 7. Best architectures, requirements, and designs emerge from self organizing teams. This principle is essentially a plea for greater autonomy for the development with regards to all technical details. In other words, trust the team to make the right choices and let s all focus on outcomes. 8. Working software is the principal measure of success. This is self explanatory however it misses the point that working can be very subjective and that real success is always determined by the customer. The real message of this principle is that it s a waste of effort to try to measure a developer s contribution to a project in any other way. 9. Projects are built upon motivated and trusted individuals. With a good software development process this principle becomes manifest as unmotivated individuals are spotted quickly. 10. Face to face conversation is the best form of communication. There certainly is value to having people talk (with offshore teams included via video conference) - but verbal communication has its limits so it s necessary to document the results of discussion in a cohesive manner.

11. Regularly, the team reflects on how to become more effective and adjusts accordingly. This needs to be done separate from other processes - but it also needs to be a part of each team member s daily activity. 12. Sustainable development, able to maintain a constant pace. This is a fairly complex principle to achieve as there is a natural ebb and flow to development. But the principle is sound as a goal of any good process is that it is ongoing and focus does not wane. This is one of the biggest problems with the traditional Project Plan approach to software development and why so many software projects take much longer than expected. Traditional software development does not have a metric of pace which is integral to agile methodology. What is the best way to get my project done fast? Forget software project plans based on asking developers how long each feature will take to code. The error rate of these estimates are generally > 100% - meaning the actual time will be at least double. But the real problem is that typical project plans attempt to corral and distill far too much complexity, make numerous assumptions and ignore many items that no one can anticipate months in advance. Can we adopt a subset of Agile principles and still benefit? Yes. A full-on Agile process may not be the best first step for a team new to it. Simply by iterating development and adopting the principles over time, most teams will benefit from the process with fewer problems. As one of the Agile Principles states, the team should continually review how to be more effective and this should include adopting more of the principles as organizational buy-in allows. Summary Agile addresses most of the issues experienced with traditional Waterfall development. There are a variety of ways for an existing team to adopt Agile principles but all participants need to be fully on board. It s not a good idea to adopt Agile by edict. Managers need to have a thorough understanding of all the changes required to benefit from Agile as it s a truly cooperative process that some will require time to adjust to. My recommendation for all software product teams is to openly discuss the principles of Agile to discover how to benefit from the approach with the least amount of complexity and overhead. ======================== About Covation Technology We are a software development firm with local project managers and offshore (Ukraine) senior software engineers that specialize in building web and mobile platforms and applications very cost effectively. Visit us at http://covationtech.com