Of course, communication is at the root of all business challenges.
That's because we never really know what the other person knows or thinks even though we may be communicating directly to him. For Software Development, there are two things we can focus on in an effort to make our projects move more smoothly. There are two core challenges to communication.
- Creating a common understanding
- Capturing the appropriate details
Why do we have meetings? It's so we can discuss things. Why do we discuss things?
The following three things are probably basic drivers for the most meetings.
- Obtain a baseline of understanding : Determine what others think or know about the subject
- Get to a common understanding about the subject under discussion
- Decide on a plan of action - what will we do after the meeting?
The problem that often occurs is that a team can generate thousands of words and hundreds of ideas in a short meeting.
Often, a stakeholder will take a dev team into a meeting to explain what she wants from the product. Numerous ideas are discussed and people are nodding their heads and the meeting feels like a success. However, no one can actually be sure that they all have the same understanding of what the stakeholder wants. It is very likely that they do not have a common understanding.
Also, consider how most teams capture the details of a meeting. Maybe someone jots down some notes.
The stakeholder may pause and ask,
"Are the devs getting this so they can create the functionality?"
Very sharp devs who have a lot of experience can probably wing it and get fairly close to some percentage of the desired functionality. The problem is that there are so many details. How do you capture it all?
Other devs are completely disinterested in this entire process: they just want to write code.
Designer / creative types (Software Developers, portrait painters, song writers, etc) don’t normally want to talk a lot. That’s because they are busy making stuff. These devs know that talking about the details and gathering the requirements is Business Analyst work.
At times software developers require extremely specific details and creating and gathering this kind of detail can be:
- Difficult to get from business users
- Boring (from a Dev's viewpoint)
- Extremely difficult to track
- Easily forgotten
- Did I mention boring? :)
For all of these reasons (and more) Software Developers try to ignore these things. After all, software developers want to be about the business of writing code.
However, writing the wrong code isn’t helpful, even though it can feel like progress.
"Hey, I wrote some code that does some stuff."
The counterpoint is that you cannot wait until you have everything before you start coding, because you will never have everything.
In this book I will provide exact details and example documents that you will want to use to
- Track your requirements
- Communicate your (Software Developer) understanding of the problem (problem definition)
- Communicate your design
- Many other important project details
Good communication leads to better understanding and awareness of the 5 Ws &H of the project (who,what,why,where,when & how).
We'll continue discussing how to best communicate in tomorrow's blog entry.
Do you have stories of communication break-down? They happen a lot.