is a driver of Agile project success
The term “agile team” is now used to differentiate groups of people that have shifted away from the traditional approach centered around a static hierarchy of structurally arranged elements and processes. Alternatively, the agile communication makes it possible to balance between stability and dynamism. It opens up an opportunity for quick and efficient strategy, structure, processes, people, and technology reconfiguration, which is aimed at the protection of the created value. The common agile principles, among others, can be used for software development, so all those involved in it must work flawlessly fulfilling their responsibilities at a proper pace. The pursuit of dynamism and constant acceleration of the processes can, however, bring about communicative difficulties, problems or even failures.
What is agile in terms of project management and software development?
It is now agreed that what is meant by agile software development is a set of progressive management approaches to organizing a productive working process. They naturally resulted from the shift of the paradigm. This change happened to enable balancing between stability and dynamism of today’s IT organizations and to allow teams to stay abreast of the times.
The agile model of software development proposes that there is a solid backbone supporting the active processes aimed at active change and creation rather than maintenance. That helps companies embrace and successfully deal with new challenges. Decisions have to be made in quite a fast-paced workplace but the agility lets software developers and project managers have them well thought out anyway.
Agility is a strategic imperative that does not seem to become irrelevant soon. So, no wonder that the number of companies using agile software development keeps growing and now include the world-class Amazon, Apple, Facebook, Google, Netflix, IBM, Cisco, Microsoft, and AT&T.
Partially, their achievements as of the most valuable organizations in the world are connected with the adoption of business agility. Microsoft, for instance, is known to be a big old firm that survived “a change in its fundamental DNA.” It is not a giant slow to maneuver anymore, but a big corporation that has shifted from the bureaucratic tendencies during its Agile transformation journey.
How Agile software development works: laws and principles
Agile is a mindset. So, it may take time and effort to change the views in favor of the agility. One way or another, there is much hidden behind this term. Scrum, FDD, XP, agile practices like sprints, test-driven development, planning sessions, stand-ups or pair programming are all adding up to the agile approach to software development. These are some of the tools helping to exercise the 12 principles set out in the Manifesto and they not only can but actually must be used for software development.
Thus, we can single out five principal elements of agile software development:
1. Strategy - From a strategic perspective, it is a good idea to access teams with a diverse set of capabilities. Environments are changing and in reality, teams have to be able to respond to those changes instead of sticking to a long-term plan. All sorts of moves can be made at any stage of the process, which gives a customer a competitive advantage.
2. Structure - Simplicity is an essential element of agile software development. Namely, this approach puts problem-solving and getting simpler outcomes over going by comprehensive documentation. The process of project implementation used to have a linear structure and its scope used to be determined in the early stages. Now, it is a regular situation when changes have to be made in the midst of a cycle, so accordingly, the structure has become iterative.
3. Process - Teams use regular intervals to improve efficiency. The end-product is the ultimate measure of success, so constant fine-tuning is necessary. Software development is thus a collaborative process focused on daily tasks, regular meetings, verbal communication, and instantaneous feedback.
Client satisfaction is paramount. Usually, the client actively takes part in guiding the process and is always up to date, while the delivery is both rapid and continuous.
Stakeholders and developers collaborate on a day-to-day basis polishing their product.
A development team leader should prefer people management to micromanagement and be an effective facilitator.
5. Technology - Software technical sophistication is an ongoing goal. The agile methods and techniques allow teams to keep perfecting product quality: both its features and design.
With all that said, let’s take a look at the biggest issue that is naturally occurring in teams developing software in an agile way. That is communication challenges. Communication is one of the root causes of project failure, either miscommunication or a lack thereof. We counted five main sources of today’s challenges in communication nearly all agile team members and product owners face.
Large teams are a source of bad communication. The more people there are in a team, the more communication channels they have and the more difficult it is to interact and share information among all members of the project team.
So, for agile to work best, each team member should have visibility of what the team is doing and most importantly, have a clear picture of what the milestones are and how they will be achieved. Not only must they understand what their responsibilities are, but they also have to understand the project, which is the business context, and the responsibilities of their colleagues in reaching the said milestones. For it to become attainable, it is important to keep an eye open for updates on requirements, be curious about the project goals and go by the properly composed documentation.
2. Poorly organized communication and lack of documentation.
Little or no documentation even for some areas of the project and the situation when knowledge is transferred to some key project team members will not be without consequences. Based on these conditions, the likelihood of achieving the goals of agile software development will be diminished.
First of all, poor organization of communication can directly rely on poor organization of documentation. When it is written well, the organizational memory is supported effectively. Even though The Agile Manifesto actually calls for working software over documentation and pre-coding phases in agile development (requirements, analysis, and design) are minimized, the lack of architecture and conceptual modeling can become a real stumbling point in the maintainability of agile systems. So, having a Single Source of Truth that can be edited by all the team members is one of the workable solutions.
3. The ever-changing situation.
Agile projects are dynamic in their nature, so requirements are constantly updated throughout the project implementation and changes are always welcomed. It complicates succeeding with agile software development and discourages the effective communication of all the new requirements to everyone involved in a project.
Agile software management tools may help with that, even though people’s interactions are preferred to processes and tools in agile. It is because, in this context, we mean not even the comprehensive set of tools consisting of various agile software development, bug tracking, and automated testing tools, which any development team can hardly do without. In the first place, we mean collaboration tools, with Jira being the most representational instance. It allows managing priorities, tracking work progress, and generating progress reports & analytics for stakeholders. Then, there is a road map at hand that makes an ever-changing situation far less chaotic.
4. Different working hours. Different languages.
At first, remote agile software development may seem an oxymoron: in-person conversation is one of the pillars of an agile methodology but at the same time, agile teams become increasingly distributed. It is international projects that add another layer of complexity. So, can distributed software development be agile at all? The benefits of outsourcing and outstaffing make stakeholders go for distributed agile software development. Thus they are able to find and hire the right people that will be able to do the work flawlessly. Those who will be collaborative, representative, authorized, committed, and knowledgeable (CRACK.)
In reality, however, there are quite a number of communication-related challenges on the reverse side. That is the time/distance barrier resulting in the working hours difference, especially the one in distributed teams working across an oceanic divide. If stakeholders are completely sure that the hired members of the development team meet all the above requirements, then the best way is to establish ground rules from the very beginning, rely on accountability at an individual level and trust at an organizational level.
5. Lack of commitment and teamwork.
The commitment and teamwork must be fostered, as agile software development is a cooperative game. Cross-functional distributed teams are supposed to be committed to co-creating value for a range of stakeholders. Their teamwork, however, can be derailed, especially at the project’s beginning.
Among others, levels of commitment and teamwork can shift influenced by factors like bad communication among the team members, unclarity of a general purpose, the shared understanding of the project objectives, or resources shortage. Alternatively, agile's advantage is that teams are self-organizing and everything in a project is driven by them in the first place. As a result, the ultimate success has everything to do with the team’s commitments. Only a team that commits can have effective communication, create clarity of priorities, align itself around common goals, decisively move forward and change directions if it is needed.
Best practices in agile software development for effective communication
Agile software development highly values teamwork and communication. Now that we know the main hurdles to effective communication in the agile workplace, let’s find out what the best practices helping to develop a comprehensive communication plan are.
When adopting and practicing agile, remember that all the possible practices, be it having common coding guidelines, management tools, or a uniform IDE, exist to make a team greater than the sum of its parts.
Share your vision. Shared purpose and vision promote the coherence of distributed value creation by agile teams. Of course, it is up to a product or project owner to define the vision and ensure that this vision is brought to life by knowledgeable and skillful development team members, but this visionary has to be consistent and concise in what he or she communicates to other people on a team.
Schedule daily or weekly calls. Although a face-to-face conversation is the best form of communication in agile, the alternatives are welcomed when teams are distributed. Daily scrum meetings are one of these alternatives. A quick get-together is perfect for those sharing work among timezones. These short meetings will help teams remain synced and ensure the right level of communication and information flow.
Arrange personal meetings. No matter how effective your daily or weekly calls are, teams must be co-located whenever possible. Lack of frequent in-person meetings is a bad practice within the framework of a distributed agile methodology.
Maintain transparency. The democratization of information is an absolute trend today. The boost in transparency is therefore preferable. Communication is then multidirectional and collaboration is complex, which is the case in an agile methodology.
Keep teams small. We’ve mentioned before that it’s much more burdensome to communicate when a team is big. Yet, given that the team has regular sprint planning meetings and daily stand-ups, a big agile team will mean that there will also be more daily updates and more time spent on talking through all of the stories. That’s not good for the speed of development, so add additional members to the team only when there is no other option.
Make use of open-source agile software development tools. Emerging innovations in agile software development are of great importance. It has to be easy for a team to access any available plans, goals, and metrics or to be able to form a clear view of the issues present.
Stresses of work in an agile environment are directly connected to communication. And a guarantee for it to be successful is rooted in knowing about the sources of stress and the best ways of coping with them. Recognize that communication challenges occur naturally and expectedly in the course of agile project implementation and address them systematically. “Eile mit Weile,” as the German wording goes. It means “make haste slowly” so be fast and efficient avoiding communication overhead.
© 2019, Vilmate LLC
for monthly digest