Software development processes have evolved significantly in recent years, shifting from traditional software development lifecycles (SDLCS) to more flexible or “Agile” development approaches. Although many new development models exist, the iterative and incremental development techniques all of these models introduce focus on a shift away from the “Waterfall” methodology, which dominated the industry for years. Agile software development methodologies are based on an iterative and incremental development approach, where requirements and technical solutions evolve through extensive collaboration between business owners and cross-functional teams. So, regardless of the Agile process model name (i.e. Agile Unified Process, Spiral process, Rational Unified Process, Rapid Application Development, Cleanroom development and Scrum), the fundamental tenant of each is iterative and incremental development.
Although waterfall methodologies have received a lot of criticism, there are some instances where it may be an effective development approach. These instances may include development within stable environments, including maintenance releases or existing products or porting an existing product to a new platform. However, absent these factors, an iterative development approach will more likely provide the flexibility and communication needed to enhance project success.
Current best practices in software development management stem from three key drivers. First, development processes are driven by short-term milestones. By focusing on short-term (usually about a month) goals, a laser focus on requirements and an improved alignment of business and technology can be obtained. Second, development processes provide teams some flexibility in approach. Although, the development process is well-defined, flexibility within the development teams to solve problems and create solutions is provided, allowing for creative and innovative solutions. And third, communication and learning within the development process are being used as a catalyst to spawn change and institute new work practices throughout the organization. As the development team(s) work with business owners to create solutions, the communication and learning between business owners and with technology professionals lead to innovative improvements that are being shared across organizations.
Professional organizations for standards and frameworks like CMMI, PMBOK, Lean Six Sigma and ISO have introduced additional models and techniques that can be leveraged to improve agile development cycles. PMBOK, for example, has become the industry standard for defining management practices and processes. As a starting point for building a development team, trained and experienced project managers are a necessity with PMI certification validating an understanding of the industry best practices for project management.
The Capability Maturity Model Integration (CMMI) for Development is an integration of best practices that provides a single framework to assess development and maintenance processes and improve performance. CMMI certification has also become a standard for software development. Although many development teams/shops strive to obtain a CMMI certification, many of the tools can be used without going through the extensive certification process.
Lean Development has evolved from Six Sigma techniques, which focus on the improvement of process by eliminating waste. Within the context of software development, these process wastes are defined as: 1.) unnecessary coding and functionality development, 2.) delays in the development cycle, 3.) unclear requirements, 4.) bureaucracy and 5.) slow communication. By recognizing these “waste” areas and eliminating or improving them, performance dramatically improves, adding value to your solutions and the business operations. Incorporating lean principles and conducting a value assessment to remove non-value added steps and processes, helps keep the development cycle lean and high performing.
So Lean Six Sigma techniques are well aligned with recent trends is software development. Lean Six Sigma provides a new way at looking at your development processes, with a strong focus on how to improve the process, which by default leads to faster, better and often cheaper solutions.