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 requirements

  • Engage
    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 the 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 (Accessed on 4th February 2017)

 

“Communication breakdowns in global software development teams: is knowledge creation the answer?” (2012) – Available from: http://dl.acm.org/citation.cfm?id=2389223 (Accessed on 4th February 2017)

 

“Communication is Key to Software Engineering” (2015) – Available from: https://www.linkedin.com/pulse/communication-key-software-engineering-donnie-flood (Accessed on 4th February 2017)

 

“’The Fundamental Rules’ of Software Engineering” (Unknown) – Available from: http://www.ics.uci.edu/~emilyo/SimSE/se_rules.html (Accessed on 4th February 2017)

 

“10 Reasons Development Teams Don’t Communicate” (2012) – Available from: http://blog.smartbear.com/management/10-reasons-development-teams-dont-communicate/ (Accessed on 4th February 2017)