“No matter how good the team or how efficient the methodology, if we’re not solving the right problem, the project fails.” – Woody Williams
This brief article outlines four popular software development methodologies including different approaches and some common themes. Each methodology has its own pros and cons and having some background on this subject will help you determine best path forward.
Waterfall. This methodology works best when you follow fairly sequential path from project initiation through deployment. Waterfall requires scope and requirements definition at the beginning of the project and design, development, testing and deployment follows. It requires comprehensive change management effort especially if scope/requirements change during later stages. This is a conventional methodology mostly used in large-scale enterprise projects. While it offers predictable project delivery it lacks speed and agility required to execute fast-paced product development.
Unified Processes (UP). UP phases include Inception (scope definition), Elaboration (architecture and risk identification/mitigation), Construction (basic function/features are available and product may require fine tuning) and Transition (product ready for end users). UP uses structured and rigorous documentation process including use cases and user scenario to define requirements. During design and architecture stages, UP uses component-based architecture, similar to object oriented programming, and UML (Unified Modeling Language) to document architecture and design. Many of the large enterprises use UP to streamline their project delivery capabilities.
Agile/Scrum. As name suggests, this methodology is ideal for fast-paced product development. It is highly adaptable, flexible and capable of delivering product even if product requirements continue to evolve. This methodology relies on regular team communication (often daily standup meeting) and quicker issue identification and resolution. Team continuously selects subset of requirements and delivers those within defined timeframe (aka Sprint).
Scrum is one of the Agile methodologies. Basic building blocks of Scrum includes team collaboration, functional product and process flexibility to cater to ever changing business needs. Typical Scrum roles are Product Owner, Scrum Master and Team Members. Product Owner creates vision and define/prioritize requirements. Scrum Master facilitates Sprint and ensures effective issue resolutions to meet Sprint goals. Team members have flexibility to choose their own ways to complete the tasks as long as their delivery support Sprint goals/objectives.
Extreme Programming (XP). XP relies on incremental planning, design refinement / product performance improvement, rapid development cycles, ongoing communication and immediate end user/customer feedback. All of these stages rely of team members’ commonsense (oftentimes extreme commonsense and hence methodology is called Extreme!). XP teams are generally self-managed with reduced emphasis on management and governance during product development lifecycle. Some other interesting aspects of XP includes ‘Team programming’ (one computer and two programmers), ‘Team ownership of product source code’ (anyone can change part of the code if necessary) and ‘Ongoing integration’ (code integration with rest of the system as soon as new code is ready and tested). You can leverage XP if you are in-charge of innovative product development.
Hope this article helps you put your priorities in order.
1) Attempt to solve a ‘right problem’.
2) Define customer requirements, engage stakeholder(s) and deliver value to the customer.
3) Debate about and choose correct methodology to maximize your project success!