
Very often, what causes the biggest problems and poses the toughest challenges in software development aren’t any of the technical specifications of the project or product that developers are working on. What even more negatively impacts the development process and the results is a lack of good communication, or – even worse – outright poor communication.
In this article, we’ll examine the negative impacts of poor communication in the software development process. We’ll also take a look at some particulars of good communication, such as good documentation, as well as some special considerations for working with external development partners.
Negative consequences of poor communication in software development projects
When communication suffers, technical proficiency of team members becomes less important. Poor communication increases the complexity and scale of a development project, while on the other hand even complex technical challenges can be tackled much more easily on a team with good, clear communication.
Poor communication translates into a poor developer experience. It often leads to developers taking on more than they’re supposed to, which results in missed deadlines, more issues with security and user experience, and sometimes things not getting implemented at all and/or projects getting abandoned. Essentially, poor communication wastes the two most important resources – time and money.
On top of everything, poor communication in a development project also stifles learning and hinders the progress of developers working on it:
- Firstly, they have to spend valuable time and mental capacity to compensate for the poor communication (which sometimes also means a lack of communication) rather than acquiring new skills and/or honing existing skills focusing on specific technical challenges.
- Secondly, the aforementioned negative impact on developer experience takes the fun out of the development process, turning what could be interesting learning opportunities into simply something that needs to get done.
The importance of documentation
Documentation is one of the key resources in software development, whether it’s for a large-scale open source project or a small internal project. Frameworks and technologies get adopted much more broadly and quickly if they provide great documentation.
Great documentation also pretty much always contributes to an enjoyable developer experience; Laravel and Vue, for example, are both frameworks known to have a very user-friendly documentation and a great developer experience, which has played a major role in their rise in popularity.
Documentation is one of the most effective methods of communication in software development, particularly in projects with longer time spans, multiple teams and/or frequent team member changes. If the documentation for a project is good, other potential communication challenges aren’t as impactful, since it’s always easy to just refer to the documentation.
If, by contrast, the documentation is poor, lacking and/or inadequate, that makes it pretty much useless to anyone but the people who originally wrote it – so, to the people it’s primarily intended for. It’s very difficult to onboard new developers to a project with subpar documentation, or ensure sustained alignment between different teams working on it.
So, having poor documentation can intensify any other communication issues the project may be suffering from, which results in further accentuating the friction which documentation is originally supposed to minimize.
Issues with legacy code & technical debt
One particular case that needs to be highlighted, especially with regards to the importance of documentation, is the use of legacy code. Many people and systems rely on legacy technologies, and sometimes those legacy technologies are maintained by just a single developer, as is often the case in longer-standing open source projects.
This is a problem also reflected in modern businesses. A small team or even a single developer sets up the initial website or application, using a technology that seems to be the right fit for that particular point in time, and potentially having to develop custom workarounds where the chosen technology is lacking desired functionality.
From there, it’s entirely possible to successfully maintain and scale with the selected implementation. But it’s also entirely possible that, over time, one or both of the following not so favorable scenarios take place:
- The person or team responsible for maintaining the websites/apps fails to regularly update the chosen platform and its dependencies, either due to negligence, the technology falling out of favor and no longer receiving updates, or any other reason
- The developer(s) responsible for the original development & setup leave the team, taking away crucial knowledge of the project and its legacy codebase
What initially seemed like a great fit with unique custom features then risks turning into expensive technical debt that requires moving to a new technology, or, in some cases, staying with an outdated and unmaintained legacy technology.
If the project hasn’t been properly documented, these risks are greatly intensified and can lead to disaster scenarios. Proper documentation can salvage such projects by ensuring their long-term maintenance and/or greatly facilitating any upgrades/redesigns that are eventually undertaken.
Data & communication silos
Communication silos can pose a lot of problems in software development, especially when it involves multiple different teams developing a more complex digital product. They contribute to missed deadlines and features that don’t align with user and stakeholder expectations, or require numerous back-and-forths and potentially workarounds to do so.
Silos represent a major source of friction which slows down the development process. Sometimes that friction is accidental, a result of poor communication between teams. But sometimes subpar communication can actually be intentional if one or more of the teams working on the particular project treat the collaboration as competition, feeling like they’re the ones ultimately responsible for the project’s success. The catch here is that this kind of thinking tends to negatively impact this desired success.
In the context of silos, one noteworthy case is working with critical data, especially when AI is involved. Poor communication between different departments responsible for the implementation of AI or another data-intensive system can lead to subpar data management, which can cause a host of issues, from biases to issues with privacy, security and UX.
Key elements & considerations of good communication in software development
Let’s now take a look at some of the key elements and considerations of good communication on development projects, with particular notes on the collaboration between in-house teams & external development teams.
Timeliness
Communication is most effective when it happens in a timely manner, i.e. the right information is available/presented to the people who need it as soon as they need it. Timely communication ensures a smooth development process without unnecessary friction, allowing developers to focus on technical challenges.
Distributed teams and/or external development partners often work across different time zones, which can hinder or prevent synchronous communication when time zone differences are too great. But even asynchronous communication can be timely and effective as long as the required information is available to people when they start their workday.
There are a lot of useful tools that enable effective asynchronous communication, such as Trello and other project management tools, but even just a clear and well-structured email can often do the job (e.g. a project manager sending clear instructions for the daily tasks to a developer in a different time zone).
Honesty & transparency
For communication to be effective, it needs to be honest and transparent. That includes being upfront about potential issues and/or potential inadequacies of the chosen technology, as well as about estimates, scope changes and any additional costs incurred with pivoting. These latter ones are particularly important in a client-agency partnership, also being a key factor of reliability.
Multilingual teams
If developers and other team members responsible for the success of the development process don’t share the same native language, communication should take place in English.
That includes all project documentation as well; it’s wise to document everything in English by default if you frequently work with external developers and/or frequently onboard new team members without experience in the native language of the original/main team. If new developers joining the project can’t understand the language of its documentation, that means that the documentation is not adequate.
Proper onboarding
Good communication also means proper onboarding of new team mates joining the project, whether they’re new in-house employees or external developers. This includes both onboarding them to the technical specifications of the project as well as familiarizing them with the overall workflows, dynamics and best practices of the team that they’re joining.
Accountability
Last but not least, clear communication and good documentation also constitute clear accountability. If everything is communicated and documented properly, it’s always possible to trace back any potential issues that arise to their original technical decisions, which also necessitates a more robust decision-making process to ensure every party is accountable.
This is particularly important in partnerships with external development providers, and even more so in cases when different external partners work or have worked on the same (potentially legacy) codebase.
With good communication and documentation, it’s much less likely that a particular person or team gets wrongly blamed for any problems that originate from someone else’s work and/or decisions.
Conclusion
Good communication plays a vital role in the success of a software development project, as we have learned through 10+ years of experience on hundreds of successfully completed projects. We hope the lessons that we’ve acquired also help you have smoother and more successful projects.
In case you’re looking for some extra help with your development, find out more about working with Agiledrop and feel free to reach out to us directly to learn more.