SlideShare ist ein Scribd-Unternehmen logo
1 von 6
Downloaden Sie, um offline zu lesen
To document or not to document? An exploratory study
on developers' motivation to document code
Yulia Shmerlin1
, Irit Hadar1
, Doron Kliger2
, Hayim Makabee3
1
Information Systems Department, University of Haifa, Haifa, Israel
2
Economics Department, University of Haifa, Haifa, Israel
3
Yahoo! Research Labs, Haifa, Israel
{yshmerlin, hadari}@is.haifa.ac.il, kliger@econ.haifa .ac.il, makabee@yahoo-inc.com
Abstract. Technical debt represents the situation in a project where developers
accept compromises in one dimension of a system in order to meet urgent de-
mands in other dimensions. These compromises incur a “debt”, on which “inter-
est” has to be paid to maintain the long-term health of the project. One of the
elements of technical debt is documentation debt due to under-documentation of
the evolving system. In this exploratory study, our goal is to examine the different
aspects of developers' motivation to document code. Specifically, we aim to iden-
tify the motivating and hindering aspects of documentation as perceived by the
developers. The motivating aspects of code documenting we find include improv-
ing code comprehensibility, order, and quality. The hindering aspects include de-
velopers’ perception of documenting as a tedious, difficult, and time consuming
task that interrupts the coding process. These findings may serve as a basis for
developing guidelines toward improving documentation practices and encourag-
ing developers to document their code thus reducing documentation debt.
Keywords: Documentation, technical debt, motivation
1 Introduction
Technical debt is a metaphor describing a situation where long-term code quality is
traded for short-term gain, creating future pressure to remediate the expedient [2]. Some
technical-debt inducing elements are code-related and some are not. Documentation
debt [15] is one of the elements of technical debt; this form of debt occurs when soft-
ware products lack the necessary internal documentation. A detailed review of technical
debt and documentation debt can be found at [11].
Documentation contributes to understanding of [4], and communicating about, the
software system, thus making it more maintainable. Maintenance is known to be a sub-
stantial, as well as the most expensive, part in the software lifecycle [9]. Lacking and
outdated documentation is one of the main causes of the high cost of software mainte-
nance [8]; in other words, inappropriate documentation creates a technical debt to be
redeemed, with interest, in the maintenance phase.
Despite the importance of code documentation, studies show that code comments
are often neglected relatively to code development [6]. There may be several reasons
for this phenomenon: external, referring to the work environment, and internal, refer-
ring to the programmers themselves. For instance, an external reason could be that prac-
titioners often work under very strict deadlines and therefore choose to leave the docu-
mentation behind, and an internal reason, that documenting is not perceived a creative
activity, thus developers prefer solving algorithmic problems over writing documenta-
tion [2]. An additional internal reason related to developers' lack of motivation to doc-
ument is that not documenting behavior in some cases may promote job security [5].
The internal explanations may indicate that there are additional motivation-related
factors that cause developers' reluctance to document their code. Therefore, we believe
that it is important to investigate these factors further, as it will allow proposing effec-
tive solutions for encouraging documentation. This research aims to explore and better
understand developers' motivation for code documenting. Specifically, our research
question is: "What are the motivating and the hindering aspects that can influence de-
velopers’ code documenting behavior?"
The rest of the paper is organized as follows: section 2 presents related works with
regard to different aspects of documentation; section 3 focuses on the research method
of our ongoing research, with the preliminary findings presented in section 4. We dis-
cuss these findings and our future research directions in section 5.
2 Related Work
Software documentation refers to several types of documents, which accompany the
development process; for example, documents describing requirements, design, mar-
keting demands, end-user manuals, and technical documentation. The latter is docu-
mentation of code, algorithms, and interfaces, which is very important for understand-
ing software programs [14].
Code is not documented enough in practice, despite the high, agreed upon, im-
portance of code documentation, and specifically software engineers’ understanding of
its importance [14]. Moreover, the growth rate of code tends to be much higher than
the growth rate of comments, because developers’ tendency to neglect documenting
newly added code [6].
In agile development, face-to-face conversations are considered the most efficient
and effective method of conveying information and documentation is often paid less
attention. However, over half of the developers in agile development teams find docu-
mentation to be important or even very important while, at the same time, too little
documentation is available in their projects [12].
One of the reasons for the scarcity of documentation seems to be the lack of devel-
opers’ motivation to document their code. The Fogg Behavior Model (FBM) [7] sug-
gests that behavior depends on the following three factors: motivation, ability, and trig-
gers, each of which has several subcomponents. The motivation factor consists of three
core motivators, each of which having two sides: pleasure vs. pain, hope vs. fear and
social acceptance vs. rejection. In our ongoing research, we aim to address the three
factors of FBM. The current paper is a starting point, in which we focus on the motiva-
tion factor. To encourage documentation, a triggering environment has to be devised,
in which developers’ motivation will be channeled toward enhanced documentation. In
addition, the devised environment should also boost developers’ ability to document in
an efficient and informative manner.
Several research works have focused on investigating motivating and de-motivating
aspects in software engineering in general. Two of the main models that refer to soft-
ware developers' motivation are the job characteristics model, and the model of task
design [10]. These models examine the motivation for the software development pro-
fession as a whole [1]. However, as far as we know, no such model was proposed in
the context of code documentation, despite the evidence for its importance on the one
hand, and the relatively little attention it receives in practice on the other hand.
3 Method
The goal of this study is to explore and better understand what influences developers'
motivation for code documenting. Data collection and analysis were performed using
qualitative research methods based on the grounded theory research principles [13].
The research consists of three stages, planned according to its exploratory nature.
First, in order to gain an initial understanding of the problem, we conducted five in-
depth interviews. Second, based on the results of the interviews, we developed a pilot
questionnaire and distributed it among ten additional participants. Third, yet to be ac-
complished, stage, is a refinement of the questionnaire toward large-scale distribution.
The results reported here are based on the preliminary findings obtained in the first two
stages.
The participants of the study were software developers with various seniority levels,
with at least two years of development experience, employed in different software
firms. We interviewed five software developers (three women and two men). We used
semi-structured interviews, which consisted of predefined open questions, and also al-
lowed time for free discussion. The interviews, as well as the later constructed ques-
tionnaire, consisted of two types of questions: open-ended questions regarding motiva-
tion to document and background questions. Ten developers (two women and eight
men), with an average experience of about 7 years, filled in the pilot questionnaire. The
data elicited were inductively analyzed, classifying answers to emergent categories in
the investigated topics: motivating and hindering aspects of documentation.
4 Findings
Table 1 describes categories that emerged from the analysis of the answers regarding
the motivating aspects of code documenting. Specifically, we asked: “What do you
enjoy when documenting your code?"
Three participants did not provide any motivating aspects of documentation. One
jokingly answered: "the suffering," another asked with wonder: "enjoy?" and the third
replied: "Odd question... nothing. It's part of the job."
In order to identify the hindering aspects of documenting, we asked the participants:
“What don't you enjoy when documenting your code?” The categories that emerged
from the analysis of the answers are presented in Table 2.
In addition, we wanted to check whether peer or management feedback and com-
pany policy play a role in developers' motivation to document. For this purpose, we
asked the participants whether they recalled receiving positive or negative feedbacks
regarding documentation on code they had developed, or general instructions regarding
documentation.
Table 1. Categories of motivating aspects of documentation
Category Example
Increases code
comprehensibility
“Documenting the code helps me to better understand my own work."
"Makes it [the code] more readable, easier to understand later on for
me and for other people that look at the code.”
“It's useful when the code is complex and there is no good refactoring.
When going over the code, it [documentation] helps to remember.”
Increases order “It helps to keep things in order.”
"Adds more structure to the code."
Increases code
quality
"It [Documenting] helps to organize my thoughts. I find that this
[practice] is directly related to TDD- if you write comments prior to
the coding [instead of the tests as in TDD] before the code, it helps to
develop better code".
"Good documentation shows that your work was done perfectly."
Table 2. . Categories of hindering aspects of documentation
Four out of the ten questionnaire respondents replied that they had never received
any feedback on their documentation when participating in code reviews. The other six
participants recalled receiving positive feedbacks to documentation on the code they
had developed. For example: "Yes, [I was told] that it helped them [the colleagues] to
understand my code." Only two participants recalled receiving negative feedbacks on
their documentation, for example, that the documentation was not detailed enough.
All ten participants answered that that their company does not have a strict policy
regarding documentation, and one respondent mentioned an informal policy: "We [the
developers] are advised to document our code and our manager reminds us about it."
One of the developers stated that in his opinion, "being forced" to document by com-
pany policy would not be effective. "Most of the developers are creative people and do
Category Example
Tedious task "To explain complicated issues - why this was done in a particular way."
"To explain what each parameter does.”
"This [documentation] is no fun, because I solved the problem already."
Difficult task " To be formal",
"Sometimes it [documenting] is difficult, because I do not know how to
explain the change. For example, I entered a fix reusing a feature that
worked in a different place in the code."
Interruption of
coding
"Breaks the continuity of coding;"
"Documenting is difficult to do retroactively, after you had written the
method, because you think it is self-explanatory and that it is quite
obvious how it works."
Time constraints "It [documentation] takes time."
"When I have a tight deadline, documenting is left behind."
not like being told how to do their job". These results further emphasize the need to
focus on internal motivation of developers in order to encourage them to document,
which may be more effective than external ones.
5 Discussion and Future Work
Our study aimed to identify the aspects that influence developers' motivation to docu-
ment, as a first step toward meeting the objective of our ongoing research to increase
developers’ motivation and performance of documentation activities. The results of this
study indicate that developers are often aware of the importance of documentation,
which corresponds with previous findings[14]. However, commensurate with other pre-
vious studies, code documentation is often overlooked in practice [6].
We found that developers' reluctance to document is related to their perception of
the task of documenting as tedious, difficult and distracting from the main task of cod-
ing as well as being time consuming; however, most of them could find motivating
aspects as well. Accordingly, we contend that emphasizing the motivating aspects of
documentation tasks, for example the documentation contribution of the developers’
understanding and promoting the quality of their own code, and masking the hindering
aspects thereof, for example by making this a less tedious task, would allow devising a
solution that would increase developers' motivation to document.
These findings should be carefully considered, given the limitations of the study.
For example, our findings indicate that a motivating aspect of code documentation is
improving code comprehensibility. In this context, it is worth mentioning that the fact
that documentation promotes code understanding may also serve as a de-motivator to
documentation, for example, when producing unclear code promotes job security [5].
Noteworthy, this de-motivating reason did not appear in our findings. The absence of
evidence regarding such de-motivating reasons could indicate either that our partici-
pants do not subscribe to these reasons, or it could possibly reflect responders’ strategy
to withhold such ‘selfish’ reasons, a limitation rooted in our use of self-reporting meth-
ods for data collection.
As for hindering aspects of documenting, the participants stated that they do not
enjoy the writing process itself, and that code documenting breaks the continuity of
coding. Moreover, code documenting requires time, which is often a scarce resource in
developers' daily work. Time constraints were mentioned as a hindering aspect of doc-
umentation; however, the presence of this aspect in the interviews and questionnaires
was not as dominant as we had expected. This may indicate that the lack of documen-
tation in practice is mainly a result of developers’ perception of this task as not enjoy-
able, rather than it being time consuming, as perhaps is commonly believed.
The results confirm that currently there is a lack of motivation among developers to
document. Recall that motivation is a key factor upon which behavior is dependent
according to the FBM model [7]. Thus, we believe that our findings are an important
step in order to develop a solution that will encourage developers to document their
code.
This study has several limitations. First, our sample consists of Israeli participants
only. It is possible that cultural factors are related to motivational issues, and this study
has to be replicated on populations from different cultures. The full-scale survey will
focus on recruiting a large number of participants from different parts of the globe and
from different cultures. Second, our data gathering tools were interviews and question-
naires, and relied on self-reports of the participants; the data may therefore reflect self-
serving bias, to some extent.
In the next step of the research, we plan to distribute a survey for further validation
and extension of our findings. Subsequently, a solution will be sought using motiva-
tions theories for increasing developers' motivation to document their code.
References
[1] Beecham, S, Baddoo, N., Hall, T, Robinson, H., Sharp, H.: Motivation in Software
Engineering: A systematic literature review. Information and Software Technology, 50(9),
860-878 (2008)
[2] Clear, T.: Documentation and agile methods: striking a balance. ACM SIGCSE Bulletin,
35(2), 12-13(2003)
[3] Cunningham, W.: The WyCash portfolio management system. ACM SIGPLAN OOPS
Messenger 4(2) , 29-30 (1992)
[4] De Souza, S. C. B., Anquetil, N., De Oliveira, K. M.: A study of the documentation essential
to software maintenance. In: Proceedings of the 23rd annual international conference on
Design of communication: documenting & designing for pervasive information, pp. 68-75,
ACM (2005)
[5] Drevik, S.: How to comment code. Embedded Systems Programming 9, 58-65, (1996)
[6] Fluri, B., Wursch, M., Gall, H. C.: Do code and comments co-evolve? On the relation
between source code and comment changes. In Reverse Engineering 14th Working
Conference, 70-79. IEEE. (2007)
[7] Fogg, B. J.: A behavior model for persuasive design. In Proceedings of the 4th ACM Int.
Conference on Persuasive Technology, (2009)
[8] Martin, J., McClure, C.: Software Maintenance. The Problem and the Solutions. Prentice
Hall (1983)
[9] Seacord, R.C., Plakosh, D.A.: Modernizing legacy systems: software technologies,
engineering processes, and business practices. Addison-Wesley Professional (2003)
[10] Sharp, H., Baddoo, N., Beecham, S., Hall, T., Robinson, H.: Models of motivation in
software engineering. Information and Software Tech,51(1), 219-233, (2009)
[11] Shmerlin, Y., Kliger, D., Makabee, H.: Reducing Technical Debt: Using Persuasive
Technology for Encouraging Software Developers to Document Code. In Advanced
Information Systems Engineering Workshops. Springer International Publishing, 207-212,
(2014)
[12] Stettina, C.J., Heijstek, W.: Necessary and neglected? An empirical study of internal
documentation in agile software development teams. In Proceedings of the 29th ACM
international conference on Design of communication, 159-166, ACM, (2011)
[13] Strauss, A., Corbin, J. M.: Basics of qualitative research: Grounded theory procedures and
techniques. Sage Publications, (1990)
[14] Tenny, T.: Program readability: Procedures versus comments. Software Engineering, IEEE
Transactions on, 14(9), 1271-1279, (1988)
[15] Tom, E., Aurum, A., Vidgen, R.: An exploration of technical debt. Journal of Systems and
Software, 1498-1516(2013)

