Mix and match methods for software development
Agile is currently the most popular software development methodology in the Java community (at least according to TheServerside.com Readership Survey 2011). A full 52% of respondents are currently using Agile and another 20% see a shift to this development style in their future. The value of this approach is being proven over and over with most users reporting some or all of the following benefits from implementing Agile processes:
Lower costs, shorter delivery cycles, and faster release times
Greater flexibility in dealing with changes in requirements throughout the project
Improved team dynamics with less managerial oversight needed
Better stakeholder communication
Meet the many faces of Agile
When you break things down into further sub-categories, 46% of survey respondents adhere to the widely publicized “Scrum” technique while others swear by less well-known branches of the Agile development tree. Many of these are actually used in hybridized form since there’s plenty of freedom to mix and match based on the needs of a specific organization, team, or project. Here’s a look at some of these methodologies including the percent of companies that use them (the total will be more than 100% because many firms use more than one method).
Ad Hoc development (13%)
Perhaps a better name for this style would be “seat of your pants” development. An ad hoc approach relies on a subset of staff members who happen to have the skills and talents required to successfully complete a project.
Benefits: Highly flexible and cost effective. Can delivery surprisingly successful results in the face of almost complete chaos where no solid processes for development have been established.
Drawbacks: Lose one team member and the whole thing can fall apart. Highly unpredictable and not scalable to larger projects.
Applications: Good for small, one-time software projects that need to be done right now. Should be used only as a stop gap measure while a more stable, standardized project management process is established.
Test Driven Development (30%)
TDD is actually a very popular methodology. It involves using testing to continually drive the next step in the agile development process. Each short development cycle involves the creation of automated unit tests that can be implemented over and over to ensure that the software continues to perform properly as it evolves.
Benefits: QA and documentation are built into the development process. The concept is simple to understand and implement: Test until failure, make changes until the unit passes, remove redundancies in the code, repeat.
Drawbacks: Could be bad for morale over the long term since it focuses on forcing failure and fixing what’s wrong. May lose focus on the big picture unless the end purpose of the code is kept in mind.
Applications: Appropriate when you need software that’s loosely coupled and easy to maintain. Good for speedy development with fewer bugs. Works best for team members who have a perfectionist or “fixit” attitude and like dealing with details.
XP: Extreme Programming (19%)
This style of programming is “extreme” in the sense that it involves a very tightly knit team that releases “ready to use” products in a very short time span – often with just a couple of weeks between versions. The team includes a “customer” who plays the role of an actual client or end user. This individual sits in on the development process throughout the project to define the goals of the software. He or she also personally tests every new release to ensure it passes in a “real world” environment. Coders work in pairs and all team members use a standardized approach to coding.
Benefits: High level of customer satisfaction since the end user is fully immersed in the development process. Team can make decisions easily since everyone is on the same page. Products can be implemented in early versions that work well and simply get better over time.
Drawbacks: Costs may be unpredictable and difficult to control since results are all that matters. Very intense working environment that takes some getting used to for many programmers.
Applications: Best for smaller projects that are not too complex and when the software can be designed on the fly. Ideal for situations where the customer wants to be deeply involved.
RUP Rational Unified Process (19%)
This is actually a product and a set of tools as much as it is a process. This development framework is an IBM invention that aids developers in creating software quickly and efficiently. The process has four phases: inception, elaboration, construction, and transition with many iterations to achieve the final outcome. It actually incorporates both Agile and Waterfall concepts.
Benefits: The framework offers more than just a methodology. It provides tools, examples, automation, and suggestions programmers can use in developing the actual software. The product/process is fully customizable to suit the needs of the organization and the business purpose of the software being developed.
Drawbacks: Process must be customized to meet the specific business and development objectives of every new project. Probably not worth it for small projects. Involves more documentation than a typical Agile project.
Applications: A preferred tool for development in situations where stakeholders are not fully comfortable with less structured techniques like Scrum. Offers a high level of risk management and uses lots of advanced planning. Works best when the software requirements are well understood at the outset.