Most of the Project Management Community in Software Development
has been trying to imbibe and use Agile Methodologies in their production
processes, but very few have been successful in delivering to the promised
potential. In this article I will try to bring to light some of the obvious but
less known concepts that prevent us from realizing the full potential of the
Agile Methodology.
Agile as a
"Mindset" - For most of us, Agile is a set of processes and practices
- Scrum, XP etc. - that define the way to implement an Agile methodology.
However, few realize that the true meaning of Agile is to be just that - AGILE.
If this was Just Another Set of Processes (JASP), there would be little point
in calling it Agile. Its Agile because it is supposed to be a flexible and tailor-able
to the needs of the organization, without being restrictive in its
implementation. Quite simply put, Agile means doing things the way it works Best.
But isn't that Anarchic and Chaotic??
Well, that is
partially the point. In order to understand this, let us try and understand the
basic difference between the way things work in Agile Vs Non-Agile worlds. As
an example, let us compare the Software Development Process to the Car Assembly
Line.
Car Assembly
|
Software Development
|
Outcome is knowable
|
Outcome is not
tangible
|
Change is Expensive
|
Low Cost of Change
|
Boundary of Completion
is Well Defined
|
Work will expand to
take up the amount of time available, based on the desired quality
|
Therefore,
in Car Assembly Line we need “Trained Workers” whereas in Software Development
we need “Knowledge Workers”. However, most of the times we try to apply the
Assembly Line processes to Software Development. Therefore, while implementing
Agile, all we want to do is DO Agile.
Instead, the full potential of Agile can only be realized by Being Agile.
What does it mean to BE
Agile?
Agile
is not a set of procedures but a mindset. And in order to switch to this
mindset, one needs to inculcate the following:
- Welcome Change
- Failing Early
- Build and Feedback Rules
- Continuous Delivery
- Value-Driven Development
- Small Value-Add Slices
- Learn Through Discovery
- Continuous Improvement
These few points move the style of working from the Assembly Line mindset to the Knowledge Worker mindset. As a Knowledge worker, you are not Trained but Educated. Instead of following processes, you learn to Create processes that best fit your needs and provide the best results.
Therefore, Agile is not chaotic, anarchic or process deficient. It is a way of working where the process is applied if it works and only the processes that work are applied.
Scrum, XP, Product Backlog, Continuous Integration etc. etc. are just practices and tools that have been designed to give you a head-start into the Agile way of work. But at the end of the day the point of being Agile is that you may formulate your own unique tool/practice that works best for you.
Note that in order to be truly Agile you will need to get out of the mindset of “Just tell me what to do” to the mindset of “I have a problem to solve”. And that is when you move from the Assembly Line way of thinking to the Knowledge Worker way of thinking.
I would like to end this article with an illustration that conveys the difference in the mindsets very beautifully.
(This
article has been largely inspired by the very informative Webinar done by Ahmed
Sidky on September 25, 2013. The recorded video of the Webinar is available here.
I would highly recommend anyone reading this to view this brilliant
presentation)
No comments:
Post a Comment