Custom Web & Software Development Models are a Choice
John Tomblin
Custom software and mobile app development for small businesses in the USA. Proud Dad, Husband, President and Co-Founder at DataTitan.
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, all of them correct. Knowing the best approach for developing software is half art, half science and a pinch of luck, and selecting the right 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. No two projects are alike -- ever. That said, let us look at three popular approaches to development when considering a software, web, or mobile app project for your small business. They include “Waterfall”, “Prototyping” and “Agile”.
Waterfall -- Waterfall application development has been a standard for decades and 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. In other words, build out the entire project, start to finish, in one long cycle. Sounds easy, right? Here is 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 and fragmenting as soon as Quality Assurance (QA) testing begins. There is nothing worse than starting (QA) only to discover that the 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 these types of problems from surfacing, but the Waterfall model often assumes, wrongly, that the original business requirements are correctly defined and will not change, which in my experience is highly unlikely.
Prototyping -- The goal of Prototyping application development is to code a working version of a component or set of features before spending a bunch of money on something that might otherwise fail, or worse, spending the time and money only discover there is insufficient demand to warrant that the business feature(s) or set of business requirements cannot 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 within a prototype to validate functionality, or [c] a prototype is being developed to secure short-term financing or to locate and validate the technology to an investor(s). Prototyping proves the objective, and in most cases, without consideration of the design schema, UX/UI, or other variables, but that is a whole different article. Typically, it is only after a prototype is validated that major scoping is performed, often including new UX/UI and design.
Agile (Scrum) -- Over the past decade, Agile software development has seen significant growth in popularity. Agile software development focuses on an iterative approach (typically in two- or three-week sprints) to developing software, as compared to 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”. There is typically a daily "stand-up" meeting lasting 15-20 minutes to discuss the day's project objectives. 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, but the model assumes that most decisions being made are the right decision, and in the case of custom software, that can be problematic after development begins. Agile works great at Microsoft and Google, but what is good for big companies is not always good for small business. Agile certainly has its place, and there are times when we use the Agile approach, but for most small business projects at DataTitan, prototyping, and a hybrid of waterfall and agile typically rule the day.
All three approaches work. In fact, many project managers combine best practices from each of the above approaches, alongside other approaches not discussed in this article to come up with their own customized solution, but 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, in the shortest amount of time, and with the greatest possible return on investment?”
Software development, even when done correctly, is like trying to herd a hundred long-tailed cats in a room full of rocking chairs. Choosing which approach works best, 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.
SOURCE: https://datatitan.com/understanding-the-three-most-popular-approaches-to-software-development/