Weitere ähnliche Inhalte

Was ist angesagt?

CS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionCS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionSergii Shmarkatiuk
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineeringMustafa Gamal
 
Extreme & pair programming Slides ppt
Extreme & pair programming Slides pptExtreme & pair programming Slides ppt
Extreme & pair programming Slides pptMr SMAK
 
Difference between traditional and agile software development
Difference between traditional and agile software developmentDifference between traditional and agile software development
Difference between traditional and agile software developmentDeepaThirumurugan
 
CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...Sergii Shmarkatiuk
 
Why you should integrate peer code reviews in your software company
Why you should integrate peer code reviews in your software companyWhy you should integrate peer code reviews in your software company
Why you should integrate peer code reviews in your software companyMatts Devriendt
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingaaina_katyal
 
Pair Programming Presentation
Pair Programming PresentationPair Programming Presentation
Pair Programming PresentationThoughtWorks
 
Code quality as a built-in process
Code quality as a built-in processCode quality as a built-in process
Code quality as a built-in processElad Maimon
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingtuanvu8292
 
Software engineer job responsibilities
Software engineer job responsibilitiesSoftware engineer job responsibilities
Software engineer job responsibilitiesTeyha Mdiah
 
IS3242 Case Presentation
IS3242 Case PresentationIS3242 Case Presentation
IS3242 Case PresentationJ M
 
