Agile Development Running head: Agile Development- a Positive Development in Software Quality AGILE DEVELOPMENT - A POSITIVE DEVELOPMENT IN SOFTWARE QUALITY Ed Wisniowski University of St. Francis 1 Agile Development Abstract: Software development has a low success rate of 28% as of 2004. Something needs to be done to improve the success of software projects. The advent of Agile software development methodology appears to be latest attempt to try and improve this process. In this paper, Ed Wisniowski compares more traditional software development methodologies with Agile. He also outlines the challenges to Agile in the workplace and the benefits of adopting it. 2 Agile Development 3 Agile Development- a Positive Development in Software Quality Computer software runs in every major business. With the advent of e-commerce, companies are rushing headlong into custom software development to tie their websites into their customer relationship management software and Enterprise Resource Planning software. This technology is making businesses faster, smarter and more responsive. With all this emphasis on using technology to solve complex business problems to make the business run faster and smarter we should be able to develop software systems successfully. The dirty secret of the internet age is that software design and development is the least efficient type of construction with a rate of failure which would be unacceptable in any other industry. According to Frank Hayes from Computer world, larger projects and increasing scope creep on projects are causing projects to fail at a rate of 18% while challenged projects which are over budget, late, or lacking desired features is a whopping 51%. This means that counting the margin for error only 28% of software projects succeed. (Hayes, 2004). These numbers are confirmed by the Standish Group Survey which said that project completion between 1994 and 2004 ranges between 16% and 34%. (Hibbs, Jewett, Sullivan, 2009). Delivery rates like this would be unacceptable in other industries and it costs businesses billions of dollars. No other activity has this level of failure in business. According to the Standish Group if current trends continue software projects will reach a success rate of 50% sometime after 2020. (Hibbs, Jewett, Sullivan, 2009). Confronted with this challenge of getting software projects done, on time and on budget technology leaders have turned to project management techniques to try and get software projects moving in a forward direction. Unfortunately, this has lead to more problems as project management techniques have clashed with organizational cultures. Also, the use of the Software Agile Development 4 Development Life Cycle or waterfall technique of managing projects have been seen as inflexible and unable to deal with the rapidly changing demands of business. (Braun, 2005). Something needs to be done if business leaders are to develop more confidence in technology. One of the growing trends in the software development industry is called Agile development and it is becoming more popular. In this paper, I will attempt to explain Agile software development and compare it to the previous project methodologies Software Development Life Cycle and Ad-Hoc programming. Additionally, I will then illustrate how the use of Agile has improved quality and increased rate of return for businesses which use this technique. Building a bridge Many people liken building software to a construction project. Kevin Matheny a Senior E-Business Architect at Best Buy says that this is a wrong assumption. According to Matheny, each day he takes the Wakota Bridge in South St. Paul Minnesota to work. It has been under repair since 2002 and has a projected finish date of 2010. In the six years since the start of the project, the river has not gotten wider, the structural strength of concrete has not changed and the force of gravity has not increased. (Matheny, 2008). Since 2002, YouTube, Facebook and MySpace did not exist and only 12% of American households had a broadband connection. According to Matheny, “The internet we have now is not the one we has six years ago. It is not even the one we had a year ago.” This means that software projects and web projects, in particular, need to be quick and relevant or they are doomed to failure. (Matheny, 2008). So if the conditions consistently change and there is need for rapid design, deployment, and development of software products how do technology professionals build a bridge between Agile Development 5 the expectations of business leaders and the realities of a project. This is where project methodologies come into play. By developing a system of design and development, it is possible to manage change and keep projects from getting out of hand. The two primary techniques for doing this were called the Ad-Hoc development and the Software Development Life Cycle or waterfall technique. The Ad-hoc approach to software development is grounded in common sense. A developer, usually working by themselves, directly interacts with the end user community and then writes software based on the demands of those users. If the software requires a new feature or has a bug then quick work is done to patch the software. . This approach is fine for small and simple software projects with few interdependencies with other projects but can quickly lead to problems. (Braun, 2009). Ad-Hoc development projects have a high failure rate. Since the developer answers to numerous people, there is a lack of sponsorship for the project. Schedules and costs are unpredictable as requirements change and the project drifts on the whims of the users. Finally, Ad-Hoc projects have a high potential for “surprise factors” where upon implementation risks overlooked during the development cycle come out and threaten to scuttle the project. (Braun, 2009). The Ad-Hoc approach with all of its risks often creates projects which “…end up being suboptimal, expensive or even impossible to maintain at an organizational level.” (Braun, 2009). This means a software developer often creates tools which are deeply disappointing to the user community. This has led to the development of the Software Development Life Cycle or SDLC approach to projects. This more formalized approach attempts to avoid the problems of Ad-Hoc Agile Development 6 development by creating more structure to the process. In many respects SDLC, looks like traditional project management and it has six steps. The first step is called ideation where someone requests a feature for software; in this example, the ability to calculate sales tax on an order. A user or sponsor suggests the feature to a developer or project manager and it moves on to the next step. (Braun, 2009). From here the developer and project manager do a feasibility study to see if there is enough time and budget to add the feature to the software. If the project does not make economic sense then it is halted. Otherwise, it moves to the next step known a definition where the developers attempt to “…define the intent of the project by eliciting, understanding, and documenting what the particular capability is intended to accomplish in the form of high-level and detailed requirements.” (Braun, 2009). The definition phase can best be described as a huge game of 20 questions attempting to try and narrow down exactly what the user community wants. For instance, is their one sales tax ideation feasibility requirements design The Software Development Life Cycle or the Waterfall method of project management. deployment maintenance Agile Development 7 rate or do the rates differ by state or county? Additionally, is sales tax applied before or after discounts? These questions need to be answered before a single line of code is written. Once the definition phase or requirements gathering phase is complete then the developers enter the design phase where they actually start writing code to make the feature a reality. As the design phase ends the project enters the deployment phase where the software is tested and released to the public. If the software is acceptable it enters what is called a maintenance phase where bugs are corrected when discovered. (Braun, 2009). The Software Development Life Cycle methodology or waterfall technique of project management has one major drawback and that is lessons learned during the progression of the project don’t substantially revise the direction of the project. Countless project managers have followed the directions of the project plan and delivered what the customer asked for only to have the customer become disappointed when the final product is revealed. Additionally, market conditions may have changed since requirements gathering and the final product does not address these changes. (Braun, 2009). Agile Fills the Gap With the problems inherent with Ad-Hoc development and SDLC project approaches something had to change or the failure rate of projects would increase. A group of software project managers and developers got together at the Snowbird Ski Lodge in Utah between February 11th and February 13th 2001 to discuss what could be done to improve software projects. They combined numerous experimental project management methods such as: Pragmatic programming, SCRUM, and Extreme Programming into a synthesis which became known as Agile Project management. (Highsmith, 2001). Agile Development 8 This new approach even has a manifesto which outlines the major tenants of Agile Project management. These tenants are as follows: “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.” (Highsmith, 2001) This seems rather touchy-feely and free form but it quickly evolved into a process which has better been able to meet the demands of software consumers. Instead of projects having a beginning, middle and end; a project is an ongoing living piece of code which changes over time through a series of iterations. (Hibbs, Jewett, Sullivan, 2009). For instance, if we were going Idea to use an Agile approach to add sales tax feature to an online shopping cart we would skip the feasibility and Debrief Develop This is an example of how a developer does an agile sprint. requirements gathering portion of the project and start building the sales tax feature based on the information we have. Once we have done the Deploy Document development we document what we Test have done for future reference. We then test the code to make sure it is Agile Development 9 free from bugs. This is what Shingo Shigeo would call Poka-yoke or mistake proofing. We would then deploy the code to a test or production environment and finally we would debrief with the users to find out what changes or improvements need to be done. Once debriefing is complete, we start all over again at the idea phase and go through the cycle again. This circular process is called a “sprint” and the each sprint will yield a new iteration of software. If there is a change to the requirements they can be folded into the next iteration. According to Dave West from Forrester Research, “Aglie is perfect when you’re not sure what you’re getting into, if you run into a big roadblock you’re only derailed on average a week’s worth of work.” (West, 2009). The sprint process does not exist in a vacuum. When setting up an Agile process the IT team must work intimately with the user community. What they do is create what is known as a prioritized feature list or a scrum backlog of all features they want in their software. These features are clumped together into Iterations. Then developers begin a sprint to incorporate these features into a software product. During the sprint the developers have a stand up meeting or Scrum to review what they have done over the last 24 hours, what they are planning to do and Agile Development 10 what risks may get in the way of their completing their tasks. Finally, software is delivered to the user in a rapid fashion. (Hibbs, Jewett, Sullivan, 2009). This Agile process may look like chaos but there is a method to the madness. Requirements are not gathered up front, they become a just in time process and when requirements change, corrections can easily be folded into the next iteration. The Information technology professional is always building the software that the user is requesting. In addition, planning is reduced according to demands of the project. Now long requirements and feasibility phases fall away as the IT team builds software which meets the needs of the consumer. (West, 2009). Agile Challenges and Results Approximately one third of all companies use Agile methodologies to build software. In addition, companies who use Agile report they build software faster and at a higher quality level. (West, 2009). IBM has used Agile with project teams as large as 500 to 600 developers. It was also the software methodology used for the creation of Lotus Sametime 7.5 Suite which consisted of a team of 200 developers. (Ambler, 2008). There are challenges to implementing an Agile project management approach in a company. Many of these challenges are cultural and organizational. Hierarchical organizations struggle with agile development’s quick iterative review cycles and decision making. (West, 2009). It also requires a shift from command-and-control management styles to leadership-andcollaboration styles. This means there needs to be the correct blend of autonomy and cooperation between the development team and the user community. (Nerur, Mahapatra, Mangalaraj, 2005). Agile Development 11 Employees need to build trust with one another, and this could take an enormous amount of time and energy. Also organizations have pursued the goal of creating optimized and repeatable processes, this desire for stability represents a hurdle to adopting agile development because Agile tends to thrive in environments of uncertainly and high variability. (Nerur, Mahapatra, Mangalaraj, 2005). Finally, Agile will not work unless you have the correct people on your technology team to make it a reality. This means that it is hard to find staff. According to research, there is little evidence to suggest that agile principles will work in the absence of competent and aboveaverage people. Not only must your development team be above average developers they must be able to work well with others. What this can do in an organization is make it difficult to fill job openings and create feeling of elitism among the technology staff which could interfere with teamwork. (Nerur, Mahapatra, Mangalaraj, 2005). Fortunately, companies which try to implement lean processes and reduce waste are the ones most receptive to Agile project methodologies. As companies strive to be more efficient they are turning to Agile with greater frequency. (West, 2009). If the challenges to adopting an Agile approach are addressed there are numerous benefits for the firm. According to Scott Ambler, Agile teams are producing greater quality software, are more productive, enjoy greater stakeholder satisfaction and are doing it at lower cost that AdHoc or SDLC teams. Furthermore, iterations of one to four weeks from Agile deliver more satisfaction to stakeholders than SDLC approaches which may take longer. (Ambler, 2008). It also appears that adopting Agile methods is a very low risk activity which can be applied to small projects and then integrated with the other projects at the firm. The most telling statistics are the project success rates for projects which use the Agile method. According to Agile Development 12 Ambler, surveys show that software projects have a success rate of 83% for collocated development teams. Non-collocated teams experience a success rate of 72% and distributed teams such as those that involve off shore developers experience a 60% success rate. (Ambler, 2008). This is a significant improvement over the success rate of 28% discussed by Frank Hayes in Computer World (Hayes, 2004). Looking at this evidence, the benefits of moving to Agile development methodology outweigh the challenges. Agile also seems to have a natural partner with lean manufacturing and business practices. (West, 2009). In conclusion, if software development is to have the same success as other portions of the business then as business leaders we need to abandon other approaches which are not working. It appears that Ad-Hoc development and SDLC are not working as they should and this means we will have to change direction. Agile, though new, appears to be filling a need which makes software development faster, better quality, and more adaptive. This makes Agile more than a technology fad but a real solution to a growing business problem. Agile Development 13 REFERENCES Aken, A. (2008, September). CHUNK: An Agile Approach to the Software Development Life Cycle. Journal of Internet Commerce, 7(3), 313-338. Retrieved July 13, 2009, doi:10.1080/15332860802250385 Ambler, Scott W. (2008, July). Agile and Large Teams. Dr. Dobb's Journal, 33(7), 60-62. Retrieved July 13, 2009, from Sciences Module. (Document ID: 1499634871). Ambler, Scott W. (2008, June). Has Agile Peaked? Dr. Dobb's Journal, 33(6), 52-54. Retrieved July 13, 2009, from Sciences Module. (Document ID: 1503449301). Ambler, Scott W. (2007, October). The Discipline of Agile. Dr. Dobb's Journal, 32(10), 60-62. Retrieved July 13, 2009, from Sciences Module. (Document ID: 1337627691). Ambler, Scott W. (2006, October). Imperfectly Agile: You Too Can Be Agile! Dr. Dobb's Journal, 31(10), 82-84. Retrieved July 13, 2009, from Sciences Module. (Document ID: 1137729931). Braun, Ellen. Lean/Agile Methods for Web Site Development Online; Sep/Oct2005, Vol. 29 Issue 5, p58-60, 3p. Retrieved July 13, 2009 from http://search.ebscohost.com/login.aspx?direct=true&db=aph&AN=17980378&site=ehost -live Hayes, F. (2004, November 8). Chaos Is Back. Computerworld, 38(45), 70-70. Retrieved August 2, 2009, from Business Source Elite database. Hibbs, Curt; Jewett, Steve; Sullivan, Mike (2009) The Art of Lean Software Development. Sebastopol, CA. O’Reilly Media. Highsmith, J. (2001). The Agile Manifesto. Retrieved August 9, 2009 from http://agilemanifesto.org/ Jørgensen, M., & Moløkken-Østvold, K. (2006, April). How large are software cost overruns? A review of the 1994 CHAOS report. Information & Software Technology, 48(4), 297-301. Retrieved August 2, 2009, doi:10.1016/j.infsof.2005.07.002 Levent Gurses. (2006, December). 10 Mistakes in Transitioning to Agile: Slow down the transition in order to go fast. Dr. Dobb's Journal, 31(12), 40,42-43. Retrieved July 13, 2009, from Sciences Module. (Document ID: 1165894961). Agile Development 14 Matheny, K. (2008, December 29). Agile Software Development: Bridges to the Future. Business Week Online, Retrieved July 13, 2009, from Academic Search Premier database. Mearian, L. (2004, May 31). KILLING Time ON IT PROJECTS. Computerworld, 38(22), 3636. Retrieved July 13, 2009, from Academic Search Premier database. Nerur, S; Mahapatra, RK; Mangalaraj, G. (May 2005) Challenges of Migrating to Agile Methodologies. Communications of the ACM May 2005/ Vol. 48, No 5, 73-78. Retrieved July 13, 2009 from University of St. Francis Database. Shigeo Shingo (1988). Non-Stock Production: The Shingo System for Continuous Improvement. Cambridge, MA. Productivity Press. West, D. (2009, April). Agile Processes Go Lean. InformationWeek. (1228), 32,34,38-40. Retrieved July 13, 2009, from Sciences Module. (Document ID: 1700361451).