Project Lifecycle - Agile Framework
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
- Let’s Rewind A Little Before Moving Forward
- Get In Gear: What is Agile?
- The twelve
CommandmentsPrinciples of Agile- 1: Get Your Priorities Straight
- 2: The Wind of Change
- 3: Keep on Deliverin’
- 4: One Mind, Many Hearts
- 5: The Team Makes The Dream Come True
- 6: Avoid E-Mails That Could Be a Conversation
- 7: How Far Are We?
- 8: Keeping Up the Pace
- 9: Attention to the Details
- 10: Give It a KISS
- 11: Self Improvement Is Real
- 12: Hindsight is 20/20
- What Does It Mean to be Agile?
- The Puzzling Framework
- Where Are My Deliverables?
- The Dream Team
- Framework Pre-Fabrication
- Embrace Agility
- Fake Agile
- The End of the Race
> Let’s Rewind A Little Before Moving Forward
Previously I talked
about the Waterfall Project Management and how stiff it was:
You had to follow everything by the book or else it fails
.
If you haven’t read it, I highly recommend you to do so before continuing, I will heavily lean on it to explain my view of the
Agile Framework
.
As it is demonstrated, Waterfall
cares more about the
result
and process
than the
team itself
. What this means is that either the
team adapts to the project
or
the team will be changed
. While this may work with
contractors
and other service providers
, what
happens when the team
is
part of the project itself
?
Well, things may get dicey: people may get fired
,
the project may delay
,
people may lose motivation
, etc.
Before we suggest improvements, let’s list the problems in
Waterfall
first:
- Lack of
feedback
during the project’s execution; - Prioritizes the
project over people
; - Focus heavily on
past experiences
withoutawareness of the current situation
; - Very resistive to change;
> Get In Gear: What is Agile?
Agile
is aFramework
that allows you toembrace changes
as they come.
Agile
is a collection of tools
commonly
named framework
that allows one to manage a project in a
way in which:
Individuals and interactions
take precedence overprocesses and tools
;Working results
are more valuable thancomprehensive documentation
;Collaboration
is more important thancontract negotiations
;Changes should be embraced
even whey theydon't conform to the plan
;
That is to say,
things on the right have their value but one should prefer the things on the left
.
Knowledgeable readers may correctly identify that I have taken this
straight from the Agile Manifesto and I admit it, because this is
THE place to know more about Agile
, though
in a more Software-oriented
approach while I want to take a
more generalist one.
> The
twelve Commandments Principles of Agile
While Agile
is indeed a Framework
of
practices, there are twelve principles
which should always
be upheld. They are listed in the order they appear at the Agile
Manifesto page and I have also added examples on how to use
them.
List of Principles
- 1: Get Your Priorities Straight
- 2: The Wind of Change
- 3: Keep on Deliverin’
- 4: One Mind, Many Hearts
- 5: The Team Makes The Dream Come True
- 6: Avoid E-Mails That Could Be a Conversation
- 7: How Far Are We?
- 8: Keeping Up the Pace
- 9: Attention to the Details
- 10: Give It a KISS
- 11: Self Improvement Is Real
- 12: Hindsight is 20/20
>> Get Your Priorities Straight
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Let’s forget the software
word for a second and change
it for items
, for a more generic purpose.
This principle
focus on the idea that
you don't need to deliver the whole product at once
but
instead partition it into multiple parts
and
deliver one part at a time
.
Doing so will allow both the customer
and the
team
to receive and process feedback
easily,
as there is more availability to discuss
and
validate
the deliverable.
>> The Wind of Change
Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
Things change and always will: That is the principle in which the Evolution Theory and the Scientific Method are based upon.
Instead of fighting against it, we should embrace change
at every step. What if you planned to build yourself a
house
for a family of 3
and
suddenly
you discover that you have a
baby coming
, would you simply
abandon the project and start over
or would you try to
make changes to it in order to accommodate the new lifestyle
?
One could argue it would
depend on how far things have progressed
and that may be a
fair point but I disagree:
There is always room for adaptation
and that will make for
a better result overall
.
Going straight for the point in the principle
itself: If
you own a business of any kind,
you will do your best to keep up with the market conditions
,
even if you have to reinvent your whole business
. Isn’t
that embracing the change?
>> Keep on Deliverin’
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
The First Principle makes
it clear we must deliver items continuously
but how much
time between each delivery makes it continuous
?
The answer to this question really depends on the team
as well as the project being worked on
. When talking about
software
there tends to be a preference for
2-week cycles
but this is not a hard rule
.
Going back to the Waterfall article and the
civil construction examples
: if your team is
capable of finishing a floor foundation in two weeks
,
that’s your cadence of delivery
, at least for this phase of
the project.
>> One Mind, Many Hearts
Business people and developers must work together daily throughout the project.
In Waterfall
once the requirements
are
written and approved, they never are revised. In Agile
though, they are constantly being checked, rechecked
and revised as many times as possible.
This ensures the team is working towards the same goals
,
always aligned.
>> The Team Makes The Dream Come True
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
In order to perform their best, people must be feeling their best. Nobody likes to work in an environment where they are just taken for granted, made fun of or generally marginalized.
Agile
focus on people:
Your team is your greatest treasure
, take care of them.
>> Avoid E-Mails That Could Be a Conversation
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
If you have something to say, say it.
Don't communicate with means where interpretation depends on the receiver
:
this may cause misunderstandings or even get lost in the process.
In order for the team to be close knitted,
they must be open and talk freely
. If there is something
personal you would like to discuss, by all means get to a private place
and let it out:
the best way to trust your team is to be open
.
>> How Far Are We?
Working software is the primary measure of progress.
No matter how much bureaucracy goes through nor the amount of
meetings you have:
what really counts as progress is the resolution of the problem
.
Is the construction
going forward? Are people building
anything, have the parts arrived? That’s how you check your
civil construction
progress.
>> Keeping Up the Pace
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
I believe this one is pretty straight forward:
If you want your team to to their best work, the pace must be constant
.
High revving or slow traffic periods may
kill productivity
because they may get the team tired
and/or distracted resulting in a demotivated team
.
>> Attention to the Details
Continuous attention to technical excellence and good design enhances agility.
As we embrace changes
, we must take some time to
review previous work
. We must take good care of the
design
and techniques
being used by the team
as they may need some tweaks.
Tweaking the tools
, design
and
techniques
over time will allow the team to
perform better
.
>> Give it a KISS
Simplicity–the art of maximizing the amount of work not done–is essential.
KISS
means Keep It Simple, Stupid
. The
project
and requirements
should be easy to
understand and you should’t have to complicate your or the team’s work
needlessly. Also, getting rid of unnecessary bureaucracy
is
a MUST for agile
teams to succeed.
>> Self Improvement Is Real
The best architectures, requirements, and designs emerge from self-organizing teams.
As the team goes along the agile process
, it tends to
become self-organizing
. This means
the team is capable of identifying and correcting its own flaws over time
,
be it technical
or organizational
.
Such ability also allows the team to make
better decisions, faster
which
increase the value delivered over time
.
>> Hindsight is 20/20
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
For a self-organizing team to exist, it must be able to reflect on past decisions and events
.
Quite easy to do, actually: it is normally called a
Retrospective
.
Retrospectives
are events which should occur as
regularly as delivers
, so you can always iterate on the
most recent achievement.
The retrospective
should focus in
what went well
, what didn't go well
and
how can the team improve
. Of course,
this is not a rule
and
the team is free to adapt it to use what is best for the team itself
.
> What Does It Mean to be Agile?
Contrary to popular belief,
being agile is not the same as being fast
. Crazy,
right?
At least in the context of project management
, being
agile
means
being able to react to changes as soon as possible
.
This is a good contrast to Waterfall
, where any and all
changes would mean the project termination
.
The changes handled in agile
don’t include only
project changes
but also team-related changes
as well. This means agile
is ready to embrace individuals
coming and going
from the team just as well as it handles
requirement changes
.
> The Puzzling Framework
I have already stated that
agile
is actually a framework
, but what is
that?
Essentially, a framework
is a
collection of tools, practices and processes
but without a
fixed structure.
This allows you to combine those tools
,
practices
and processes
in whatever way you
want, as long you don’t go against the principles.
This allows you to have a tailor-made approach
as to how
your team works and because of the agile
nature, it also
allows you the flexibility to change anything, anytime
.
Of course, this can also present a challenge:
no two teams work the same way
. This amount of
customization may introduce some confusion as to how teams
operate among each other, as they each have their own way of doing
things.
At the same time, this is exactly what agile
is good
for: Individuals and interactions
. Because the teams are
agile
, they should
easily transform this perceived difficulty
into
something useful for both teams
.
> Where Are My Deliverables?
In Waterfall
we had many artifacts
or
deliverables
, pretty much one for every phase. How does
agile
handles this?
The short answer is that it doesn’t:
there are no artifacts in agile
, at least in principle.
Maybe your team decides to output some artifacts
but that
will depend on your own goals for the project
.
Agile focuses on delivering value
. While some
artifacts
are important overall, they do not
directly add value
to the project
or they may
even cost too much time to maintain
.
The Business Rules
are a great example of this contrast
between Agile
and Waterfall
.
In Waterfall
, there is no turning back once the
Rules
are set and they get documented into a very thick
paper tower. If, by the will of the universe, those rules
need any kind of change,
the current version of the document must be trashed
while a
new version is produced. Not only that,
the team would have to halt work on the project until such changes are made
because they cannot afford to rework on something.
In Agile
changes are part of the daily life, therefore a
update on any of the rules
is not only expected but also
welcomed. The team,
using it's own tools, practices and processes
will
find its own way to document and implement those changes seamlessly
,
without adverse impact to the workflow.
In essence, everything in agile
is decided by the
team
, including what a deliverable
is and how
to approach it.
> The Dream Team
At this point of the article there’s a sense of
too much responsibility
being at the hands of the team, but
that’s a good thing
.
After all,
the team is composed of anyone of interest to the project
,
even if they are not directly working on the deliverables.
In agile
there is
less focus in what role you possess
and more in
how can you help the team succeed
which means
your job title doesn't affect how the team operates, only your actions matter
.
Let’s imagine a football (soccer) team and how it works. There are 11
players in many different positions
with
two objectives for every match
:
Score goals at the other team's goal
and
do your best to block the other team from scoring at your goal
.
In order to better organize the team, it is broken down in about 4
main groups: offense
, mid-field
,
defense
and goal keeper
. Each group respects
the two main objectives
but each accomplishes them in
different ways
:
- The role of the
offense
is score goals; - The
mid-fielders
make sure the ball reaches theoffense
and does it best to avoid the adversary’s attack; - In order to protect the goal, the
defense
is specialized in taking the ball from the adversary and performingcounter-attacks
; - If everything fails, the
goal keeper
is the last line of defense against the adversary. The job is simple: do not let the ball get through at any cost.
Having roles is important for a team
, it allows everyone
to know what part they should take during the match
. At the
same time,
the role does not limit them to that specific position at the field
.
There are no rules against a defense player
getting the
ball and scoring a goal, nor a rule against a
offense player
making a daring dribble and saving the team
from taking a goal.
You also have
team members which are not directly part of the match
. This
includes the coach
and the assistants, for example.
Their job is to help the team get to the match in top-notch condition
and even handle some unforeseen circumstances
such as
strategy changes or player substitutions.
All that matters is that all the people in the team have the same objectives
.
In this case, it’s to win the match, no matter what your assigned role
is at the beginning.
> Framework Pre-Fabrication
So agile
is pretty forgivable in how you
organize your team
and
how your work is laid out
because all that matters is that
you always follow the principles.
But does this mean you have to build your team
workflow
from scratch every time?
Of course not!
While agile
is a framework and doesn’t force you to
follow any specific method, there are some, let’s call them
implementations
of this framework which can be used
out-of-the-box.
The two most common, at least for me, are: - SCRUM - Kanban
There are many more ways to use the agile framework
than
just those two, think of it as a LEGO brick
.
Those two do follow the agile principles
in their own way but they are NOT interchangeable.
Choose them wisely before starting
because they have
very distinct ways of handling work and changes
.
> Embrace Agility
Agile
does not mean you will
deliver faster
nor finish the project earlier
,
so why choose something which seems so random instead of the structure
Waterfall
provides?
Simply put, agile
allows you to have
better previsibility
, better quality control
and greater understanding of the project
.
The ability to embrace changes
and
take care of the people
allows agile projects
to adapt better to changing conditions
, be it market,
weather or even political ones.
> Fake Agile
Not everything smells like roses, unfortunately. Because of its
framework
nature, agile
allows people to
implement their own version
of it.
Some implementations are great such as the examples above. Others, however,
convince you they are agile
when in fact, they are their
own flavor of doom
.
Make sure you really understand and stand behind the agile principles
before choosing or creating your flavor of agile
or this
will mean the downfall of your project
.
Some examples of anti-agile
methods include but are not
exclusive to:
- eXtreme Go Horse - Some people take this seriously, why?
- Waterfall -
Yes, I had to include this because some people think you can agilize
Waterfall
: You can’t.
> The End of the Race
Let’s conclude your agile
adventure, shall we? I hope by
now you have a good understanding on what agile
is, how to
use it and how to make it better.
Like every tool in the universe,
it's power comes from how you use it, not from the tool itself
.
You don’t have to exclude Waterfall
from your life,
it may be a powerful tool in other scenarios
but I
personally think you should start thinking about agile
first, regardless.
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.