Software Development Methodologies
Hayley Rogers-Hinsley
Director | Big Red Recruitment | Digital, Technology, Transformation, GTM Recruitment
There’s a lot of hype out there - and we meet some almost evangelical devotees to certain methodologies like DevOps or Agile. The enthusiasm is catching, but what is it all about?! Here is our quick guide to some common software methodologies, and why some are more popular than others.
Waterfall
Waterfall is for the traditionalists and is considered the oldest methodology. It follows a logical process: you must finish one phase of the development process and then move to the next in a chronological fashion. The downwards flow of the process creates the waterfall, and follows the ethos that you must use the information discovered from the previous stage to inform the next, with a project plan for each stage. Each phase has its own distinct goals and when these are complete, there is no turning back.
Waterfall phases
Waterfall projects are designed to be simple to manage and understand, but commonly are considered inflexible in their approach. It makes sense when you consider that this methodology was originally borne out of the manufacturing and construction industries, where projects don’t necessarily change like they naturally do in the spheres of IT and technology. With a Waterfall approach, problems that arise in the early stages of a project can’t be addressed until you get to the maintenance stage and there’s no room for manoeuvre by this point. Ongoing or long projects tend to have issues with this rigid process, and there is little room for scope change or changing requirements. This tight structure can lead to slow and costly projects.
However, it’s also important to understand the benefits of a Waterfall methodology. This is a robust way of doing things, where the focus is on documentation and source code. This reduces loss of knowledge if team members leave the project before completion, so there is a safety here. Adopting a structured approach can suit the culture of certain organisations where the project has a fixed scope and a firm and stable product. There is no doubt that taking a Waterfall approach provides a great deal of managerial control, which can lead to project being delivered on time.
Agile
Agile has been around for about a decade, but is still very successful, and is even being applied to non-tech projects. It sounds like an oxymoron, but in Agile projects “Fast failure” is a good thing. Ongoing release cycles continuously deal with small changes generated by the previous release, with a testing stage at each step. This process addresses issues continuously to nip them in the bud, engaging project stakeholders continuously for feedback. Agile takes a collaborative approach, and has a cross-functional focus and an ethos of continuous improvement. The result is that scope creep and cost overruns are minimised.
Agile has its own structure and terminology, involving the use of a Scrum team that works in Sprints of 2 – 4 weeks, with daily meetings to monitor progress throughout that project. A Scrum Master is tasked with ensuring the team remains focused on the goals of the sprint. Within this structure, client communication ideally happens in real time and face to face. This aims to quickly identify and address any mismatches in expectations.
Critics of an Agile approach have described this as time consuming as developers wait for multiple stages of stakeholder approval. In addition, a lack of documentation carries risk.
DevOps
DevOps utilises the principles of Agile methodologies and expands their scope. The principles remain, that high-quality development requires continual engagement, feedback and integration from a range of technical professionals including developers, quality assurance and operations specialists.
DevOps combines software coding knowledge with QA skills to deliver continuous software development and deployment. A real-time feedback loop helps reduce risks due to potential disconnects between developers, operations staff and quality assurance. This approach also helps mitigate disconnect between developers and the current state of the software.
A fundamental principle of DevOps is continuous integration to merge source code updates from all of the developers within a team, to avoid merge conflicts. a centralised server continually extracts all new source code and builds the software application from the ground up. The result is a collaborative automated software build.
We have previously written in more depth about the benefits of a DevOps approach: you can read it here.
In conclusion, these are the three software development methodologies we regularly come across. Many organisations take a mixed or a ‘light’ approach. Let us know what you think – how are these manifested in your projects? Are they a loose guideline, or formalised structure?
Please share your thoughts!
Senior Project Manager | Product Owner | Helping companies run software projects (SAFe, Waterfall, Agile)
3 周Hayley, awesome !
Senior Software Engineer at TerraQuest
6 年Good article. I hadn't previous heard of DevOps being a Methodology, so have learnt something new. As to which is best that is always an open question. I'd view it as thinking like when your eating, you have a knife, a fork and a spoon, - and it depends what you're eating at the time as to which is best suited. It's a bit like that with Methodologies. The mistake is to think you can survive by just using one.
Technical Consultant | Fintech | Riskfactor
6 年Each methodology is customised around requirements of the business, nothing is ever set in stone from my prospective. Good to see recruitment companies sharing their views.
Software Developer at Jisc
6 年Interesting article. Agile is also about thinking since most organisations that implement tend to customise to their environment. It simplifies answering Yes to the following popular questions: 1) Have you done it yet? 2) Does it work? 3) Is it ready?