How to Foster Effective Communication between Developers and Clients
Tags: programming, agile, tutorial, webdev
Published: 2023-03-23 18:14:47

Definitions for this article:

- Client - the person who owns the approval of features being developed
- Developer - the person who will build the features
- Server - the person taking your order and delivering it to the cook

Highly mediated conversations, by their very nature, obfuscate information. A translator’s job is to carry context, nuance, and important facts from one side to the other. 

Similarly, a Project Manager’s job is to facilitate the development process by, among other things, mediating communication between the Client and the Developer (the guy we locked in the back room, and shoved pizza’s under the door to feed because they can’t talk to the client). There are many reasons we ended up with this model, but do they reflect our current reality in the general case?

How important is it for our Project Manager to be a “Translator” and not a “Server”?

## The Inefficient Way

Project Managers wear many hats, but ‘communication middleman’ shouldn’t be one of them. Over time, it has become increasingly clear that having the product manager be the sole point of contact with a client, the primary bridge between the development and requirements teams is an inefficient way to run an agile product development team.

## Why is This Normal?

One reason this has become the norm is believing that developers are 'too busy' to communicate directly with the client. This leads to product managers becoming the buffer between the two and the only point of contact. In fact, it’s often seen as a necessity in ensuring the work is progressing on schedule.

Another reason for this may be the assumption that developers don’t have very efficient soft skills. Teams would rather have the developers be heads down in a pile of code instead of trying to communicate their progress, give feedback on features, or discuss new ideas with the actual customer.

This type of operation assumes that communication is a one-way street, with the product manager being the only voice of the development team, and although this practice has its advantages, the downside can outweigh the upside.

This traditional method of putting the product manager in the middle between developers and clients can hinder creativity and resourcefulness. Without clear communication and collaboration between the developers and the clients, it’s likely that product requirements, feature implementations, design, and deadlines could be misaligned, leading to delays and dissatisfaction from the client.

## What is the Alternative?

Regularly scheduled meetings between developers and clients should be set up at the start of the project, where everyone involved can voice their ideas and the client can give feedback and direction on the project. Developers should be empowered to act as ambassadors for the client, engaging with them and frequently giving updates about the progress of the project when it is appropriate and they have the skills available to do so. Communication between developers and clients can be structured in a way that not only allows everyone to know and understand their role but also allows for open and honest discussions around deadlines and iterations.

Smaller, more frequent meetings/updates are also recommended throughout the project to ensure that everyone is on the same page and that the objectives are still in line with the client's vision. Developers often need to be encouraged to ask questions and give the client updates about the project's progress. This builds trust with the client, helps them to have a better understanding, and provides clarity that the project is moving along according to plan - or is informed earlier when there are higher hurdles than expected that might affect the schedule.

Another important step is to set up systems such as bug tracking, issue tracking, and version control systems that allow the development team and client to understand each other. These systems should be designed in a way that allows the client to obtain relevant data and understand the project's current state.

Lastly, feedback loops should be set up between developers and clients, such that developers can receive feedback on their work and can then present them back to the client. This will make communication smoother, while also allowing the client to have an understanding that their feedback is being taken into account.

Effective communication between developers and clients is key to a successful project. Project Managers provide an invaluable role, but breaking the lines of communication shouldn’t be one of their job tasks. A great use of the Project Manager’s role is to build out any useful status/impediment dashboards, with developer input, to help with a visual aspect to that communication.

Establishing regularly scheduled meetings, setting up systems, and creating feedback loops that include engineering in the front row are all important steps for fostering such communication, and doing so will benefit your project immensely.