The document discusses version control, issue tracking, and communication in software development. It provides an overview of version control systems like Git and SVN, describing their purpose of managing changes over time and allowing for collaboration. It also covers issue tracking systems and how they are used to record, track, and resolve bugs and tasks. Finally, it discusses tools that support communication for distributed teams, such as Slack, Skype, and shared documents.
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Version control, issue tracking and communication
1. Version control,
issue tracking,
and communication
Software Development, DIKU spring semester 2016
Presenter: Lars Yde, M.Sc.,Engineering Manager, Milestone Systems
2. Contact
Academic collaboration: thesis, B.Sc. project, dissertation, internship
Lars Yde, Engineering Manager : lay@milestone.dk (or larsyde@gmail.com)
John Madsen, Software Architect : jm@milestone.dk
Milestone Systems, company website and information
www.milestonesys.com
4. Version Control
Purpose
Manage change in time (history) and space (branches)
Benefits
Ease collaboration
Allow branching and continuous integration
Track ownership and change history
Types
Local
SCCS
Centralized
E.g. Subversion
Distributed
E.g. Git
5. Version control - definitions
”Manage change”
Put files in a data store (file system, database, etc)
Optionally associate with metadata
Maintain deltas
Rinse & repeat
Achieves
Traceability
Concurrency
Reversability
6. Terminology 101 [10]
Branch : A set of files under version control may be branched or forked at a point in time so that, from that
time forward, two copies of those files may develop at different speeds or in different ways independently
of each other.
Change : A change (or diff, or delta) represents a specific modification to a document under version control.
Checkout : To check out (or co) is to create a local working copy from the repository.
Clone : Cloning means creating a repository containing the revisions from another repository.
Commit : To commit (check in, ci or, more rarely, install, submit or record) is to write or merge the changes
made in the working copy back to the repository.
Conflict : A conflict occurs when different parties make changes to the same document, and the system is
unable to reconcile the changes
Head : Also sometimes called tip, this refers to the most recent commit, either to the trunk or to a branch
Merge : A merge or integration is an operation in which two sets of changes are applied to a file or set of
files
Pull, push : Copy revisions from one repository into another
Repository : The repository is where files' current and historical data are stored, often on a server
Tag ; A tag or label refers to an important snapshot in time, consistent across many files
Trunk : The unique line of development that is not a branch (sometimes also called Baseline, Mainline or
Master)
Working copy : The working copy is the local copy of files from a repository, at a specific time or revision
10. Why is git leading ?
SVN is conceptually simpler and easier
to learn, and has some good UI add-ons +
it automatically backs up remotely
But, git has some unique selling points
Faster
Works decentralized
Isolation (less FUD factor)
Why is “the other DVCS” – Mercurial –
lagging so far behind
Git’s a bit faster (written in C)
GitHub
Instant community because of Git origins
in Linux world
11. Basic use scenarios
”Save-as” version control
”MyCode.txt” => ”MyCodeA.txt” => ”MyCodeAA.txt” => ...you get the point
Use OS permissioning to ”manage” concurrent access
Local version control systems (RCS) a refinement of this scheme [7]
Central repository model (e.g. SVN) [8]
Basic cycle
SVN update => SVN add / delete / copy / move => SVN status / diff => SVN update /
resolve => SVN commit => (goto start)
Distributed repositories model (e.g. Git)
Git init => git add => git commit => git push => (git pull)
12. GitHub
What is it ?
Git
Git with a web interface
Git hosting
Issue and request tracking system
Documentation system
A social media platform (feeds, followers, wikis, newsletter, social graph) ?
13. GitHub
12M users, 31M repositories
Why ?
Free(mium)
Natural fit to open source / non-colocated collaboration
Popular! (network effects, winner takes all)
Web interface / accessibility
Why not ?
Arguably a steep learning curve
Maybe overkill / bad fit for certain scenarios = don’t make a sheeple decision
14. GitHub
Tooling and interfaces
https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools
GUI clients (fat clients, various platforms)
http://git-scm.com/downloads/guis
Github desktop: https://desktop.github.com/
Branching model
http://nvie.com/posts/a-successful-git-branching-model/
36. Issue tracking
What is it ?
Incident management = project management (ITIL) discipline with an ISO standard
A TODO list you keep on your device
A mental list you (may) remember before dev complete
A shared list (e.g spreadsheet) of description and metadata that is collaboratively
maintained
A release notes document that follows the software
A tracking system that maintains a database of incidents / issues / bugs, relevant
metadata, history information and secondary data (forensic data, resolution files)
A definitions game: what constitues an issue, who fixes it, who’s responsible ?
37. Issue tracking >= bug tracking
Defects may be in implementation (bugs) or elsewhere – requirements,
design, documentation – as defects
Why issue tracking ?
Capture
Record
Ensure accountability
Store resolution
Facilitate review
39. Incident management (ITIL) [14]
” An 'Incident' is any event which is not part of the standard operation of the
service and which causes, or may cause, an interruption or a reduction of the
quality of the service.”
“The objective of Incident Management is to restore normal operations as
quickly as possible with the least possible impact on either the business or the
user, at a cost-effective price.”
An ISO standard (ISO 20000)
An exam (ITIL certification)
A process
40. The TODO list
Simple
Easy to use and share
Can be version-controlled
Ships easily with the product as a release notes
However...
No workflow support
No history
No concurrency
41. Issue tracking systems [15]
Open source (Bugzilla, Mantis, Redmine)
Commercial (JIRA, ClearQuest, Trac)
Integrated (Eclipse, TFS / Visual Studio, NetBeans)
Auxiliary uses [18]
Knowledge repository
Communication and coordination hub
Communication channel
Context repository
43. Defect Triage Meeting / Bug Council
What is triage ?
Assemble stakeholders: development leads, managers, product owners,
test leads, etc
Ensure correct severity and priority for bug backlog
Rinse and repeat until all is triaged
45. Small group communication theory [24][25]
Systems theory
“…groups are open systems, which are influenced by such independent variables as;
openness to environment, interdependence, input variables, process variables, and
output variables”
Social exchange theory
“…[people] base the likeliness of developing a relationship with someone on the
perceived possible outcomes. When these outcomes are perceived to be greater, we
disclose more and develop a closer relationship with that person.”
Symbolic convergence theory
“In small groups, members develop private code words and signals that only those inside
the group understand. When groups achieve symbolic convergence, they have a sense of
community based on common experiences and understandings.”
Structuration theory
“[ST] views small groups as systems that both produce structures and are produced by
structures. This means that group members follow particular rules in their interactions
that produce some sort of outcome. That outcome eventually influences the group's
future interactions.”
Functional theory
“Functional Perspective claims that there are four functions for effective decision
making which include an analysis of the problem, goal setting, identification of
alternatives, and an evaluation of positive and negative characteristics, all of which are
equally important.”
46. Group development [26]
Life cycle models:
Describe the process of change as the unfolding of a prescribed and linear sequence of
stages following a program that is prefigured at the beginning of the cycle (decided
within the group or imposed on it).
Teleological models:
Describe change as a purposeful movement toward one or more goals, with adjustments
based on feedback from the environment.
Dialectical models:
Describe change as emerging from conflict between opposing entities and eventual
synthesis leading to the next cycle of conflict
Evolutionary models:
Describe change as emerging from a repeated cycle of variation, selection and retention
and generally apply to change in a population rather than change within an entity over
time.
47. Tuckman’s model of group development
Most popular team development model in agile
Tuckman identifies four stages (and one additional stage in later versions)
Forming
“Groups initially concern themselves with orientation accomplished primarily through testing. Such testing
serves to identify the boundaries of both interpersonal and task behaviors. Coincident with testing in the
interpersonal realm is the establishment of dependency relationships with leaders, other group members, or
pre-existing standards.”
Storming
The second point in the sequence is characterized by conflict
and polarization around interpersonal issues, with concomitant emotional responding in the task sphere. These
behaviors serve as resistance to group influence and task requirements”
Norming
“Resistance is overcome in the third stage in which in-group feeling and cohesiveness develop, new standards
evolve, and new roles are adopted. In the task realm, intimate, personal opinions are expressed”
Performing
“Finally, the group attains the fourth and final stage in which interpersonal structure becomes the tool of task
activities. Roles become flexible and functional, and group energy is channeled into the task. Structural issues
have been resolved, and structure can now become supportive of task performance”
51. Barriers to communication
Lack of unplanned contact [22]
Knowing who to contact about what,
Cost of initiating contact,
Ability to communicate effectively, and
Lack of trust, or willingness to communicate openly.
52. Organisation and technology as communication matrix
Conway’s law [21]
“organizations which design systems ... are
constrained to produce designs which are copies of
the communication structures of these organizations”
Brook’s law [22]
“if a project is late then adding
more people to the development will
slow the work down further”
“the addition of more people creates
communications overhead”
53. Communication tool support [19]
A distributed VCS aids in meeting communication needs[5]
Improve cooperation, communicate feeling / sentiment, measure progress
Reduce uncertainty, act as a knowledge hub
Flow communication at the horizontal level of an organisation
Groupware / CSCW applications
Document sharing (non-VCS’ed) : Quip, Dropbox, Screen Hero
Communications : Skype, Mail clients, Slack, Glip, HipChat, MatterMost
Project managerial : Trello, shared calendars, wikis, group sites, spread-sheets
60. References
1) Distributed vs centralized
http://www.drdobbs.com/architecture-and-design/distributed-vcs-understanding-the-paradi/240159530
2) Communication Tools for Distributed Software Development Teams
https://www.rti.org/pubs/rti_cpr07_virtualteam.pdf
3) Communication patterns and practices in software development networks
http://www.soberit.hut.fi/veto/english/Julkaisut/ComPatterns.pdf
4) Making sense of revision-control systems
http://cacm.acm.org/magazines/2009/9/38901-making-sense-of-revision-control-systems/fulltext
5) The role of Distributed Version Control Systems in team communication and learning
https://gupea.ub.gu.se/bitstream/2077/36326/1/gupea_2077_36326_1.pdf
6) Eclipse community survey 2014
http://www.slideshare.net/IanSkerrett/eclipse-community-survey-2014
7) Revision Control System (documentation)
https://www.gnu.org/software/rcs/manual/rcs.html
8) SVN ”Red book” manual
http://svnbook.red-bean.com/en/1.7/svn-book.pdf
9) Git ”Pro git” manual
https://progit2.s3.amazonaws.com/en/2016-01-21-82fa5/progit-en.998.pdf
61. References
10) Version control terminology
https://en.wikipedia.org/wiki/Version_control
11) Version control by example
http://ericsink.com/vcbe/vcbe_a4_lo.pdf
12) A visual guide to version control
http://betterexplained.com/articles/a-visual-guide-to-version-control/
13) Continuous integration
http://martinfowler.com/articles/continuousIntegration.html
14) Incident management (ITIL)
http://itlibrary.org/index.php?page=Incident_Management
15) Comparison of issue tracking systems
https://en.wikipedia.org/wiki/Comparison_of_issue-tracking_systems
16) ITSM best practices
http://www.itsm.info/ITSM%20Problem%20and%20Incident%20Best%20Practices.pdf
17) Issue Tracking Systems
http://is.muni.cz/th/60778/fi_m/thesis.pdf
62. References
18) The Social Nature of Issue Tracking in Software Engineering
http://lsmr.org/docs/bertram_msc_2009.pdf
19) Communication Tools for Distributed Software Development Teams
https://www.rti.org/pubs/rti_cpr07_virtualteam.pdf
20) Communication in Agile Teams
https://7bsp1018.wikispaces.com/Communication+in+Agile+Teams
21) Conway’s law
https://en.wikipedia.org/wiki/Conway%27s_law
22) Splitting the Organization and Integrating the Code: Conway's Law Revisited
https://www.cs.cmu.edu/afs/cs.cmu.edu/Web/People/jdh/collaboratory/research_papers/ICSE99.pdf
23) A Theory of Shared Understanding for Software Organizations
https://tspace.library.utoronto.ca/bitstream/1807/26150/6/ArandaGarcia_Jorge_201011_PhD_thesis.pdf
24) Small group communication theory
https://en.wikipedia.org/wiki/Communication_in_small_groups
25) Small group communication context
http://www.uky.edu/~drlane/capstone/group/
26) Group development
https://en.wikipedia.org/wiki/Group_development
Editor's Notes
Maintain deltas can be copying wholesale
Baseline
An approved revision of a document or source file from which subsequent changes can be made. See baselines, labels and tags.
Branch
A set of files under version control may be branched or forked at a point in time so that, from that time forward, two copies of those files may develop at different speeds or in different ways independently of each other.
Change
A change (or diff, or delta) represents a specific modification to a document under version control. The granularity of the modification considered a change varies between version control systems.
Change list
On many version control systems with atomic multi-change commits, a change list, change set, update, or patch identifies the set of changes made in a single commit. This can also represent a sequential view of the source code, allowing the examination of source "as of" any particular changelist ID.
Checkout
To check out (or co) is to create a local working copy from the repository. A user may specify a specific revision or obtain the latest. The term 'checkout' can also be used as a noun to describe the working copy.
Clone
Cloning means creating a repository containing the revisions from another repository. This is equivalent to pushing or pulling into an empty (newly initialized) repository. As a noun, two repositories can be said to be clones if they are kept synchronized, and contain the same revisions.
Commit
To commit (check in, ci or, more rarely, install, submit or record) is to write or merge the changes made in the working copy back to the repository. The terms 'commit' and 'checkin' can also be used as nouns to describe the new revision that is created as a result of committing.
Conflict
A conflict occurs when different parties make changes to the same document, and the system is unable to reconcile the changes. A user must resolve the conflict by combining the changes, or by selecting one change in favour of the other.
Delta compression
Most revision control software uses delta compression, which retains only the differences between successive versions of files. This allows for more efficient storage of many different versions of files.
Dynamic stream
A stream in which some or all file versions are mirrors of the parent stream's versions.
Export
exporting is the act of obtaining the files from the repository. It is similar to checking out except that it creates a clean directory tree without the version-control metadata used in a working copy. This is often used prior to publishing the contents, for example.
Forward integration
The process of merging changes made in the main trunk into a development (feature or team) branch.
Head
Also sometimes called tip, this refers to the most recent commit, either to the trunk or to a branch. The trunk and each branch have their own head, though HEAD is sometimes loosely used to refer to the trunk.[8]
Import
importing is the act of copying a local directory tree (that is not currently a working copy) into the repository for the first time.
Initialize
to create a new, empty repository.
Interleaved deltas
some revision control software uses Interleaved deltas, a method that allows to store the history of text based files in a more efficient way than by using Delta compression.
Label
See tag.
Mainline
Similar to trunk, but there can be a mainline for each branch.
Merge
A merge or integration is an operation in which two sets of changes are applied to a file or set of files. Some sample scenarios are as follows:
A user, working on a set of files, updates or syncs their working copy with changes made, and checked into the repository, by other users.[9]
A user tries to check in files that have been updated by others since the files were checked out, and the revision control software automatically merges the files (typically, after prompting the user if it should proceed with the automatic merge, and in some cases only doing so if the merge can be clearly and reasonably resolved).
A branch is created, the code in the files is independently edited, and the updated branch is later incorporated into a single, unified trunk.
A set of files is branched, a problem that existed before the branching is fixed in one branch, and the fix is then merged into the other branch. (This type of selective merge is sometimes known as a cherry pick to distinguish it from the complete merge in the previous case.)
Promote
The act of copying file content from a less controlled location into a more controlled location. For example, from a user's workspace into a repository, or from a stream to its parent.[10]
Pull, push
Copy revisions from one repository into another. Pull is initiated by the receiving repository, while push is initiated by the source. Fetch is sometimes used as a synonym for pull, or to mean a pull followed by an update.
Repository
The repository is where files' current and historical data are stored, often on a server. Sometimes also called a depot (for example, by SVK, AccuRev and Perforce).
Resolve
The act of user intervention to address a conflict between different changes to the same document.
Reverse integration
The process of merging different team branches into the main trunk of the versioning system.
Revision
Also version: A version is any change in form. In SVK, a Revision is the state at a point in time of the entire tree in the repository.
Share
The act of making one file or folder available in multiple branches at the same time. When a shared file is changed in one branch, it is changed in other branches.
Stream
A container for branched files that has a known relationship to other such containers. Streams form a hierarchy; each stream can inherit various properties (like versions, namespace, workflow rules, subscribers, etc.) from its parent stream.
Tag
A tag or label refers to an important snapshot in time, consistent across many files. These files at that point may all be tagged with a user-friendly, meaningful name or revision number. See baselines, labels and tags.
Trunk
The unique line of development that is not a branch (sometimes also called Baseline, Mainline or Master)
Update
An update (or sync, but sync can also mean a combined push and pull) merges changes made in the repository (by other people, for example) into the local working copy.[9] Update is also the term used by some CM tools (CM+, PLS, SMS) for the change package concept (see changelist). Synonymous with checkout in revision control systems that require each repository to have exactly one working copy (common in distributed systems)
Working copy
The working copy is the local copy of files from a repository, at a specific time or revision. All work done to the files in a repository is initially done on a working copy, hence the name. Conceptually, it is a sandbox.
FUD = fear, uncertainty, doubt / despair / desparation
1.2.4 Fundamental operations (RCS)
The checkin operation records the contents of the working file in the RCS file, assigning it a new (normally the next higher) revision number and recording the username, timestamp, state (a short symbol), and user-supplied log message (a textual description of the changes leading to that revision). It uses diff to find the differences between the tip of the default branch and the working file, thereby writing the minimal amount of information needed to be able to recreate the contents of the previous tip.
The checkout operation identifies a specific revision from the RCS file and either displays the content to standard output or instantiates a working file, overwriting any current instantiation with the selected revision. In either case, the content may undergo keyword expansion, which replaces text of the form ‘$Keyword$’ with (possibly) different text comprising the keyword and its value, depending on the current keyword expansion mode (see Substitution mode option).
Git
git init --bare /path/to/repo.git
git clone ssh://user@host/path/to/repo.git
git status # View the state of the repo
git add <some-file> # Stage a file
git commit # Commit a file</some-file>
git push origin master
git pull --rebase origin master
The definitions game also ties into the legal aspects: who has culpability and bears commercial and legal responsibility, what is the ambition / contractual stipulation for the software / system: perfection, some flaws allowed, ship it when it builds ?
“Groups initially concern themselves with orientation accomplished primarily through testing. Such testing serves to identify the boundaries of both interpersonal and task behaviors. Coincident with testing in the interpersonal realm is the establishment of dependency relationships with leaders, other group members, or pre-existing standards. It may be said that orientation, testing, and dependence constitute the group process of forming.
The second point in the sequence is characterized by conflict and polarization around interpersonal issues, with concomitant emotional responding in the task sphere. These behaviors serve as resistance to group influence and task requirements and may be labeled as storming.
Resistance is overcome in the third stage in which in-group feeling and cohesiveness develop, new standards evolve, and new roles are adopted. In the task realm, intimate, personal opinions are expressed. Thus, we have the stage of norming.
Finally, the group attains the fourth and final stage in which interpersonal structure becomes the tool of task activities. Roles become flexible and functional, and group energy is channeled into the task. Structural issues have been resolved, and structure can now become supportive of task performance. This stage can be labeled as performing.
4.2 Barriers to informal communication
It was clear from the interviews that splitting the
organization across sites presented barriers to informal
communication during the project, causing serious
problems. The primary barriers which led to coordination
breakdowns were
• Lack of unplanned contact,
• Knowing who to contact about what,
• Cost of initiating contact,
• Ability to communicate effectively, and
• Lack of trust, or willingness to communicate openly.
Our findings in each of these areas are discussed in the
following sections.
4.2.1 Lack of unplanned contact
In a typical co-located development effort, project members
run into each other in the hallway, at the coffee machine, in
the cafeteria, and elsewhere, on a frequent basis. They
discuss many things, including many that have nothing to
do with project work. But they also bring up the project as
a topic of discussion, especially things that are currently on
their minds, or are causing them some concern. This is not
necessarily explicitly to get help, or to formally notify
others of specific events, but rather just the usual sort of
friendly exchange, common in the workplace.
These sorts of unplanned contacts seem to be surprisingly
important in keeping projects coordinated. For example,
one interviewee told us of an incident in which, during the
course of such an unplanned discussion, it came to light that
he and a co-worker were making contradictory assumptions
about what board would have a particular digital signal
processing chip. They were able to resolve the issue in a
matter of a few minutes. But had they not discovered this
7
difference in assumptions as early as they did, this minor
problem could have become extremely costly.
What makes this and similar incidents significant is that the
participants were not aware of any need to communicate.
There was absolutely no reason either one knew of, even if
communication could be initiated very easily, to contact the
other person to discuss the project. Many conflicts in
assumptions follow this pattern, because project members
are often unaware of the assumptions they are making, or
that others might be making conflicting assumptions. This
form of coordination is predicated on relatively frequent
unplanned communication, during the course of which
relevant information and important issues may come to
light.
In our interviews, there were a number of problems that
seem to be the result of a general lack of information.
Developers at one site, for example, had developed a very
handy step tracing tool that providing information on
memory usage, CPU usage, and so on. While developers at
the same site used the tool extensively, those at the other
site did not know of the tool’s existence for months. It
often took weeks to deal with problems that could have
been solved very quickly with the tool. The fact that
developers at one site were aware of the tool and those at
the other site were not, makes it seem quite likely that
unplanned contacts played a significant role in
disseminating awareness of the tool.
Overall, several consequences seemed to flow from the
relative lack of unplanned contact. One was to make it
much less likely for conflicts and issues to be recognized.
If a developer is aware that an issue exists, it is possible to
take action to correct it. But since unplanned contact seems
to be one of the primary mechanisms for bringing issues to
light, many more conflicts went unrecognized until later in
the development. Another consequence was just the
general lack of background information across sites, i.e.,
how they work, what issues are most pressing to them, how
they typically communicate with each other, site-specific
vocabulary, and the responsibilities, expertise, and
relationships among those at the other site.
4.2.2 Knowing who to contact about what
Developers often reported great difficulty in determining
the appropriate person to contact at the other site. If there
was a need to coordinate on an interface specification, for
example, there was no straightforward way to find out who
was responsible for the component on the other site.
Developers found several workarounds for this problem,
although none was entirely satisfactory. One was to look
for clues buried in the documentation, such as names at the
bottom of web pages containing specifications. Often those
whose names were listed as authors were the correct person,
or could point to the correct person. Another frequently
used workaround was to contact a system architect at the
other site. Architects were known to have a very broad
knowledge of the system and who was doing what.
Once some of the developers had spent a significant amount
of time at the other site, these individuals became “contact
people” or “liaisons.” A visitor from the UK, for example,
would often be used by those at Germany to help them to
figure out who they should get hold of. When these people
returned to their own sites, they also often acted as the first
point of contact to people at the other site. In addition,
people at their own site regarded them as something of an
expert on the other location, and would often come to them
with questions about who was doing what, and about how
things worked at the other site. This, of course, imposed a
significant cost on the liaisons, particularly in the earlier
days when there were very few people with cross-site
experience.
4.2.3 Cost of initiating contact.
When developers are co-located, contact can generally be
initiated quite easily. There are many cues about who is
around, how available they are (e.g., is the door open?), and
so on. If someone’s office is only a few feet away, one
need expend little effort to stroll down the hall for a chat.
Perhaps more significantly, it is socially comfortable to do
so, since you know them well, know how to approach them,
and have a good sense of how important your question is
relative to what they seem to be doing at the moment. For
developers at different locations, the cost of initiating
contact was often much higher.
Who is available. One difficulty is simply determining if
someone is available. If they do not, e.g., answer the
phone, they could be momentarily tied up, or in the midst of
a crisis, or it could be a holiday, or they could be on a
vacation (of many weeks). Unlike the same-site case, it is
not easy to determine if the person being called is likely to
be available. Our interviewees reported it often took many
attempts, over many days and often involving several
people, to contact someone at the remote site. In the mean
time, progress was often held up.
Time difference. There is only one hour time difference
between the two sites, so one would not think that would
make much difference. But this can be very deceptive.
There is an hour lost at the beginning (or end) of each day,
but since typical lunch time was displaced by an hour, that
meant that another hour for each site was unavailable. Add
to that the fact that developers at the German site tended to
start earlier and finish earlier in the day, and an additional
hour or two of potential time overlap was lost. These time
differences meant that something that could be handled in a
matter of minutes for a same-site development would often
have to wait at least until the next business day.
Reduced responsiveness. People who know each other
relatively well, and know that they will be dealing with each
other frequently in the future tend to be more responsive to
each other’s needs and requests. Individuals at different
8
sites often seemed relatively unresponsive, e.g., not
answering e-mail or voice mail promptly. This again makes
it much more costly to initiate contact, since a single
message is less likely to be effective.
Several of our interviewees believed that it was difficult to
accurately gage the importance of a message from another
site. Often, they did not understand the context well
enough to determine why the question was being asked, or
to see why it was an important request and not merely
arbitrary or irrelevant.
Consequences: Three consequences of the high cost of
initiating contact were mentioned. First, developers did not
try to communicate as frequently as they would have had
they been co-located. They were more inclined to take the
risk that significant coordination issues would not arise if
they did not check assumptions, etc. People also reported
that they were not consulted on decisions made at the other
site that affected them. Second, cycle time was increased.
Even when messages were answered promptly, developers
believed that resolution was far more likely to stretch into
the next day. Worse, it often took several days, rather than
minutes or hours, to make the right contact. Finally, issues
had to be escalated more often, if an adequate and timely
response was not forthcoming.
4.2.4 Ability to communicate effectively
Once the right person has been identified and
communication is initiated, information must be conveyed
in a relatively complete and undistorted way for
communication to effectively support coordination.
What can’t be seen. The most obvious obstacle to
communication is simply not being able to see the same
things, have access to everything in the environment. This
problem took a variety of forms. For example, one lengthy
problem involved a hardware and software component from
an internal contractor. It was not behaving properly, and
the supplier could not duplicate the problem, even though
they had identical hardware and could access the software
remotely to ensure it was correct. However, they could not
“see” a faulty firmware chip, and the problem was very
difficult to solve.
Another example illustrates a very different form of this
problem, in a developer at one site could not see what a
tester at another site was doing. As the developer explained
it, the documentation essentially said, “leave blank if you
want to get all the faults on the system and this tester was
typing in ‘b-l-a-n-k,’ the actual word ‘blank’ into the system
and that’s it, a lot of problems occurred on that end.” The
developer could not duplicate error, naturally, and finally,
after several weeks of trying to straighten it out, went to the
other site, where the problem was spotted immediately.
Communication technologies. Face-to-face meeti