Communication: The Problem Solver

Last week, I received a notification from someone who was looking for a developer to continue development on an existing web application. This was your run-of-the-mill contract job posting, until I got to the following sentence:

"This platform has been upgraded recently with our current programmer who has faced a tremendous number of troubles which created him over 150 extra hours of work over his maximum estimation so far and yet he hasn't finished the job."

Whoa, 150 hours over their estimate, and they still haven't finished the job? That's pretty insane. If they were working a 40-hour week, this is almost one full month over when they thought they would be done.

Having been working in software development for over ten years, I know that developers are notoriously horrible as estimating the time needed to complete their tasks. Whether it's because we're afraid to tell our bosses or clients about how a seemingly trivial task to them will take weeks, or because our egos get in the way and we think we're much better than we really are, or any other reason, we usually fail to get our target dates wrong. And more often than not, they're off by an order of magnitude of the original time given.

There's a really interesting Quora thread which has over 250 answers (!!!) to the question "Why are software development task estimations regularly off by a factor of 2-3?". I highly recommend reading the first few answers, because not only as they well-explained and well-written, but they're also pretty entertaining (especially the answer using a trek to San Francisco to Los Angeles as an example).

However, regardless of how terrible software developers are at giving estimates, there's simply no excuse to let a project overrun by weeks without someone doing something about it. I don't know the reason behind the poor estimate from the person looking for a developer, but I'm 99.9% sure that the problem boils down to one single thing: communication.

In all my years working at various startups, almost all problems between developers, non-developers and management is due to poor communication at some level. There are very few instances when problems are due to something else. I've seen all types of communication breakdowns. Sometimes it's unintentional:

Other times, the communication breakdown is entirely avoidable:

Regardless of the reason, I think all of us, myself included, can do a much better job at trying to be as clear as possible when communication details about a project. I've been asked what sort of things I think would make a project run smoothly, whether it's a remote contract job or people working together full-time every day. Here are some of the things I try to do well in every software development project I work on:

I know that sometimes communicating can be tough. But talking things over, whether it's good or bad news, really can make things better. It prevents issues from escalating, and for the most part your friends and coworkers genuinely want to help you. But they need to know about it first, so let them know as quickly as possible. There are plenty of times when I wish I had communicated more, both at work and in my personal life - I'm certain I would be in a much different place in my life now.

Avoiding conflict will keep you trapped in it forever. Be free.