Intro to software development
Intro to software developmentIntro to software development
Intro to software developmentHawkman Academy
 
SFScon19 - Riccardo Felluga Andrea Janes - Personas-Driven Approach to Test C...
SFScon19 - Riccardo Felluga Andrea Janes - Personas-Driven Approach to Test C...SFScon19 - Riccardo Felluga Andrea Janes - Personas-Driven Approach to Test C...
SFScon19 - Riccardo Felluga Andrea Janes - Personas-Driven Approach to Test C...South Tyrol Free Software Conference
 
Chapter 5 Agile Software development
Chapter 5 Agile Software developmentChapter 5 Agile Software development
Chapter 5 Agile Software developmentDidarul Amin
 
Unit 1 sepm software myths
Unit 1 sepm software mythsUnit 1 sepm software myths
Unit 1 sepm software mythsKanchanPatil34
 
Test-Driven Development in the Corporate Workplace
Test-Driven Development in the Corporate WorkplaceTest-Driven Development in the Corporate Workplace
Test-Driven Development in the Corporate WorkplaceAhmed Owian
 
The five expertise of a software architect
The five expertise of a software architectThe five expertise of a software architect
The five expertise of a software architectLior Bar-On
 

Was ist angesagt? (20)

CS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionCS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution Reconstruction
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineering
 
Extreme & pair programming Slides ppt
Extreme & pair programming Slides pptExtreme & pair programming Slides ppt
Extreme & pair programming Slides ppt
 
Difference between traditional and agile software development
Difference between traditional and agile software developmentDifference between traditional and agile software development
Difference between traditional and agile software development
 
CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...
 
