Deliver Projects On Time and On Budget

Image courtesy of Kent Productions.

As software professionals, we encounter a wide range of projects, some with fully-prescribed requirements and some which are far more exploratory. Each requires a different thought process to complete successfully.

Have you ever tried to rapidly change the project requirements in a Waterfall project? Or fulfil a fixed set of requirements in a fixed timeframe using the Scrum framework? It’s not impossible to succeed in these situations but picking the right tool for the job will make things easier.

There is a list of common tools you can choose to deliver your projects.

Waterfall

The waterfall model is a sequential design process used in software development processes. Progress is seen as flowing steadily downwards (like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, production/implementation and maintenance.

Although it’s developed a bad reputation in the software development community due to its poor application, Waterfall suits certain situations perfectly. Sometimes the only way to deliver a project with a strict set of requirements is to plot out the milestones and work through them sequentially.

Scrum

Scrum is an iterative and incremental agile software development methodology for managing product development. It defines “a flexible, holistic product development strategy where a development team works as a unit to reach a common goal”, challenges assumptions of the “traditional, sequential approach” to product development, and enables teams to self-organize by encouraging physical co-location or close online collaboration of all team members, as well as daily face-to-face communication among all team members and disciplines in the project.

Scrum is an implementation of the agile principles, developed in 2001 by a group of developers who published the Manifesto for Agile Software Development. The principles are:

  • Individuals and interactions over processes and tools;
  • Working software over comprehensive documentation;
  • Customer collaboration over contract negotiation;
  • Responding to change over following a plan.

Lean

Lean software development can be summarised by seven principles, very close in concept to lean manufacturing principles:

  • Eliminate waste;
  • Amplify learning;
  • Decide as late as possible;
  • Deliver as fast as possible;
  • Empower the team;
  • Build quality in;
  • See the whole.

The main tenets of this methodology focus on delivering the right thing at the right time. It is often characterised by lots of experiments, prototypes and pilot projects.

Kanban

Kanban is a method for managing knowledge work with an emphasis on just-in-time delivery while not overloading the team members. In this approach, the process, from definition of a task to its delivery to the customer, is displayed for participants to see.

Team members pull work from a queue, ensuring that people are not overloaded. The project advances consistently rather than sprinting ahead in one aspect while lagging in others. It becomes clear if one area requires more resources if it’s consistently preventing work from moving through the process.


Choosing a Methodology

Each methodology has its own pros and cons and is specifically suited for certain situations. There tends to be two variables to consider in a project.

  1. Are you solving a known problem or are you trying to figure out where to best spend your energy?
  2. Is there a known solution or is more information required about what to deliver?

The chart below, maps each methodology to a situation.

  • Waterfall
    Use a waterfall approach when you have a known problem with a known solution. If you know exactly what you need to deliver and how to deliver it then the sequential nature of Waterfall delivery is perfect to ensure you hit all the milestones required to deliver on time and on budget.
  • Scrum
    Use Scrum when you have a known problem with an unknown solution. This agile methodology is great for helping you tackle problems in small chunks until you are confident that your solution is appropriate to the problem at hand.
  • Lean
    If you’re not sure of the problem you’re solving and not sure of the solution then use a Lean approach to rapidly determine where you can best spend your time. Pivoting early and often will focus you on the goal as you continue to test and deliver.
  • Kanban
    Kanban has transferred almost directly from car manufacturing. It was developed to ensure components were delivered just in time for use. If you have a known solution (i.e. you can make several products) but an unknown problem (i.e. you’re not sure which product will be most popular this year) then Kanban is perfect to ensure you deliver the solution only as the problem becomes more apparent.

Whether you stick to a fixed time-frame and budget, or allow them to slip to increase the value to the end-user, is a decision based on your specific business requirements. However, delivering projects within that agreed time-frame and budget is what separates software professionals from capable hobbyists.

Being open-minded about how you manage project delivery will lead to you picking the right tool for the job. Not every project should be delivered as Waterfall, just as a Lean approach isn’t suitable for every case. Spend some time evaluating whether you know the problem you’re trying to solve and whether you know the solution you’re delivering before deciding on a methodology.


If you liked the article please click the heart button below to share — it would mean a lot to me.