When it comes to planning software projects, adopting a rigid or flexible approach can have an impact on the project’s outcome. Here, we explore the pros and cons of different methodologies.
Striking the balance between structure and speed is a common goal many developers strive for when creating software. Is it best to entirely pre-plan a project before development begins? Or is having an agile, more reactive approach going to achieve a better result?
While getting a software product or service to market quickly is often the focus these days, the need for speed might dictate the direction you take. Moving at a faster pace may mean finding ways to reduce the amount of hand-coding done by your development team and encouraging code re-use while minimising risks and errors in the final product. Equally, meeting strict project deadlines without compromising security is important, too.
Here are some methodologies to consider when planning your next software project:
While there are many heated discussions on this topic, we are not for or against one or the other.
The traditional Waterfall method, where development is managed as a linear series of events from beginning to end, tends to be more structured. Agile follows a more flexible, team-oriented and iterative approach to development. Both methods aim to simplify the way software projects are completed but are done so in their own ways.
The Waterfall method is a traditional approach to software development where a project is broken down into clear stages – commonly exploration, design, development, testing, acceptance, deployment and maintenance – that must be completed in sequence. As the name suggests, Waterfall represents each phase of the software development process, and one phase must be completed before moving on to the next phase. Developers can only work in a downstream workflow as returning to a previous phase before the full development cycle is completed is prohibited.
Pros: The fixed nature of Waterfall’s workflow makes it easy to estimate project costs, create timelines and meet deadlines. It also instils discipline in the development process as each phase has a clear start point, with a focus on completion before the project is reviewed. The process is also well documented, with a clear trail of each phase of development, and the predictable timelines keeps communication lines open.
Cons: Given its rigid nature, change can be costly with Waterfall-style developments as the process is hampered by its ability to change reactively. Testing also occurs quite late in the project lifecycle, meaning it can often be too late to pivot the project.
Agile adopts an iterative approach to software development. Less pre-planning is done, with more of a focus on lean development, creating minimum viable products
Pros: The short development cycles and iterative approach of Agile make it flexible and adaptable. The ability to obtain and apply user feedback immediately is another benefit because it means the software project can be guided by the marketplace, reducing the risk of releasing a website or app that nobody wants to use. The Agile methodology, also places and emphasis on teamwork and frequent communication, as well as quick turnover and high-quality delivery.
Cons: One of the biggest downfalls of the Agile approach is imprecise timelines. While the flexibility is great, tasks can often be reprioritised and push out delivery times. This method is also dependent on skill-based teams and the lack of structure means that team members need to be very disciplined and proficient in their roles.
Both Scrum and Kanban are lean and agile methodologies, with both approaches limiting work in progress, using “pull scheduling” and focusing on delivering software quickly.
Scrum is a simple framework for completing complex projects – it encourages team collaboration and enforces a small set of rules to provide enough structure for teams to focus on solving problems that might otherwise be overwhelming challenges. This method works well for fast-moving software projects, where developments are coded and tested during the sprint review.
Pros: Scrum empowers software developers to prioritise the requirements of a project and commit to the requirements within their skill capabilities. It follows an Agile approach, where development is done in iterations and projects are managed with regular meetings for planning purposes, daily status updates and sprint reviews.
Cons: Despite being flexible, Scrum can often lead to scope creep due to the lack of a precise deadline date. The approach is also only suited to personalities that are committed and cooperative – developers who need more structure may struggle with this method. As such, using Scrum in large teams can be challenging and may not work.
The Kanban approach is far less structured than Scrum. With Kanban, projects are organised on a Kanban board which indicates columns to illustrate which stage of the process a project is at. Tasks then move across the board (from left to right) to show how the project is progressing (e.g. planning, design, development, testing, ready for release, release).
Pros: The Kanban method encourages flexibility in projects, reduces wasted time and can improve delivery flow. It has been known to reduce the time cycle of the process. It’s also a methodology that is easy to understand, meaning teams can adopt it instantly.
Cons: With Kanban, project priorities can change in real time meaning tasks can be pushed out as requirements change. As such, it can be difficult to meet project deadlines. An outdated Kanban board could also lead to issues in the development process.
The key to choosing the right methodology lies in understanding your project before beginning the development phases.
At inoutput, we like to employ the tactic of being flexible about how we work with other people – that includes clients and our staff members. We try to determine some factors upfront like knowing how we will manage change control, what is defined as a bug, if we’ll adopt a full Agile approach or have milestones, or if we’ll stick to a budget and let features fall off in the development process.
Understanding the software development lifecycle is crucial when planning projects and deciding on their most suitable methodology. While structuring development processes as you work through each phase of the project means you’ll encounter fewer disruptions and get more buy-in from your client, it can also mean there is less room to move when it comes to amendments or additions.
When it comes to choosing the right development methodology for your software project, the decision should largely be made on a case-by-case basis. Perhaps some projects lend themselves to a more flexible approach, while others will be better suited to a pre-organised structure.
Posted by Chris Rickard
Thu, 22 Dec 2016
Designing the perfect user experience (UX)
UX design is where art meets function – and it is crucial to the health of your brand and the success of your business. Here we explore the...
The art of wireframing: A guide to getting started
It’s the first and essential step in the web design process but there’s a fine art to wireframing.
How software is transforming the education sector
Software systems, free online courses and accessible apps are rapidly transforming the education sector.
Or call us on (03) 9016 3066