Why you should integrate peer code reviews in your software company
Why you should integrate peer code reviews in your software companyWhy you should integrate peer code reviews in your software company
Why you should integrate peer code reviews in your software company
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Pair Programming Presentation
Pair Programming PresentationPair Programming Presentation
Pair Programming Presentation
 
Code quality as a built-in process
Code quality as a built-in processCode quality as a built-in process
Code quality as a built-in process
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Software engineer job responsibilities
Software engineer job responsibilitiesSoftware engineer job responsibilities
Software engineer job responsibilities
 
IS3242 Case Presentation
IS3242 Case PresentationIS3242 Case Presentation
IS3242 Case Presentation
 
Intro to software development
Intro to software developmentIntro to software development
Intro to software development
 
SFScon19 - Riccardo Felluga Andrea Janes - Personas-Driven Approach to Test C...
SFScon19 - Riccardo Felluga Andrea Janes - Personas-Driven Approach to Test C...SFScon19 - Riccardo Felluga Andrea Janes - Personas-Driven Approach to Test C...
SFScon19 - Riccardo Felluga Andrea Janes - Personas-Driven Approach to Test C...
 
SE chapter 5
SE chapter 5SE chapter 5
SE chapter 5
 
Code review at large scale
Code review at large scaleCode review at large scale
Code review at large scale
 
Chapter 5 Agile Software development
Chapter 5 Agile Software developmentChapter 5 Agile Software development
Chapter 5 Agile Software development
 
Unit 1 sepm software myths
Unit 1 sepm software mythsUnit 1 sepm software myths
Unit 1 sepm software myths
 
Test-Driven Development in the Corporate Workplace
Test-Driven Development in the Corporate WorkplaceTest-Driven Development in the Corporate Workplace
Test-Driven Development in the Corporate Workplace
 
The five expertise of a software architect
The five expertise of a software architectThe five expertise of a software architect
The five expertise of a software architect
 

Ähnlich wie To document or not to document? An exploratory study on developers' motivation to document code

Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...Hayim Makabee
 
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...ijcseit
 
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...ijcseit
 
8118ijcseit01.pdf
8118ijcseit01.pdf8118ijcseit01.pdf
8118ijcseit01.pdfijcseit
 
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...ijcseit
 
A noble methodology for users’ work
A noble methodology for users’ workA noble methodology for users’ work
A noble methodology for users’ workijseajournal
 
Ko tse06-developers behaviour
Ko tse06-developers behaviourKo tse06-developers behaviour
Ko tse06-developers behaviourPtidejPoly
 
An Agile Software Development Framework
An Agile Software Development FrameworkAn Agile Software Development Framework
An Agile Software Development FrameworkWaqas Tariq
 
Agile Customer Engagement A Longitudinal Qualitative Case Study
Agile Customer Engagement  A Longitudinal Qualitative Case StudyAgile Customer Engagement  A Longitudinal Qualitative Case Study
Agile Customer Engagement A Longitudinal Qualitative Case StudyJackie Taylor
 
Distributed Software Development Process, Initiatives and Key Factors: A Syst...
Distributed Software Development Process, Initiatives and Key Factors: A Syst...Distributed Software Development Process, Initiatives and Key Factors: A Syst...
Distributed Software Development Process, Initiatives and Key Factors: A Syst...zillesubhan
 
Software Project Documentation - An Essence of Software Development
Software Project Documentation - An Essence of Software DevelopmentSoftware Project Documentation - An Essence of Software Development
Software Project Documentation - An Essence of Software DevelopmentEswar Publications
 
Quantitative And Qualitative Evaluation Of F/Oss Volunteer Participation In D...
Quantitative And Qualitative Evaluation Of F/Oss Volunteer Participation In D...Quantitative And Qualitative Evaluation Of F/Oss Volunteer Participation In D...
Quantitative And Qualitative Evaluation Of F/Oss Volunteer Participation In D...ijseajournal
 
Final Paper_Manik
Final Paper_ManikFinal Paper_Manik
Final Paper_ManikManik Verma
 
Appendix AProof of effectiveness of some of the agile methods us.docx
Appendix AProof of effectiveness of some of the agile methods us.docxAppendix AProof of effectiveness of some of the agile methods us.docx
Appendix AProof of effectiveness of some of the agile methods us.docxarmitageclaire49
 
Survey on adverse influencing factors in the way of successful requirement en...
Survey on adverse influencing factors in the way of successful requirement en...Survey on adverse influencing factors in the way of successful requirement en...
Survey on adverse influencing factors in the way of successful requirement en...iosrjce
 
Requirement Elicitation Model (REM) in the Context of Global Software Develop...
Requirement Elicitation Model (REM) in the Context of Global Software Develop...Requirement Elicitation Model (REM) in the Context of Global Software Develop...
Requirement Elicitation Model (REM) in the Context of Global Software Develop...IJAAS Team
 
A guide to deal with uncertainties in software project management
A guide to deal with uncertainties in software project managementA guide to deal with uncertainties in software project management
A guide to deal with uncertainties in software project managementijcsit
 
Software For Software Development Life Cycle
Software For Software Development Life CycleSoftware For Software Development Life Cycle
Software For Software Development Life CycleChristina Padilla
 

Ähnlich wie To document or not to document? An exploratory study on developers' motivation to document code (20)

Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
 
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
 
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
 
8118ijcseit01.pdf
8118ijcseit01.pdf8118ijcseit01.pdf
8118ijcseit01.pdf
 
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
EMPLOYERS’ NEEDS FOR COMPUTER SCIENCE, INFORMATION TECHNOLOGY AND SOFTWARE EN...
 
A noble methodology for users’ work
A noble methodology for users’ workA noble methodology for users’ work
A noble methodology for users’ work
 
Ko tse06-developers behaviour
Ko tse06-developers behaviourKo tse06-developers behaviour
Ko tse06-developers behaviour
 
An Agile Software Development Framework
An Agile Software Development FrameworkAn Agile Software Development Framework
An Agile Software Development Framework
 
