Software Engineering or the Software Development Process is broken down into the following phases.
- Requirements
- Design
- Implementation
- Verification
- Maintenance
Communication can often breakdown in the system analysis phases. As a knock on effect, the requirements and design can end up not being correctly implemented during the mid to latter stages of software development.
Without correct communication, a software system can end up not meeting the requirements initially laid out by the end client – or whomever requested the system in the first place.
Failing to capture a detailed analysis between the software developers, project managers and the end client will result in a negative, or unexpected, product being created and delivered.
This in turn wastes massive amounts of time and resources, which both directly and indirectly affects overall costs financially for all parties involved.
It is important to create a culture where communication is a key value and analysis and design are done extensively before development begins and is revisited throughout the entire software development life cycle to maintain the project remains on track.
Many times when a project gets pushed back due to work not being done in time, the first thing that most teams think to do is add more developers, but as is stated in “The Fundamental Rules of Software Engineering”, this is never a great idea. “If a project is late and you add more people, the project will be even later”. This is important to remember as having a small team of good developers who communicate effectively is much better than having a larger team of non-communicating low skilled developers.
“One major problem is that vocal members tend not to establish specific goals early and less vocal members never make any contribution at all”.
This can be resolved by following the below list of breakdowns:
Inform
Inform about the requirementsEngage
It is vital to engage everyone involved in order to create good communication which leads to great feedback.Listen
Every person should listen to all feedback that is given and who is offering information at the time.Persuade
Being able to persuade others involved gives credibility to a decision or argument and helps guarantee the best way forward. Being able to compromise is key here.Advocate
In order to promote a way forward, being able to get advocates from key stakeholders helps with credibility.Rally
Rally people behind you once you have provided enough evidence to make a conclusive decision which has solid backing.
With all this in mind, we can safely say that ?communication is the single most important factor? to consider when attempting to deliver software projects on-time, in budget and to the correct specifications envisioned by the end client.
It is also great to ?design for change/variability? just incase unforeseen changes occur at a later date and refactoring needs to happen. This helps in lowering future development costs and adding flexibility to the system.****
References
Software development process (2017) – Available from: https://en.wikipedia.org/wiki/Software_development_process
Communication breakdowns in global software development teams: is knowledge creation the answer? (2012) – Available from: http://dl.acm.org/citation.cfm?id=2389223
Communication is Key to Software Engineering (2015) – Available from: https://www.linkedin.com/pulse/communication-key-software-engineering-donnie-flood
‘The Fundamental Rules’ of Software Engineering (Unknown) – Available from: http://www.ics.uci.edu/~emilyo/SimSE/se_rules.html
10 Reasons Development Teams Don’t Communicate (2012) – Available from: http://blog.smartbear.com/management/10-reasons-development-teams-dont-communicate/