Assignment 1: Software Agility
what is agility (in the context of software development) and describe the
values underlying the agile position for software development.
Agility in the simplest form
means to be able to move quickly and easily. When this simple definition is
applied to software development, it goes from something very basic to a
technique which the world’s top companies are incorporating into their day to
day activities. Agile software development is all about constant change and
iterative approaches to maximize efficiency. The other process models do not incorporate
rapid change as well as agile does.
According to Highsmith 1, the
values underlying the agile position for software development are better ways
of developing software, they are:
over processes and tools: this essentially means the value of members and communication
between all the members involved is at utmost importance than using processes
and tools to manage the product. In fact, the processes and tools should be
used in such a way that the interactions between individuals are simple and
software over comprehensive document: this value means that teams
should dedicate more time for building the software and less time documenting
it. Documentation in the early stages is time consuming and unproductive.
collaboration over contract negotiation: Earlier process models would involve
the customer only in the start, end and very few times during the development.
This value implies that the customer should be involved during the making of
the product so that the developers can communicate with them and deliver the
desired product without any disagreement in the end. Customer satisfaction is
one of the principles agile follows rigorously.
to change over following a plan: Agile believes in the phrase “the only
constant is change”, agile teams should be ready to tackle problems and changes
that come their way during the entire software development process. Agile does
follow a plan but that plan is flexible, it can embrace the change and deliver
a product with the new requirements.
why the following ideas are key for Agile approaches:
• “Agile methods stress two concepts: the unforgiving honesty of
working code and the effectiveness of people working together with goodwill.”
This idea is key for Agile
approach since Agile believes in customer satisfaction and working software. It
believes that the customer will be satisfied only when they see the actual working product and not just the
demonstrations and prototypes. 1Using people effectively achieves
maneuverability, speed, and cost savings. Working together in harmony has
greater benefits than working together. People should be able to put forth
ideas and get an enthusiastic response from the ones listening, When the customer,
developers and team members work together the difficulties can be looked at
from multiple perspectives and can be handled more efficiently.
better and fewer people?
skilled workers who excel in their respective fields to achieve optimal communication
and efficient results. If the members of the team project are good enough
they can tackle any process head on and accomplish the goals. If they are not good
enough, it would result in delay and system would not be produced as expected.
• “Agility is only possible through greater discipline on the part
of everyone involved”.
In the paper called 2Agility through Discipline by Barry Bohem,
he put forwards a very thought provoking example of how an elephant and a monkey
have to work together in discipline to survive. This example highlights the
statement of how agility is possible through participation and discipline on
part of everyone involved. This essentially means that for agile process to
deliver the correct outcome, all the members of the team including the programmer,
customer, leader, should work together in harmony and help each other out, this
is because “there are some tasks which elephants cannot do , but monkeys can
and vice versa”. therefore, working with discipline and not rushing into things
is the agile away to tackle a solution.
3)Discuss the difference between team competence and
individual competence. Provide examples. Explain the difference between
Collaboration and Communication
Individual competence means how well
does that particular member of the team know his work and communicate it to
others. Individual competence is not only excelling in your respective field
but how well can that individual tackle new tasks. Team competence is how well
the entire team can work together and incorporate each other’s work in order to
build a working software. Teams should be highly efficient in adapting to
change and producing an optimal product. Individual competence for example is when
a designer has to update the user interface with many graphical options, or
when the leader with his strategic thinking has to come up with innovative ways to
incorporate change. 1 Team competence can be when the designer and the leader
along with other members organize themselves over and over again to meet the
challenges that arise.
Communication is how well the member can lay down ideas and
understand the ones put forth by other members. Whereas collaboration is how
well the members can work together in making decisions and delivering a working
4)Is the use of Agile processes an attempt of
micromanagement? Explain your opinion and support it to the best of your
Micromanagement according to
Wikipedia is a
management style where a manager closely observes and/or controls the work of
his/her subordinates or employee. This concept should not be applied to
Agile because agile isn’t about due dates and deadlines. It is more about quick
discussions and constant updates. The manager instead of taking strict actions,
should understand why the problem arose and what new measures should be taken
to eradicate it. To micromanage a team means to set specific deadlines and
rules to achieve a particular task at hand. This practice can be beneficial if
we are looking at a plan-driven approach since the teams already have the
entire requirement and steps to accomplish them in front of them from the start
of the project. In Agile however, 3 they should not be judgmental when told a
task will take longer than usual. Consider an example where the graphic design
team could not deliver the proper functioning of the touch gesture on the day
as expected. Instead of giving this project to another team or taking actions against
the current team, the project manager should collaborate with that team and
persuade them to deliver the correct product soon. This does not mean that the
team can take ages to complete a task at hand, they should be efficient enough
to deliver the product as soon as possible.
5. Describe whether or not the steps of design, testing, and
planning exist in Agile Approaches Why? How?
The steps of design, testing, and planning do
exist in Agile Approaches but they are not given that much weightage as are the
other main Agile Principles. There is a plan in Agile but it is not plan-driven.
Agile embraces collaborative design, this design is flexible and with new tools
it is easy to incorporate new designs into changing code without affecting the
main code base. Agile is iterative so testing happens after each iterative step,
the test cases are designed for that increment. Teams write code, test it check
if its correct and then move on to the next piece of code.
1 Jim Highsmith. Agile Software Development: The Business of
Innovation, 2nd edition, Addison Wesley,2005.
Kent Back, Barry Boehm. Agility through
Discipline: A Debate.
3 Mike Cohn, Doris Ford. Introducing an Agile Process to An