Agile Customer Engagement A Longitudinal Qualitative Case Study
Agile Customer Engagement  A Longitudinal Qualitative Case StudyAgile Customer Engagement  A Longitudinal Qualitative Case Study
Agile Customer Engagement A Longitudinal Qualitative Case Study
 
Dsdm
DsdmDsdm
Dsdm
 
Distributed Software Development Process, Initiatives and Key Factors: A Syst...
Distributed Software Development Process, Initiatives and Key Factors: A Syst...Distributed Software Development Process, Initiatives and Key Factors: A Syst...
Distributed Software Development Process, Initiatives and Key Factors: A Syst...
 
Software Project Documentation - An Essence of Software Development
Software Project Documentation - An Essence of Software DevelopmentSoftware Project Documentation - An Essence of Software Development
Software Project Documentation - An Essence of Software Development
 
Quantitative And Qualitative Evaluation Of F/Oss Volunteer Participation In D...
Quantitative And Qualitative Evaluation Of F/Oss Volunteer Participation In D...Quantitative And Qualitative Evaluation Of F/Oss Volunteer Participation In D...
Quantitative And Qualitative Evaluation Of F/Oss Volunteer Participation In D...
 
Final Paper_Manik
Final Paper_ManikFinal Paper_Manik
Final Paper_Manik
 
Appendix AProof of effectiveness of some of the agile methods us.docx
Appendix AProof of effectiveness of some of the agile methods us.docxAppendix AProof of effectiveness of some of the agile methods us.docx
Appendix AProof of effectiveness of some of the agile methods us.docx
 
Survey on adverse influencing factors in the way of successful requirement en...
Survey on adverse influencing factors in the way of successful requirement en...Survey on adverse influencing factors in the way of successful requirement en...
Survey on adverse influencing factors in the way of successful requirement en...
 
G017264447
G017264447G017264447
G017264447
 
Requirement Elicitation Model (REM) in the Context of Global Software Develop...
Requirement Elicitation Model (REM) in the Context of Global Software Develop...Requirement Elicitation Model (REM) in the Context of Global Software Develop...
Requirement Elicitation Model (REM) in the Context of Global Software Develop...
 
A guide to deal with uncertainties in software project management
A guide to deal with uncertainties in software project managementA guide to deal with uncertainties in software project management
A guide to deal with uncertainties in software project management
 
Software For Software Development Life Cycle
Software For Software Development Life CycleSoftware For Software Development Life Cycle
Software For Software Development Life Cycle
 

Mehr von Hayim Makabee

Managing your Reputation
Managing your ReputationManaging your Reputation
Managing your ReputationHayim Makabee
 
Applications of Machine Learning - INDT Webinar
Applications of Machine Learning - INDT WebinarApplications of Machine Learning - INDT Webinar
Applications of Machine Learning - INDT WebinarHayim Makabee
 
Applications of Machine Learning
Applications of Machine LearningApplications of Machine Learning
Applications of Machine LearningHayim Makabee
 
Blue Ocean Strategy: KashKlik Use Case
Blue Ocean Strategy: KashKlik Use CaseBlue Ocean Strategy: KashKlik Use Case
Blue Ocean Strategy: KashKlik Use CaseHayim Makabee
 
Managing your Reputation Gvahim Webinar
Managing your Reputation Gvahim WebinarManaging your Reputation Gvahim Webinar
Managing your Reputation Gvahim WebinarHayim Makabee
 
Explainable Machine Learning (Explainable ML)
Explainable Machine Learning (Explainable ML)Explainable Machine Learning (Explainable ML)
Explainable Machine Learning (Explainable ML)Hayim Makabee
 
Automated Machine Learning (Auto ML)
Automated Machine Learning (Auto ML)Automated Machine Learning (Auto ML)
Automated Machine Learning (Auto ML)Hayim Makabee
 
Managing your Reputation
Managing your ReputationManaging your Reputation
Managing your ReputationHayim Makabee
 
The Story of a Young Oleh (Immigrant in Israel)
The Story of a Young Oleh (Immigrant in Israel)The Story of a Young Oleh (Immigrant in Israel)
The Story of a Young Oleh (Immigrant in Israel)Hayim Makabee
 
Software Architecture for Agile Development
Software Architecture for Agile DevelopmentSoftware Architecture for Agile Development
Software Architecture for Agile DevelopmentHayim Makabee
 
Adaptable Designs for Agile Software Development
Adaptable Designs for Agile  Software DevelopmentAdaptable Designs for Agile  Software Development
Adaptable Designs for Agile Software DevelopmentHayim Makabee
 
Applications of Machine Learning
Applications of Machine LearningApplications of Machine Learning
Applications of Machine LearningHayim Makabee
 
Antifragile Software Design
Antifragile Software DesignAntifragile Software Design
Antifragile Software DesignHayim Makabee
 
The SOLID Principles Illustrated by Design Patterns
The SOLID Principles Illustrated by Design PatternsThe SOLID Principles Illustrated by Design Patterns
The SOLID Principles Illustrated by Design PatternsHayim Makabee
 
Aliyah: Looking for a hi-tech job in Israel
Aliyah: Looking for a hi-tech job in IsraelAliyah: Looking for a hi-tech job in Israel
Aliyah: Looking for a hi-tech job in IsraelHayim Makabee
 
Software Quality Attributes
Software Quality AttributesSoftware Quality Attributes
Software Quality AttributesHayim Makabee
 
The Role of the Software Architect
The Role of the Software ArchitectThe Role of the Software Architect
The Role of the Software ArchitectHayim Makabee
 
ADUF - Adaptable Design Up Front
ADUF -  Adaptable Design Up FrontADUF -  Adaptable Design Up Front
ADUF - Adaptable Design Up FrontHayim Makabee
 
An Event-Driven Approach for the Separation of Concerns
An Event-Driven Approach for the Separation of ConcernsAn Event-Driven Approach for the Separation of Concerns
An Event-Driven Approach for the Separation of ConcernsHayim Makabee
 
