How often have you encountered a developer who communicates well with clients and produces good, clean code? It seems that lately this skill combination is a rare occurrence.
Although I want to believe that any developer can learn to communicate effectively with clients, team mates, or anyone. It takes practice, and a little push to those developers who haven’t quite mastered the skill is worth the risk and investment.
Before writing this post, I conducted research on this topic. First, I wanted to know if anyone else shared my belief about practicing communication skills. Second, I wanted to make certain that I wasn’t “reinventing the wheel”.
The articles I found ranged in viewpoint from one extreme to another. Several articles advocated that developers shouldn’t talk with clients, ever. I thought of those articles as the “Don’ts”. However, I also found numerous articles that advocated with equal fervor for developers to improve their communication skills for interacting with clients. I referred to this group as the “Maybe’s”.
The authors of all these articles had evidence — anecdotal stories — to reinforce their position. Yet, despite those stories portraying different situations and reaching opposite conclusions, one pattern emerged that connected all of them. The relative success or failure of the communication between a developer and a client depended principally upon two factors.
- Personality of the developer
- Technical skills of the client
In those interactions where a developer was open and communicative and the client had an understanding of the technical issues regarding the work to be accomplished, the odds of them working well together was increased.
What is maybe more important to notice is that every story where a developer was not completely introverted and the client wasn’t technically ignorant had a chance of success. So, maybe helpfully nudging both the developer and the client could give the project a much better chance of success. What exactly is there to be gained from that relationship?
- Avoid an ever-increasing understanding gap – A customer isn’t an opposing party, an enemy, but rather a valuable team member. It’s much better for a developer’s motivation to build something for a person who is liked and valued.
- Understand the product and the problem context that is being solved. This way the developer is in a better position to suggest system optimizations and UX improvements. A user sitting next to the developer while coding increases the odds of a workable solution
- Building trust - When you are in direct communication with someone you start to be able to more precisely predict their actions and reactions. And being able to do that is equivalent to “trust”. Predictability on projects is of crucial importance to their success
- Slimmer team structure – When requirements are moved to the developer, a project manager is available proactively to review release cycles and focus more on overall product lifecycle, which can reduce the general project cost and complexity.
Then, I had an “Aha” moment.
As I was writing and analyzing this issue/problem, I realized that I was writing cons of normal human communication and interaction. Something doesn’t add up! Why is this such a big deal? Could this just be a made up, overblown problem so that many consultants, personal trainers, and project managers can have something to talk about? It seemed like a small communication challenge has turned into a huge issue with a little bit of time.
Express yourself so other people can understand, relate, and ultimately trust. This is what most of us are doing naturally anyway. Maybe everyone, developers and clients, just need a tiny push to overcome this obstacle and reap the values of quality communication. It might come more naturally for some than others, but communication and its benefits are something that anyone should be able to achieve.