Challenges of Migrating to Agile Methodologies
Management and organizational issues
Organizational culture has a significant impact on the social structure of
organizations, which in turn influences the behaviour and actions of people.
The values, norms, and assumptions of an organization are stabilized and
reinforced overtime, and are reflected in the policies embodied in
organizational routines.
Culture exerts considerable influence on decision making processes, problem-
solving strategies, innovative practices, information filtering, social
negotiations, relationships, and planning and control mechanisms.
Neither culture nor mind-sets of people can be easily changed, which makes
the move to agile methodologies all the more formidable for many
organizations.
00:58
03:25
Agile methodologies require a shift from command-and-control management
to leadership-and-collaboration.
The organizational form that facilitates this shift needs the right blend of
autonomy and cooperation to achieve the advantages of synergy while
providing flexibility and responsiveness.
The project manager’s traditional role of planner and controller must be altered
to that of a facilitator who directs and coordinates the collaborative efforts of
those involved in development, thus ensuring that the creative ideas of all
participants are reflected in the final decision.
The biggest challenge here is to get the project manager to relinquish the
authority he/she previously enjoyed. Knowledge management is of vital
importance to organizations.
Traditional development approaches create much documentation. Such records
serve as useful artifacts for communication and traceability of design.
Agile methodologies, on the other hand, encourage lean thinking and cutting
down on overhead, particularly documentation. Much of the knowledge in
agile development is tacit and resides in the heads of the development team
members. This can make the organization heavily dependent on the
development teams and can potentially shift the balance of power from
the management to the development teams. Such a situation may not be
acceptable to many organizations.
This impasse can be resolved by determining which knowledge should be
codified and what may remain tacit. Agile development relies on teamwork, as
opposed to individual role assignment that characterizes traditional
development. Performance measurement and reward systems, therefore, must
be suitably designed for successful adoption of agile methodologies.
People related issues
A cooperative social process characterized by communication and
collaboration between a community of members who value and trust each other
is critical for the success of agile methodologies.
For programmers accustomed to solitary activities or working with relatively
homogeneous groups of analysts and designers, the ideas of shared learning,
reflection workshops, pair programming, and collaborative decision making
may be overwhelming.
At the present time, there is little evidence to suggest that agile principles will
work in the absence of competent and above-average people.
This can pose serious problems related to staffing and morale.
First, it will be difficult to find enough personnel to staff software
development teams that use agile methodologies.
Second, it will create a culture of elitism within the systems development
group that may affect the morale of non-agile developers.
In an agile environment, the development team comprising software
developers and the customer makes most of the decisions. This creates a
pluralist decision-making environment due to the diverse backgrounds,
attitudes, goals, and cognitive dispositions of the team members.
Decision making in this environment is more difficult compared to the
traditional approach where the project manager is responsible for most
decisions. It may take an organization enormous effort, time, and patience to
build a culture of trust and respect among its employees to facilitate such
collaborative decision making.
The success of agile development hinges on finding customers who will
actively participate in the development process. Further, the customers are
expected to be “Collaborative, Representative, Authorized, Committed, and
Knowledgeable”.
Process related issues
The problem of changing attitudes and practices from process-centric to
people- centric is acute. Organizations that have for years attempted to achieve
higher levels of CMM are particularly susceptible to this problem.
The idea of changing a process to fit the capabilities and competencies of
people and the characteristics of the project, rather than using a rigid process
encompassing standardized activities may be sound, but can be achieved only
through significant investment of time, effort, and capital.
Traditional processes are compliance-driven and activities- and measurement-
based, aimed at providing assurance.
Agile methodologies rely on speculation, or planning with the understanding
that everything is uncertain, to guide the rapid development of flexible and
adaptive systems of high value.
They stress the importance of assessing as opposed to measuring, and are
highly tolerant of change.
One of the biggest barriers to migration is the change in
a process model from a life cycle model to one that supports feature-based
development using evolutionary and iterative development.
Such a change entails major alterations to work procedures, tools and
techniques, communication channels, problem-solving strategies, and roles of
people.
Agile methodologies place a premium on testing, urging developers to develop
the test code up front. The notion of test-driven development (TDD) is
becoming increasingly popular within the agile community.
TDD is motivated by the fact that thinking about and writing tests prior to
coding will make the code more understandable and maintainable.
TDD also facilitates continuous integration of new code and/or changes
without adversely affecting the existing code base.
However, the firmly entrenched tradition of writing code prior to testing must
be overcome to institutionalize the practice of early and frequent testing.
TDD also redefines the role of the quality assurance function in systems
development. Questions have also arisen about the efficacy of agile approaches
with regard to large projects where scalability is paramount.
Due to the novelty of agile methodologies, very little empirical data is available
regarding each method.
The biggest challenge facing the project manager, therefore, is the selection of
an appropriate method from the host of agile methods currently available.
Technological issues
An organization’s existing technology can impact the efforts to migrate to
agile methodologies.
Companies that rely solely on mainframe technologies may find it difficult to
assimilate agile methods compared to those that use OO development
techniques.
Tools play a critical role in successful implementation of a software
development methodology.
Organizations planning to adopt agile methodologies must invest in tools that
support and facilitate rapid iterative development, versioning/configuration
management, JUnits, refactoring, and other agile techniques.
Of course, tools alone cannot make software development successful.People
must be trained to use them correctly.