From 4cd4e453ff7efe24376b16879db4c5df31a42de2 Mon Sep 17 00:00:00 2001 From: Andy Ko Date: Sun, 30 Apr 2017 13:56:19 -0700 Subject: [PATCH] Improved definition of conceptual integrity. --- communication.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/communication.html b/communication.html index 82d2826..0a83c63 100644 --- a/communication.html +++ b/communication.html @@ -28,7 +28,7 @@

Communication

Andrew J. Ko
-

Because software engineering often times distributes work across multiple people, a fundamental challenge in software engineering is ensuring that everyone on a team has the same understanding of what is being built and why. In the seminal book "The Mythical Man Month", Fred Brooks argued that good software needs to have conceptual integrity, both in how it is designed, but also how it is implemented (Brooks 1995). When multiple people are responsible for implementing a single coherent idea, how can they ensure they are building the same idea?

+

Because software engineering often times distributes work across multiple people, a fundamental challenge in software engineering is ensuring that everyone on a team has the same understanding of what is being built and why. In the seminal book "The Mythical Man Month", Fred Brooks argued that good software needs to have conceptual integrity, both in how it is designed, but also how it is implemented (Brooks 1995). This is the idea that whatever vision of what is being built must stay intact, even as the building of it gets distributed to multiple people. When multiple people are responsible for implementing a single coherent idea, how can they ensure they all build the same idea?

The solution is effective communication. When communication is poor and teams are disconnected, software defects are the result (Bettenburg & Hassan 2013). The social relationships in a team also play a large role in structuring how projects evolve (Zhou & Mockus 2011). Perhaps the most notable theory underlying these ideas is Conway's Law (Conway 1968), which argues that any designed system—software included—will reflect the social relationships behind it's design. For example, look at any online banking website: the way the application is designed, how information is organized, the terminology that is used, and even the visual design is a reflection of how the teams inside that bank are organized and socially connected.