a modern approach in which the role of code reviewers
is grasped as quality assurance managers rather than
bug detectors (ibid). Additional reinforcement to this
approach can be found in recent research works, for
example the research conducted by (Bacchelli and
Bird, 2013), where practitioners were asked on how
they perceived the code review process. The main
findings suggest that practitioners see code review as
a way to enhance the quality of code and transfer
knowledge, rather than just fixing minor code faults.
Another important finding is that according to
practitioners, performing code review promotes team
awareness to code quality, and transparency of the
coding process. Most importantly, code review helps
all the involved parties to feel shared ownership of the
code; workers and managers feel that the code is being
examined by an expert on a regular basis, which helps
them to be less protective about their code (ibid).
Practitioners are encouraged to use tools that perform
automated code review in which the minor bugs and
faults are found, for static code review, and to perform
peer code review for better understanding and shared
ownership of the code. However, there is no standard
or conventional guideline for performing this type of
code review.
Our research is aimed to understand how code
review can be formalized and performed via shared
tools, for encouraging practitioners to take part in
collaborative code review and ensuring that all parties
have an accurate and complete understanding of their
role in this process.
2.2 Gamification
Gamification is aimed at increasing enjoyment of
tasks by integrating game mechanics in non-game
environments. This has been proven to increase
engagement, loyalty and fun (Deterding et al., 2011).
Gamification of computer-supported applications
addresses the use of techniques taken from games in
order to encourage users’ active participation and
contribution. In recent years, various gamification
elements have been embedded in different information
systems and applications in general, and in some
cases, in applications intended for the use of software
engineers in particular.
Gamification was used, for example, to encourage
students into doing software testing, in a system called
"Secret Ninja Testing," (Bell et al. 2011), where
students were presented with quests using characters
from various action movies, and were asked to act as
these characters while solving testing problems. They
reported that the system helped the students to be
exposed to the complete lifecycle of software
development, and encouraged students to choose
software engineering as a major in their studies. An
effort to encourage students to use version control was
also made using gamification, where a social software
application was used, mainly using the notification
feature (Singer and Schneider, 2012). The researchers
reported that using the social features was helpful for
many students in achieving an overall understanding
of their project.
Research was also conducted in the context of
using gamification starting at early stages of software
development. Dubois and Tamburrelli (2013)
identified three types of activities needed to be
performed when engaging gamification into software
engineering: analysis, integration, and evaluation, and
found that students performing these activities had
better results in software engineering. Another
research showed that using gamification in virtual
teams during requirement elicitation assisted the
teams to locate experts and share their knowledge
(Marshburn and Henry, 2013).
Recently, gamification has also been used in
practice, for example, to praise software developers
when the code they wrote was productive (Minelli et
al., 2015), and to encourage practitioners to practice
white box testing (Xie et al., 2015). In agile
development, gamification was used to encourage the
use of code conventions (Prause and Jarke, 2015).
3 AN EXPLORATORY INQUIRY
ON CODE REVIEW
PRACTICES
As a preliminary evaluation of the motivation for the
research, we posted a set of two questions in several
professional LinkedIn groups, in order to understand
how practitioners are guided to perform code review
in industry. The questions were: "Do you have any
defined procedures or instructions on your code
review process? Is it the same in all teams? Please
elaborate."
Twenty-two software practitioners responded to
these questions, providing interesting insights on the
code review process. Their answers reflected several
perceptions about code review, presented here with
some examples from their original quotes:
• Code review involves using static (automatic)
code analysis, for detecting simple bugs and
faults:
"Stash [an automatic tool] gives us an audit trail
of code reviews. This also means that we can