Communication is always important in any teamwork environment. This is especially true in software development where changes are constant. There are two levels of possible communications in software development: soft communication and hard communication. Let’s go over them one by one.
Bothered by SLOW Web UI to manage vSphere? Want to manage ALL your VMware vCenters, AWS, Azure, Openstack, container behind a SINGLE pane of glass? Want to search, analyze, report, visualize VMs, hosts, networks, datastores, events as easily as Google the Web? Find out more about vSearch 3.0: the search engine for all your private and public clouds.
It happens among people, those who work on a software project. Two popular forms of soft communication are meeting and documentation. Some teams may hold many meetings to make sure everyone is on same page. Software development processes like Scrum, Extreme Programming take this to an extreme with daily meetings. These daily meetings cover only what you did yesterday and what you will do today, and mostly don’t help much on real issues.
The documentation can be requirement specification, design document, test cases, and etc. Documentation varies from team to team and from person to person. Most people don’t like to write documents.
It is among the code and scripts that developers write. This may sound a bit off that I call it “hard” while talking about software. But the idea is to let the compiler/builder/testing frameworks to facilitate the communication. Unlike soft communication, hard communication binds. If the code doesn’t work together, the compiler will tell with exact specifics. People can talk 10 times about an interface design between modules, but it may not be as effective as compiling and unit testing it once. For applications developed using dynamic languages, compiler doesn’t help but the unit testing will.
The ultimate goal for a software development team is to pull the code together and deliver it as a product to customers. Instead of communications by people work on it indirectly, we should let the code to “communicate” directly. The modern software development tools have provided enough assistance there. All we need to do is to take advantage of them.
When To Use Which?
Both forms of communications have its strength and weakness. The soft communication is good for high level design and planning, while the hard communication good for low level design/implementation with laser-like precision and extremely low cost. Both forms of communications actually complement each other very well. While used in their strengths, they are most effective and efficient.
Hard communication is cheap yet very powerful. Whenever possible, you should consider this first.