A software development methodology is a process that a development team implements to structure, model, organize, and execute its development work. The methodology guides the team’s members, tasks, and inter-communication, highlighting along the way milestones and inter-dependencies of tasks.
There are many methodologies in the software field, like Waterfall or Cascaded, DevOps, Agile Modeling, Minimum Viable Product (MVP), Feature-Driven Development (FDD), Lean Software Development (LSD), Rapid Application Development (RAD), Scrum, Spiral, and Extreme Programming (XP). Selecting a methodology highly depends on the nature of the software end-product, the domain in which it will be implemented, and the timeline available for the development process. For example, a mission-critical software, such as one implemented in medicine, aviation, or nuclear plants, cannot tolerate a wobbly first version and does not have the luxury to go through various versions to reach the necessary reliability factor. Such software has to be practically fault-free or fault-tolerant right away from the very first version. Here, the Waterfall V-Model or the Spiral methodologies are suitable. On the other hand, some social media apps, for example, have the luxury to go to market and proceed through various cycles of rendering, expanding, and enhancing until the target is reached. Here, Feature-Driven Development, as well as many of the methodologies that fall into the Agile group, come in handy. Keep in mind that Agile welcomes change requirements even at the late stages of software development. This flexibility is definitely not appreciated when you are building mission-critical software. The NASA Software Safety Guidebook sheds good light on the matter.
Development methodologies are not necessarily mutually exclusive. Rather, some methodologies borrow features from other methodologies. And this is fine; methodologies themselves get tweaked and updated with time, and new ones enter the arena, as the domain of software development expands. Moreover, some get to fall under the umbrella of others. For example, MVP, RAD, and FDD are all agile.
At White Mountain Technologies, we do not apply the same methodology all the time. In essence, what methodology we choose to implement depends on the time that we have to deliver the software, the platform where the software will be deployed, how critical is its end-use, and who are the end-users. Given the nature of the business these days, more often than not we opt to go Agile, producing a minimum viable product or a prototyping model early on to ensure that the customers are clear on what the final product will look like.
All said, keep in mind that, at the end of the day, and whether you use this methodology or that, what matters is the scope of the final product, its performance, and its adoption by the users.
N.B.: the image that comes with this post has nothing to do with Software Methodology. At WMT, we sometimes just like to emulate the spirit of Van Gogh, or other creative spirits for that matter :)