Project Lifecycle - The Waterfall
Disclaimer
Most of the things I’ve written are in free form. Of course, I researched and have my sources linked in the text as it goes but take my writing with a grain of salt: I am not a computer scientist nor a great researcher. When in doubt, always check the sources. Thanks and on with the show!
Index
- First Things First: What is a Project Lifecycle?
- Navigating Through the Waterfall
- Having the Boat In the Water
- All the Fools Sailed Away
- Navigate the Sea Charts
- Get Your Engine Rollin’
- Check Your Engine and Mind the Fuel
- You Have Arrived! Customs is at Your Left
- What is Waterfall Good For, Then?
- Finally, Let’s Rest
> First Things First: What is a Project Lifecycle?
Let’s say you got yourself a problem. Not that hard to imagine, is it?
Now, you’re a bright person, so you want to take the necessary steps
to make this problem, let’s say, disappear. Let’s call this collection
of steps a project, to make the example clearer.
Now that you have yourself a project, are you ready to solve the problem? Well, not really. You first got to understand this problem, make sure you’re not treating the symptoms but the disease itself.
Well, if you know how to do that, you wouldn’t have a problem, right?
That’s what project's lifecycles are all about.
They are a
collection of steps, phases and operations you execute in order to have your project end with a good result.
> Navigating Through the Waterfall
The Waterfall lifecycle is actually one of the oldest and probably the first method of lifecycle management for software projects, according to Wikipedia.
It is called a Waterfall because it starts from the top
and goes to the bottom, no chance of going back.
Of course, the results of the current phase should be validated and accepted by the team before going to the next phase.
> Having the Boat In the Water
In order to reach the
Waterfall, one must first procure a boat.
Everything starts with the problem statement:
- What needs to be done
- Why it needs to be done this way
This is regularly called requirements and, in my
personal opinion
are the most common thing to get wrong in any project.
Requirements are the things the project
MUST accomplish, no questions asked: either the project
fulfills the requirements or it fails. Therefore, it is
imperative the requirements are clear. Otherwise you might
as well require the software to solve the halting problem.
There is no limit for the number of requirements. Of
course, the longer the list, the harder it will be to maintain and
develop for.
While this is very opinionated, I believe the success of the project lies in having a small but carefully selected
requirements, separated in distinct phases.
Make Sure the Water is Deep Enough
The requirement gathering stage must
result in a single yet very detailed artifact: The Requirement Document.
This document should be very clear and specific on
what the problem requires, not
how the problem will be solved. This question will be
answered in following phases.
Let’s say you have a very simple requirement of having a
wall built. The statement could be as simple as saying
something like:
In order to have the rooms of the construction clearly defined, the rooms must be separated by walls.In this statement there is nothing like the dimension of
the wall, the materials to use, whatever. The statement is
very simple: it
tells in simple text what the problem is and what is expected to be done.
> All the Fools Sailed Away
Now that ou have your boat on the water, where are you going?
Using your problem statement, you have your
whats and whys so you have to figure out the
hows.
This part of the lifecycle is called Analysis and it is
really straight-forward. You have to make sure:
- All the requirementsare clear
- All the requirementsare achievable
- The requirementsdo not cancel one another
- The requirementscan be tested in a straight-forward manner
At this stage of the trip, it may become impossible to keep sailing
because one of those statements could not be answered in a satisfying
manner because the Waterfall process you have to work with
the results of the previous step as if they were the absolute truth.
What this means is if you find your requirements are not
up to standard only during the analysis phase, the project
should be over, at least in theory.
And it really should stop there. There is no way your project will be successful if you are not confident in those four bullet points there.
Once each and every requirement is analyzed thoroughly,
they must be extensively documented in order to guarantee they are built
correctly.
No matter how many requirements are correct: if only one
of them could not be successfully analyzed and/or documented, please
stop the project - it is doomed to fail.
Rule of Thumb
The result of having gone through all the requirements
and making sure they are valid is a more technical approach to the
how of the problem statement.
One or more business rule may exist for a
requirement. Such rules answer the how of each
requirement, which may come in many steps.
Going back to the wall
example, we can derive some rules:
- Walls must not leave any space between each other saved by doors and windows;
- Door and window positions must be given before the construction of the walls;
- Walls must allow electric cables, heating and water pipes to go through and be concealed;
- Walls must always follow all the proper guidelines and building rules established;Ok, this gives a much clearer idea of how that
requirement will be fulfilled, though my example is clearly
not a real one, it is just used to illustrate the situation.
Now that we have both the
list of requirements we must achieve and
how each and every requirement should be implemented we can
finally move ahead.
> Navigate the Sea Charts
Alright: we got ourselves a boat on the water with the destination set, great! How do we navigate there?
After the requirements became
business rules we now have our whats,
whys and hows, so what is missing?
In simple terms, we need to know in which way our
business rules will interact with each other. We have
already established those rules are connected but they do
not cross over each other, so we must find a way to make them live
together,
That’s when the design phase comes in. Sure, it does
look like it arrived late at the party but it really didn’t. In order
for the design to complete it’s goals, said goals
MUST be unequivocally clear and we just only reached
that stage with our business rules.
Keeping with our civil engineering theme in the
examples, this phase would be analogous to the
architecture design: You know the limitations of
walls and rooms so you have to
design the project in such a way as to
optimize the usage according to the business rules.
Uncharted Territory
It is possible your map does not have a route for the destination you desire.
While organizing the many business rules and their
connections, it may be impossible to accommodate them all.
Imagine, if you will, that you need your first floor to have a
certain amount of rooms and your business rules determined
that rooms must have a specific size.
What would happen if there is physically no more space to fit all
rooms according to the rules? Well, it means the
project is bust.
Realistically, this problem could and really,
should have been caught during the
analysis phase but sometimes the complexity and minute
details of the business requirements take a little longer
to creep up.
> Get Your Engine Rollin’
We know how to go, where to go so let’s just go, then!
We finally got to the part where “things get done”.
Not that the other steps weren’t “doing” anything: they were all
extremely necessary but they didn’t deliver anything
that solved the problem in the first place. All they did
was prepare the terrain, so to speak, for the
real solution to the problem.
Let’s list all the things we’ve gathered so far:
- Requirements: what needs to be done
- Business Rules: how it must be done
- Solution Design: how it should be organized
Things look good, we have a good understanding of the situation we
are undertaking. What’s left now is to really do it, that’s why this
phase is called the Construction or, in software projects,
the Coding.
This phase is where things start taking shape: you start
cleaning the terrain,
making sure it is leveled,
getting your bricks, sand and concrete all lined up in the
yard, looks amazing.
Business Rules are being worked on by the crew
as designed and following the rules, maybe we
will keep this trip right on schedule, right?
Right?
Trying to Stay Above the Weather!
No matter how detailed and planned your trip plan was: Nature is a harsh mistress and is prone to mood swings.
The Construction phase is when the
requirements and business rules take shape “in
reality”. Up until this points they were ideals, things that had real
importance but were still ethereal.
Once they reach this phase, however,
the materialization from ethereal to real may not be perfect.
Sure, your design was extremely clear and precise on the
measurements but someone ordered the wrong bricks and now
things don't line up.
What did you say? Oh, the faucet
should have been on the other wall? Can’t you just, I don’t
know, invert the room?
Things like this are so much more common than what we would like, I believe everyone has some kind of story about situations like this. Being unpredictable is the flavor of life, I suppose.
Going for the same song and dance,
things like this are unacceptable in Waterfall and
instantly means the project failed.
> Check Your Engine and Mind the Fuel
The trip is proceeding smoothly, just as it should. Don’t let the engine get hot nor thirsty, we are almost at our destination!
Can you believe things got done already? Wow, so much
work has been accomplished up until this point and yet, there is some
more to be done: we are now entering the validation phase
of our trip.
If the very very VERY careful and detailed planning
made was followed and the construction phase went on
without a hitch, it is time to make sure things were done correctly and
to the letter. Since waterfall is not really about
feedbacks, this step should be just a formality,
simply a way to demonstrate things are as they should be.
But life is a box of surprises and Murphy’s Law tends to show up anytime.
Well, There’s Your Problem!
Because we are dealing with the Waterfall, problems tend
to accumulate until they burst. The validation phase is
known for picking on bad interpretation of requirements,
incompatible business rules or simply, a
bad construction job.
Didn’t we review things before moving to the next step? Surely those things were fixed before, right? Well, they should have been but not always.
In the case of civil construction, some people have so
much experience and knowledge about the processes that they become
second nature and don’t deviate. In things like software, for example,
where every solution is different because it is tailored for specific
problems, it is quite common to catch stragglers.
Of course, I should be very clear: this does not mean the team is
incompetent or rogue actors. Building things is HARD
and complicated, doesn’t matter if it’s a
calculator app or a
multi-platform, cloud-ready, do-it-all operating system.
Make sure any defect is well documented: it MUST
include what was expected, what was experienced and why this is wrong.
This will help the root cause analysis and improve the
team’s response time for fixing things.
> You Have Arrived! Customs is at Your Left
Finally, we have reached your destination! Great vacation, very relaxing. Oh, let’s not forget to go through Customs before going back, we brought so many souvenirs!
Finally, our trip is over, we conquered the Waterfall.
However before we go home, we got to go through the Customs
processes.
It goes like that in our example of civil construction
as well: once all inspections are done and green lit, all that’s left is
to let the client in. Maybe it’s their dream house or event
their new office space, surely they want to use the space
as soon as possible.
This means, of course, moving:
Setting up furniture,
putting up the paintings and photos,
wiring up the equipments… Oh, the joy of moving in,
right?
But hey, once this process is done you’re free to use it as you like because things are finally done!
You Haven’t Declared This Item
Unfortunately for some, not everything ends well sometimes.
Maybe you have a standup desk that is just to big to
enter the room and can’t be disassembled, or maybe your new bed doesn’t
fit the room because you bought it after the measurements were
taken.
Things like this happen and they may kill the project.
If you cannot deliver the project, can you say it’s finished?
> What is Waterfall Good For, Then?
Throughout the article I was very incisive that
every little pebble can kill the project. This is only
“real” in the theory: in practice
people tend to find ways around the issues in order to keep the project
going.
Even if you do finish the project, however, all those
attention points raised are now things you
have to work on in order to
really solve the problem statement.
So what is Waterfall good for? It seems to be very
bureaucratic and hard to navigate but it has
an immense strength:
The Waterfall Project is great for projects in which previous experiences can be incorporated and reused.
Where Waterfall Succeeds
Waterfall seems to succeed in
project which have repeating elements. This means it is
great for civil construction, for example:
- You will probably always set a brick wall the
same way;
- You will probably always raise a drywall panel the
same way;
- Building codes and laws take years to changeand they should be incremental;
- While wiring technology may change from rigid to twisted,
the way they are laid hasn't really changed;
Of course, you may have some architectural feature which
could make the construction a little less ordinary but let’s face it,
that's the exception.
Waterfall would really fir the bill in those scenarios
because they are extremely previsible which is awesome
because waterfall is averse to change.
Any scenario in which conditions can be static or as close to it as possible will be able to use
waterfallwith a high confidence for success.
Where Waterfall Fails
There are many ways in which Waterfall will help deliver
you a win but there are also ways in which it will
contribute to a loss:
Waterfallabhors changes. If you need any kind offeedbackduring the project execution,Waterfallis NOT for you.
Before I explain what I mean by feedback I rather
present some examples of where it is used first:
- Research Projects
- Prototyping Solutions
- Team Interactions
In those situations, you want to
adapt to change as fast as possible. When you’re
researching something, you apply the scientific method in
which you
test your hypothesis and make adjustments as you go, you
embrace and welcome change at every step.
Software is no different: It requires afeedback loopin order to achieve best results. I cannot think a single instance in whichsoftwareproduced withWaterfall managementwould be successful.
Unless you have infinite time and money, of course.
Keep it Looping
What is this feedback loop I keep talking about?
Going back to the scientific experiment example, it is
when you keep iterating solutions until you reach an
inflection point, which means:
it succeeds or it fails.
Seems close to what Waterfall tries to achieve, because
the idea of project management is to succeed at the end:
the difference is in the how they manage the project.
In feedback loops you work with
smaller and incremental changes making it possible for you
to understand what works, what doesn't and why, enabling
you and your team to work more efficiently and
avoid past mistakes.
Just like
Waterfall, however, they are not suited for every kind of project: they are just a tool for the job. It is your responsibility to choose the best tool to the job you’re taking.
If we’re talking about software, the
feedback loop is best represented with the
Agile Framework but that’s a topic for future Articles,
OK?
Finally, Let’s Rest
Finally, this trip is over, no more surprises. I hope you got a
better understanding of what Waterfall is, where to use,
when to use and how to use it.
If you already knew it, hope this was a good refresher.
As always: if you have any questions or comments, send me an e-mail or message me through Telegram, the links are at the top of the page.
Bye for now.