Hierarchical Composable Optimization of Web Pages
Hierarchical Composable Optimization of Web PagesHierarchical Composable Optimization of Web Pages
Hierarchical Composable Optimization of Web PagesHayim Makabee
 

Mehr von Hayim Makabee (20)

Managing your Reputation
Managing your ReputationManaging your Reputation
Managing your Reputation
 
Applications of Machine Learning - INDT Webinar
Applications of Machine Learning - INDT WebinarApplications of Machine Learning - INDT Webinar
Applications of Machine Learning - INDT Webinar
 
Applications of Machine Learning
Applications of Machine LearningApplications of Machine Learning
Applications of Machine Learning
 
Blue Ocean Strategy: KashKlik Use Case
Blue Ocean Strategy: KashKlik Use CaseBlue Ocean Strategy: KashKlik Use Case
Blue Ocean Strategy: KashKlik Use Case
 
Managing your Reputation Gvahim Webinar
Managing your Reputation Gvahim WebinarManaging your Reputation Gvahim Webinar
Managing your Reputation Gvahim Webinar
 
Explainable Machine Learning (Explainable ML)
Explainable Machine Learning (Explainable ML)Explainable Machine Learning (Explainable ML)
Explainable Machine Learning (Explainable ML)
 
Automated Machine Learning (Auto ML)
Automated Machine Learning (Auto ML)Automated Machine Learning (Auto ML)
Automated Machine Learning (Auto ML)
 
Managing your Reputation
Managing your ReputationManaging your Reputation
Managing your Reputation
 
The Story of a Young Oleh (Immigrant in Israel)
The Story of a Young Oleh (Immigrant in Israel)The Story of a Young Oleh (Immigrant in Israel)
The Story of a Young Oleh (Immigrant in Israel)
 
Software Architecture for Agile Development
Software Architecture for Agile DevelopmentSoftware Architecture for Agile Development
Software Architecture for Agile Development
 
Adaptable Designs for Agile Software Development
Adaptable Designs for Agile  Software DevelopmentAdaptable Designs for Agile  Software Development
Adaptable Designs for Agile Software Development
 
Applications of Machine Learning
Applications of Machine LearningApplications of Machine Learning
Applications of Machine Learning
 
Antifragile Software Design
Antifragile Software DesignAntifragile Software Design
Antifragile Software Design
 
The SOLID Principles Illustrated by Design Patterns
The SOLID Principles Illustrated by Design PatternsThe SOLID Principles Illustrated by Design Patterns
The SOLID Principles Illustrated by Design Patterns
 
Aliyah: Looking for a hi-tech job in Israel
Aliyah: Looking for a hi-tech job in IsraelAliyah: Looking for a hi-tech job in Israel
Aliyah: Looking for a hi-tech job in Israel
 
Software Quality Attributes
Software Quality AttributesSoftware Quality Attributes
Software Quality Attributes
 
The Role of the Software Architect
The Role of the Software ArchitectThe Role of the Software Architect
The Role of the Software Architect
 
ADUF - Adaptable Design Up Front
ADUF -  Adaptable Design Up FrontADUF -  Adaptable Design Up Front
ADUF - Adaptable Design Up Front
 
An Event-Driven Approach for the Separation of Concerns
An Event-Driven Approach for the Separation of ConcernsAn Event-Driven Approach for the Separation of Concerns
An Event-Driven Approach for the Separation of Concerns
 
Hierarchical Composable Optimization of Web Pages
Hierarchical Composable Optimization of Web PagesHierarchical Composable Optimization of Web Pages
Hierarchical Composable Optimization of Web Pages
 

Kürzlich hochgeladen

Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 

Kürzlich hochgeladen (20)

Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 

