If you gathered a hundred seasoned project managers together, put them in a room and asked them to identify the best possible approach for designing and developing software, you would get a hundred different answers, and many of them would be correct. Knowing the best approach for developing software is half art, half science, and a pinch of good luck. Selecting the approach is also based on the Project Owner(s) experience, project leadership, business requirements, technical resources, budget, time constraints and a host of other variables. That said, let’s look at three popular approaches. They include “Waterfall”, “Prototyping” and “Agile”.
Waterfall application development has been around for decades. Yet, it is still, a viable and popular development model used today. In fact, for some projects, it remains the best choice for development. The concept of waterfall development is straight forward. Analyze the proposed software, then design, scope, code, integrate, test, and deploy in a “waterfall” sequence until complete. Sounds easy, right? Here’s the problem. When a Project Owner is attempting to use the waterfall model for larger projects (requiring a year or more to complete), the project will start lagging as soon as Quality Assurance (QA) testing begins. There’s nothing worse than starting (QA) only to discover that original business requirements were not clearly delineated, were not interpreted properly by the development team or worse, the requirements provided by the stakeholders were just plain wrong. There are ways to mitigate problems from surfacing, but it assumes the original business requirements are correctly defined and will not change, which in our experience is highly unlikely.
The goal of Prototyping application development is to code a working version of a component or feature to prove that a business feature or set of business requirements can be achieved. Prototyping development is usually chosen when [a] a never before coding objective is being attempted or [b] the project owner needs to view and test different elements of the prototype to validate functionality. Prototyping proves the objective, and in most cases, without consideration of the design schema, UX/UI or other variables. Typically, it is after a prototype is validated that additional scoping is performed, often including new UX/UI and design, so the balance of coding and QA testing can be finalized.
Over the past decade, Agile software development methodology has grown significantly in popularity. Agile software development focuses on an iterative approach (two-week sprints) to developing software, versus the traditional waterfall approach. With Agile, small teams work with a Product and Project Owner to identify project objectives using “Epics”, “Stories”, “Stand-ups” and “Tasks”. Scrum teams then collaborate and complete associated programming and QA testing efforts lead by a Scrum Master. Among other things, the Agile Manifesto, released in 2001, stresses that development teams rely less on documentation and more on working software, and that customer collaboration takes priority over contract negotiation. This approach allows scrum teams greater flexibility in developing working software, and continuously adding more programming sprints for as long as necessary.
All three approaches work. In fact, many project managers combine best practices from the above approaches, alongside other approaches not discussed in this article. In the end, it comes down to a single question, “What is the most time and cost-efficient method [we] can utilize to complete the business requirements set forth by the project owner, with the greatest possible return on investment?”
Choosing which approach, or creating a hybrid approach to development, should be based on the project’s complexity, knowledge level of the stakeholders and development team, time and cost constraints.
Sofvue specializes in application development, UI/UX design, software project development and project management, technical consulting, and training. To learn more about or schedule a time to talk about your next project, contact Sofvue at (623) 322-1417.