Agility and Agile
– its Key values and operation in Software Development
The aim of this document is to
provide brief information about Agility, Agile process and its key idea
including- Individuals in Agile, Teams in Agile, Communication Vs Collaboration.
The notion of Micromanagement and Macromanagement is also explained laconically.
After that working Agile in general is briefly explained.
and values underlying the agile
as we know in our Software engineering field, business requirements and environment
continues to change at an increasing pace. In many projects, major changes in
the requirements, scope, architecture and technology mostly occur within the
span of project life cycle and which are out of our control. This type of
development is empirical in behavior. So resisting changes is not an option for
today’s industries and the question on which they should focus is how to handle
these inevitable changes throughout the project span. In our traditional
approach for software development we focus on anticipating the complete
requirement at the first and reducing the cost by change elimination. This
means that we are just resisting or avoiding current change which business has
proposed and so this leads to degradation of customer satisfaction and finally
to business failure. Other problems with our traditional approach includes – less
Customer Centricity, rigidity in terms of requirement, delay in main
functionality, delivery as product as whole, unpredictable cost estimation.
Therefore, to sustain and grow in this competitive software industries one of
the best solutions to these changes is to accept agility.
Agility means adaptiveness to
change. As we know we cannot eliminate the changes but what we can do is
develop a strategy or a methodology, applying which we can reduce the cost of
responding these changes. In 1990s to 2000 there were many lightweight software
development methodologies developed to serve this purpose, these include rapid
application development, the unified process and dynamic systems development
method (DSDM), Scrum, Crystal Clear and extreme programming (XP), and
feature-driven development. These all methods follow some guideline to meet the
changes and they all collectively comes under agile umbrella. These all methods
responses to the expectation – to reduce the cost of changes. These agile
methods use concepts of priority in Functionality; estimation of time, cost,
risk; customer – more customer involvement, iteration – one iteration one or
more can be done functionality; open to requirement change; testing &
documentation – per functionality. Below are the mainly focused key values in
agile development which are basically Agile Manifesto.4
and collaboration over processes and tools,
software over comprehensive documentation,
collaboration over contract negotiation,
to change over following a plan.
items on the right has values, items on the left are more valued by agile
development. Agile software development can be defined as an approach to
deliver valuable working product to customer incrementally, on priority based,
and timely manner by collaborating several cross-functional teams with the
customer. This approach is best suited for non-safety- critical projects with
frequent change in requirements, built by relatively small and skilled
co-located teams, all with customer involvement.
ideas for Agile approaches and a brief description on it
“Agile methods stress two concepts: the
unforgiving honesty of working code and the effectiveness of people working
together with goodwill.”4
development working code is delivered to client at the end of each iteration, starts
with the very first iteration. It is a real code. Due to this client would be
able to gain value from the product from the very beginning. So, the
correctness of working code in terms of functionality and/or performance is a
very critical for developer as well as for sponsors. In fact, form this code
customer can map the feature of the code with what they wanted and what was
promised to deliver to them. The incorrectness of the code leads to the
use of people leads to maneuverability, speed, and cost savings. Using
documents foe passing the idea between people is slower. It can be more faster by
talking face to face. Also, a group of persons can produce a better result by collaborating
than each could produce alone. In agile when the developing team talks to
client they try to infer the difficulties and how to overcome it, client’s need
and expectation, priority of feature decided by sponsors and after that they
start developing keeping sponsors in loop to get rapid feedback. All these can
be achieved only if they all work together with goodwill.
“Use better and fewer people?3
there are two types of activities in the project: essential, which affects
software delivery and nonessential activities. Agile process removes the nonessential
activities from projects and gives developers more time to think and develop
the feature at the hand. So, here we are taking essential activities as area of
concern. The productivity and competency of programmer is mainly matters when
they are working on essential activities. If there are too many slow programmers
that it can slow the entire team and leads to late software delivery or
incomplete delivery. And if there are less number of slow programmer, the
chances of ending up left behind are very high for them. Also, the total number
of people also affects the productivity – as more number of people higher the
chances that their competency and efficiency won’t match. Therefore, one should
be very careful while selecting people for agile development and that’s why
this key feature is central to agile process.
“Agility is only possible
through greater discipline on the part of everyone involved”.5
do not have explicit disciplinary constraint like traditional approach. There
are no managerial watch or supervision in agile development. However, agile
team has a leader, but s/he is moreover facilitator. Industries should have a
group of self-organized, self -motivated people to apply agile process. This is
implicit in agile development. A team in agile should have nearly equal
competency with lesser people in team, having self-discipline. Therefore, for
the success of project, team member should understand the criticality of the
completion of the task given to them and following proper discipline in doing
competence Vs Individual competence & Collaboration Vs Communication
we discussed, agile development highly focuses on individual competencies –”Use better and fewer people”3. This
is one of the critical factor in project success. If team members have good
productivity and competency, they can complete any task given to them following
any process. If they are not good than no process can overcome their inefficiency.
agile teams are small number of people having ability to self-organize, doing instance
collaboration within themselves as well as across the organization. The teams
as a whole should have such an expertise that they can be configure/reconfigured
as the needs arise in industries. Agile teams should have a common goal; mutual
understanding, trust and respect. They are able collaborate in decision making
and able to deal with ambiguity as arise.
take an example of a sports team. Only if one of the team player is playing at
his/her efficiency than there is a very less chances of winning a game. – This
is team competency. To achieve a goal, to win a game, all the players must play
at their best. Now if we consider an example of submarine, the captain has a
specific set of competencies same applies for navigator and same for engine
worker. All of the crew members have to understand their part and do what they
do best. – This is individual competency.
difference between communication and collaboration is – communication is the
sending and receiving of information using documents, shared drive etc.; basically,
followed in traditional approach and for this team must spare significant
amount of time for extensive documentation, whereas collaboration is working
together on a same goal. This goal can be working deliverable or some decision or
prioritization negotiation.; followed in agile processes; there is a
documentation process, but it’s not like every information should have detailed
documents, so team member have more time in development rather than extensive
Agile is micromanagement? Micromanagement Vs Macromanagement1
No. Use of Agile
processes attempt is not micromanagement, it is a macromanagement.
Micromanagement is a command-control management, where developers cannot make
instant decision to cater customer’s change request for better throughput
without confirming with higher authority and keeping original plan in mind.
This is not what agile processes follow. Agile management is macromanagement.
It understands the certainty needed to provide customer what they want at
current time(iteration) even if it is dysfunctional. Its leadership is based on
collaboration. The managers/leaders/master setup goals, boundaries and environment
for each iteration and developer are also included with leaders to take decision
at any period of project span. They mainly focus on collaboration within team
as well as in organization and they trust individuals for applying their competency
in effective ways.
design, testing, and planning steps exist in Agile? Why? How?
Agile processes are one of the
example of iterative type of process model. At every iteration developer
deliver a deployable working code. So, what happens in each iteration?
each iteration team sits with sponsor and find out the prioritized features.
the whole iteration according to doable features.
some design on paper and collaborate.
a working code and test it.
feedback from client and update changes.
deliver a deployable working code.
necessity of each of above steps are self-explanatory, so Yes, steps of design,
testing and planning exist in Agile. These steps are involved in each
iteration. Also note that the process of development and testing are
interleaved and as we discussed earlier, all these step
A. Cockburn and J. Highsmith,
“Agile Software Development: The People Factor,” Computer, Nov.2001, pp.
M. Cohn, D. Ford “Introducing an Agile Process to an Organization”. Computer
B. Boehm, Software Engineering Economics, Prentice Hall, 1981.
Highsmith and A. Cockburn, “Agile Software Development: The Business of
Innovation,” Computer, Sept. 2001, pp. 120-122.
Beck, Kent, and Barry Boehm. “Agility through Discipline: A debate.” Computer