To document or not to document? An exploratory study on developers' motivation to document code

  • 1. To document or not to document? An exploratory study on developers' motivation to document code Yulia Shmerlin1 , Irit Hadar1 , Doron Kliger2 , Hayim Makabee3 1 Information Systems Department, University of Haifa, Haifa, Israel 2 Economics Department, University of Haifa, Haifa, Israel 3 Yahoo! Research Labs, Haifa, Israel {yshmerlin, hadari}@is.haifa.ac.il, kliger@econ.haifa .ac.il, makabee@yahoo-inc.com Abstract. Technical debt represents the situation in a project where developers accept compromises in one dimension of a system in order to meet urgent de- mands in other dimensions. These compromises incur a “debt”, on which “inter- est” has to be paid to maintain the long-term health of the project. One of the elements of technical debt is documentation debt due to under-documentation of the evolving system. In this exploratory study, our goal is to examine the different aspects of developers' motivation to document code. Specifically, we aim to iden- tify the motivating and hindering aspects of documentation as perceived by the developers. The motivating aspects of code documenting we find include improv- ing code comprehensibility, order, and quality. The hindering aspects include de- velopers’ perception of documenting as a tedious, difficult, and time consuming task that interrupts the coding process. These findings may serve as a basis for developing guidelines toward improving documentation practices and encourag- ing developers to document their code thus reducing documentation debt. Keywords: Documentation, technical debt, motivation 1 Introduction Technical debt is a metaphor describing a situation where long-term code quality is traded for short-term gain, creating future pressure to remediate the expedient [2]. Some technical-debt inducing elements are code-related and some are not. Documentation debt [15] is one of the elements of technical debt; this form of debt occurs when soft- ware products lack the necessary internal documentation. A detailed review of technical debt and documentation debt can be found at [11]. Documentation contributes to understanding of [4], and communicating about, the software system, thus making it more maintainable. Maintenance is known to be a sub- stantial, as well as the most expensive, part in the software lifecycle [9]. Lacking and outdated documentation is one of the main causes of the high cost of software mainte- nance [8]; in other words, inappropriate documentation creates a technical debt to be redeemed, with interest, in the maintenance phase. Despite the importance of code documentation, studies show that code comments are often neglected relatively to code development [6]. There may be several reasons
  • 2. for this phenomenon: external, referring to the work environment, and internal, refer- ring to the programmers themselves. For instance, an external reason could be that prac- titioners often work under very strict deadlines and therefore choose to leave the docu- mentation behind, and an internal reason, that documenting is not perceived a creative activity, thus developers prefer solving algorithmic problems over writing documenta- tion [2]. An additional internal reason related to developers' lack of motivation to doc- ument is that not documenting behavior in some cases may promote job security [5]. The internal explanations may indicate that there are additional motivation-related factors that cause developers' reluctance to document their code. Therefore, we believe that it is important to investigate these factors further, as it will allow proposing effec- tive solutions for encouraging documentation. This research aims to explore and better understand developers' motivation for code documenting. Specifically, our research question is: "What are the motivating and the hindering aspects that can influence de- velopers’ code documenting behavior?" The rest of the paper is organized as follows: section 2 presents related works with regard to different aspects of documentation; section 3 focuses on the research method of our ongoing research, with the preliminary findings presented in section 4. We dis- cuss these findings and our future research directions in section 5. 2 Related Work Software documentation refers to several types of documents, which accompany the development process; for example, documents describing requirements, design, mar- keting demands, end-user manuals, and technical documentation. The latter is docu- mentation of code, algorithms, and interfaces, which is very important for understand- ing software programs [14]. Code is not documented enough in practice, despite the high, agreed upon, im- portance of code documentation, and specifically software engineers’ understanding of its importance [14]. Moreover, the growth rate of code tends to be much higher than the growth rate of comments, because developers’ tendency to neglect documenting newly added code [6]. In agile development, face-to-face conversations are considered the most efficient and effective method of conveying information and documentation is often paid less attention. However, over half of the developers in agile development teams find docu- mentation to be important or even very important while, at the same time, too little documentation is available in their projects [12]. One of the reasons for the scarcity of documentation seems to be the lack of devel- opers’ motivation to document their code. The Fogg Behavior Model (FBM) [7] sug- gests that behavior depends on the following three factors: motivation, ability, and trig- gers, each of which has several subcomponents. The motivation factor consists of three core motivators, each of which having two sides: pleasure vs. pain, hope vs. fear and social acceptance vs. rejection. In our ongoing research, we aim to address the three factors of FBM. The current paper is a starting point, in which we focus on the motiva- tion factor. To encourage documentation, a triggering environment has to be devised, in which developers’ motivation will be channeled toward enhanced documentation. In
  • 3. addition, the devised environment should also boost developers’ ability to document in an efficient and informative manner. Several research works have focused on investigating motivating and de-motivating aspects in software engineering in general. Two of the main models that refer to soft- ware developers' motivation are the job characteristics model, and the model of task design [10]. These models examine the motivation for the software development pro- fession as a whole [1]. However, as far as we know, no such model was proposed in the context of code documentation, despite the evidence for its importance on the one hand, and the relatively little attention it receives in practice on the other hand. 3 Method The goal of this study is to explore and better understand what influences developers' motivation for code documenting. Data collection and analysis were performed using qualitative research methods based on the grounded theory research principles [13]. The research consists of three stages, planned according to its exploratory nature. First, in order to gain an initial understanding of the problem, we conducted five in- depth interviews. Second, based on the results of the interviews, we developed a pilot questionnaire and distributed it among ten additional participants. Third, yet to be ac- complished, stage, is a refinement of the questionnaire toward large-scale distribution. The results reported here are based on the preliminary findings obtained in the first two stages. The participants of the study were software developers with various seniority levels, with at least two years of development experience, employed in different software firms. We interviewed five software developers (three women and two men). We used semi-structured interviews, which consisted of predefined open questions, and also al- lowed time for free discussion. The interviews, as well as the later constructed ques- tionnaire, consisted of two types of questions: open-ended questions regarding motiva- tion to document and background questions. Ten developers (two women and eight men), with an average experience of about 7 years, filled in the pilot questionnaire. The data elicited were inductively analyzed, classifying answers to emergent categories in the investigated topics: motivating and hindering aspects of documentation. 4 Findings Table 1 describes categories that emerged from the analysis of the answers regarding the motivating aspects of code documenting. Specifically, we asked: “What do you enjoy when documenting your code?" Three participants did not provide any motivating aspects of documentation. One jokingly answered: "the suffering," another asked with wonder: "enjoy?" and the third replied: "Odd question... nothing. It's part of the job." In order to identify the hindering aspects of documenting, we asked the participants: “What don't you enjoy when documenting your code?” The categories that emerged from the analysis of the answers are presented in Table 2.
  • 4. In addition, we wanted to check whether peer or management feedback and com- pany policy play a role in developers' motivation to document. For this purpose, we asked the participants whether they recalled receiving positive or negative feedbacks regarding documentation on code they had developed, or general instructions regarding documentation. Table 1. Categories of motivating aspects of documentation Category Example Increases code comprehensibility “Documenting the code helps me to better understand my own work." "Makes it [the code] more readable, easier to understand later on for me and for other people that look at the code.” “It's useful when the code is complex and there is no good refactoring. When going over the code, it [documentation] helps to remember.” Increases order “It helps to keep things in order.” "Adds more structure to the code." Increases code quality "It [Documenting] helps to organize my thoughts. I find that this [practice] is directly related to TDD- if you write comments prior to the coding [instead of the tests as in TDD] before the code, it helps to develop better code". "Good documentation shows that your work was done perfectly." Table 2. . Categories of hindering aspects of documentation Four out of the ten questionnaire respondents replied that they had never received any feedback on their documentation when participating in code reviews. The other six participants recalled receiving positive feedbacks to documentation on the code they had developed. For example: "Yes, [I was told] that it helped them [the colleagues] to understand my code." Only two participants recalled receiving negative feedbacks on their documentation, for example, that the documentation was not detailed enough. All ten participants answered that that their company does not have a strict policy regarding documentation, and one respondent mentioned an informal policy: "We [the developers] are advised to document our code and our manager reminds us about it." One of the developers stated that in his opinion, "being forced" to document by com- pany policy would not be effective. "Most of the developers are creative people and do Category Example Tedious task "To explain complicated issues - why this was done in a particular way." "To explain what each parameter does.” "This [documentation] is no fun, because I solved the problem already." Difficult task " To be formal", "Sometimes it [documenting] is difficult, because I do not know how to explain the change. For example, I entered a fix reusing a feature that worked in a different place in the code." Interruption of coding "Breaks the continuity of coding;" "Documenting is difficult to do retroactively, after you had written the method, because you think it is self-explanatory and that it is quite obvious how it works." Time constraints "It [documentation] takes time." "When I have a tight deadline, documenting is left behind."
  • 5. not like being told how to do their job". These results further emphasize the need to focus on internal motivation of developers in order to encourage them to document, which may be more effective than external ones. 5 Discussion and Future Work Our study aimed to identify the aspects that influence developers' motivation to docu- ment, as a first step toward meeting the objective of our ongoing research to increase developers’ motivation and performance of documentation activities. The results of this study indicate that developers are often aware of the importance of documentation, which corresponds with previous findings[14]. However, commensurate with other pre- vious studies, code documentation is often overlooked in practice [6]. We found that developers' reluctance to document is related to their perception of the task of documenting as tedious, difficult and distracting from the main task of cod- ing as well as being time consuming; however, most of them could find motivating aspects as well. Accordingly, we contend that emphasizing the motivating aspects of documentation tasks, for example the documentation contribution of the developers’ understanding and promoting the quality of their own code, and masking the hindering aspects thereof, for example by making this a less tedious task, would allow devising a solution that would increase developers' motivation to document. These findings should be carefully considered, given the limitations of the study. For example, our findings indicate that a motivating aspect of code documentation is improving code comprehensibility. In this context, it is worth mentioning that the fact that documentation promotes code understanding may also serve as a de-motivator to documentation, for example, when producing unclear code promotes job security [5]. Noteworthy, this de-motivating reason did not appear in our findings. The absence of evidence regarding such de-motivating reasons could indicate either that our partici- pants do not subscribe to these reasons, or it could possibly reflect responders’ strategy to withhold such ‘selfish’ reasons, a limitation rooted in our use of self-reporting meth- ods for data collection. As for hindering aspects of documenting, the participants stated that they do not enjoy the writing process itself, and that code documenting breaks the continuity of coding. Moreover, code documenting requires time, which is often a scarce resource in developers' daily work. Time constraints were mentioned as a hindering aspect of doc- umentation; however, the presence of this aspect in the interviews and questionnaires was not as dominant as we had expected. This may indicate that the lack of documen- tation in practice is mainly a result of developers’ perception of this task as not enjoy- able, rather than it being time consuming, as perhaps is commonly believed. The results confirm that currently there is a lack of motivation among developers to document. Recall that motivation is a key factor upon which behavior is dependent according to the FBM model [7]. Thus, we believe that our findings are an important step in order to develop a solution that will encourage developers to document their code. This study has several limitations. First, our sample consists of Israeli participants only. It is possible that cultural factors are related to motivational issues, and this study has to be replicated on populations from different cultures. The full-scale survey will focus on recruiting a large number of participants from different parts of the globe and
  • 6. from different cultures. Second, our data gathering tools were interviews and question- naires, and relied on self-reports of the participants; the data may therefore reflect self- serving bias, to some extent. In the next step of the research, we plan to distribute a survey for further validation and extension of our findings. Subsequently, a solution will be sought using motiva- tions theories for increasing developers' motivation to document their code. References [1] Beecham, S, Baddoo, N., Hall, T, Robinson, H., Sharp, H.: Motivation in Software Engineering: A systematic literature review. Information and Software Technology, 50(9), 860-878 (2008) [2] Clear, T.: Documentation and agile methods: striking a balance. ACM SIGCSE Bulletin, 35(2), 12-13(2003) [3] Cunningham, W.: The WyCash portfolio management system. ACM SIGPLAN OOPS Messenger 4(2) , 29-30 (1992) [4] De Souza, S. C. B., Anquetil, N., De Oliveira, K. M.: A study of the documentation essential to software maintenance. In: Proceedings of the 23rd annual international conference on Design of communication: documenting & designing for pervasive information, pp. 68-75, ACM (2005) [5] Drevik, S.: How to comment code. Embedded Systems Programming 9, 58-65, (1996) [6] Fluri, B., Wursch, M., Gall, H. C.: Do code and comments co-evolve? On the relation between source code and comment changes. In Reverse Engineering 14th Working Conference, 70-79. IEEE. (2007) [7] Fogg, B. J.: A behavior model for persuasive design. In Proceedings of the 4th ACM Int. Conference on Persuasive Technology, (2009) [8] Martin, J., McClure, C.: Software Maintenance. The Problem and the Solutions. Prentice Hall (1983) [9] Seacord, R.C., Plakosh, D.A.: Modernizing legacy systems: software technologies, engineering processes, and business practices. Addison-Wesley Professional (2003) [10] Sharp, H., Baddoo, N., Beecham, S., Hall, T., Robinson, H.: Models of motivation in software engineering. Information and Software Tech,51(1), 219-233, (2009) [11] Shmerlin, Y., Kliger, D., Makabee, H.: Reducing Technical Debt: Using Persuasive Technology for Encouraging Software Developers to Document Code. In Advanced Information Systems Engineering Workshops. Springer International Publishing, 207-212, (2014) [12] Stettina, C.J., Heijstek, W.: Necessary and neglected? An empirical study of internal documentation in agile software development teams. In Proceedings of the 29th ACM international conference on Design of communication, 159-166, ACM, (2011) [13] Strauss, A., Corbin, J. M.: Basics of qualitative research: Grounded theory procedures and techniques. Sage Publications, (1990) [14] Tenny, T.: Program readability: Procedures versus comments. Software Engineering, IEEE Transactions on, 14(9), 1271-1279, (1988) [15] Tom, E., Aurum, A., Vidgen, R.: An exploration of technical debt. Journal of Systems and Software, 1498-1516(2013)