Nothing Special   »   [go: up one dir, main page]

skip to main content
research-article

Understanding Real-Time Collaborative Programming: A Study of Visual Studio Live Share

Published: 20 April 2024 Publication History

Abstract

Real-time collaborative programming (RCP) entails developers working simultaneously, regardless of their geographic locations. RCP differs from traditional asynchronous online programming methods, such as Git or SVN, where developers work independently and update the codebase at separate times. Although various real-time code collaboration tools (e.g., Visual Studio Live Share, Code with Me, and Replit) have kept emerging in recent years, none of the existing studies explicitly focus on a deep understanding of the processes or experiences associated with RCP. To this end, we combine interviews and an e-mail survey with the users of Visual Studio Live Share, aiming to understand (i) the scenarios, (ii) the requirements, and (iii) the challenges when developers participate in RCP. We find that developers participate in RCP in 18 different scenarios belonging to six categories, e.g., pair programming, group debugging, and code review. However, existing users’ attitudes toward the usefulness of the current RCP tools in these scenarios were significantly more negative than the expectations of potential users. As for the requirements, the most critical category is live editing, followed by the need for sharing terminals to enable hosts and guests to run commands and see the results, as well as focusing and following, which involves “following” the host’s edit location and “focusing” the guests’ attention on the host with a notification. Under these categories, we identify 17 requirements, but most of them are not well supported by current tools. In terms of challenges, we identify 19 challenges belonging to seven categories. The most severe category of challenges is lagging followed by permissions and conflicts. The above findings indicate that the current RCP tools and even collaborative environment need to be improved greatly and urgently. Based on these findings, we discuss the recommendations for different stakeholders, including practitioners, tool designers, and researchers.

References

[1]
Paola Accioly, Paulo Borba, and Guilherme Cavalcanti. 2018. Understanding semi-structured merge conflict characteristics in open-source java projects. Empirical Software Engineering 23, 4 (2018), 2051–2085.
[2]
Flora Amiti. 2020. Synchronous and asynchronous e-learning. European Journal of Open Education and E-Learning Studies 5, 2 (2020), 60–70.
[3]
Tim Anderson. 2021. A swarm in May is worth a load of hay, is it? JetBrains Code With Me collaborative programming tool released. (2021). Retrieved Dec, 2022 from https://www.theregister.com/2021/04/07/jetbrains_code_with_me/
[4]
Saulius Astromskis, Gabriele Bavota, Andrea Janes, Barbara Russo, and Massimiliano Di Penta. 2017. Patterns of developers behaviour: A 1000-hour industrial study. Journal of Systems and Software 132 (2017), 85–97.
[5]
Nicholas Bello. 2022. Replit. (2022). Retrieved Dec, 2022 from https://research.contrary.com/reports/replit
[6]
Pernille Bjorn, Jakob Bardram, Gabriela Avram, Liam Bannon, Alexander Boden, David Redmiles, Cleidson de Souza, and Volker Wulf. 2014. Global software development in a CSCW perspective. In Proceedings of the Companion Publication of the 17th ACM Conference on Computer Supported Cooperative Work & Social Computing. 301–304.
[7]
Caius Brindescu, Mihai Codoban, Sergii Shmarkatiuk, and Danny Dig. 2014. How do centralized and distributed version control systems impact software changes?. In Proceedings of the 36th International Conference on Software Engineering. 322–333.
[8]
Ray L. Chambers and Chris J. Skinner. 2003. Analysis of Survey Data. John Wiley & Sons.
[9]
An Ran Chen. 2019. An empirical study on leveraging logs for debugging production failures. In 2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion). IEEE, 126–128.
[10]
Charles H Chen and Philip J Guo. 2019. Improv: Teaching programming at scale via live coding. In Proceedings of the Sixth (2019) ACM Conference on Learning@ Scale. 1–10.
[11]
Yan Chen, Sang Won Lee, Yin Xie, YiWei Yang, Walter S Lasecki, and Steve Oney. 2017. Codeon: On-demand software development assistance. In Proceedings of the 2017 CHI Conference on Human Factors in Computing Systems. 6220–6231.
[12]
Kattiana Constantino, Shurui Zhou, Mauricio Souza, Eduardo Figueiredo, and Christian Kästner. 2020. Understanding collaborative software development: An interview study. In Proceedings of the 15th International Conference on Global Software Engineering. 55–65.
[13]
Bernardo José da Silva Estácio and Rafael Prikladnicki. 2015. Distributed pair programming: A systematic literature review. Information and Software Technology 63 (2015), 1–10. DOI:
[14]
Daniela Damian. 2001. An empirical study of requirements engineering in distributed software projects: Is distance negotiation more effective?. In Proceedings Eighth Asia-Pacific Software Engineering Conference. IEEE, 149–152.
[15]
Mariam El Mezouar, Daniel Alencar da Costa, Daniel M. German, and Ying Zou. 2021. Exploring the use of chatrooms by developers: An empirical study on slack and gitter. IEEE Transactions on Software Engineering 48, 10 (2021), 3988–4001.
[16]
Hongfei Fan, Kun Li, Xiangzhen Li, Tianyou Song, Wenzhe Zhang, Yang Shi, and Bowen Du. 2019. CoVSCode: A novel real-time collaborative programming environment for lightweight IDE. Applied Sciences 9, 21 (2019), 4642.
[17]
Hongfei Fan and Chengzheng Sun. 2012. Achieving integrated consistency maintenance and awareness in real-time collaborative programming environments: The CoEclipse approach. In Proceedings of the 2012 IEEE 16th International Conference on Computer Supported Cooperative Work in Design (CSCWD). IEEE, 94–101.
[18]
Hongfei Fan, Chengzheng Sun, and Haifeng Shen. 2012. ATCoPE: Any-time collaborative programming environment for seamless integration of real-time and non-real-time teamwork in software development. In Proceedings of the 2012 ACM International Conference on Supporting Group Work. 107–116.
[19]
Jon Froehlich and Paul Dourish. 2004. Unifying artifacts and activities in a visual tool for distributed software development teams. In Proceedings of the 26th International Conference on Software Engineering. IEEE, 387–396.
[20]
Erik Frøkjær, Morten Hertzum, and Kasper Hornbæk. 2000. Measuring usability: Are effectiveness, efficiency, and satisfaction really correlated?. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. 345–352.
[21]
D Randy Garrison, Martha Cleveland-Innes, Marguerite Koole, and James Kappelman. 2006. Revisiting methodological issues in transcript analysis: Negotiated coding and reliability. The Internet and Higher Education 9, 1 (2006), 1–8.
[22]
Carlo Ghezzi and Dino Mandrioli. 2005. The challenges of software engineering education. In International Conference on Software Engineering. Springer, 115–127.
[23]
Max Goldman, Greg Little, and Robert C. Miller. 2011. Real-time collaborative coding in a web IDE. In Proceedings of the 24th Annual ACM Symposium on User Interface Software and Technology. 155–164.
[24]
Carl Gutwin, Reagan Penner, and Kevin Schneider. 2004. Group awareness in distributed software development. In Proceedings of the 2004 ACM Conference on Computer Supported Cooperative Work. 72–81.
[25]
Anja Guzzi, Alberto Bacchelli, Yann Riche, and Arie Van Deursen. 2015. Supporting developers’ coordination in the IDE. In Proceedings of the 18th ACM Conference on Computer Supported Cooperative Work & Social Computing. 518–532.
[26]
Jo E. Hannay, Tore Dybå, Erik Arisholm, and Dag IK Sjøberg. 2009. The effectiveness of pair programming: A meta-analysis. Information and Software Technology 51, 7 (2009), 1110–1122.
[27]
James J. Heckman. 1990. Selection bias and self-selection. In Econometrics. Springer, 201–224.
[28]
James D. Herbsleb, Audris Mockus, Thomas A. Finholt, and Rebecca E. Grinter. 2000. Distance, dependencies, and delay in a global collaboration. In Proceedings of the 2000 ACM Conference on Computer Supported Cooperative Work. 319–328.
[29]
Onur Hisarciklilar and Jean-François Boujut. 2006. Reducing the” information gap” between synchronous and asynchronous co-operative design phases. In Virtual Concept’06. 67.
[30]
Branimir Hrzenjak. 2022. 5 common challenges of pair programming. (May2022). Retrieved Dec. 26, 2022 from https://www.shakebugs.com/blog/challenges-of-pair-programming/
[31]
Miguel Jiménez, Mario Piattini, and Aurora Vizcaíno. 2009. Challenges and improvements in distributed software development: A systematic review. Advances in Software Engineering 2009 (2009). 1–14.
[32]
Janne Lautamäki, Antti Nieminen, Johannes Koskinen, Timo Aho, Tommi Mikkonen, and Marc Englund. 2012. CoRED: Browser-based collaborative real-time editor for java web applications. In Proceedings of the ACM 2012 Conference on Computer Supported Cooperative Work. 1307–1316.
[33]
Joseph Lawrance, Christopher Bogart, Margaret Burnett, Rachel Bellamy, Kyle Rector, and Scott D Fleming. 2010. How programmers debug, revisited: An information foraging theory perspective. IEEE Transactions on Software Engineering 39, 2 (2010), 197–215.
[34]
Leandro Lopes, Rafael Prikladnicki, Jorge Audy, and Azriel Majdenbaum. 2005. Requirements specification in distributed software development a process proposal. Requirements Specification in Distributed Software Development a Process Proposal. Porto Alegre, RS, Brazil (2005).
[35]
Yifan Ma, Batu Qi, Wenhua Xu, Mingjie Wang, Bowen Du, and Hongfei Fan. 2023. Integrating real-time and non-real-time collaborative programming: Workflow, techniques, and prototypes. Proceedings of the ACM on Human–Computer Interaction 7, GROUP (2023), 1–19.
[36]
Yifan Ma, Zichao Yang, Brian Chiu, Yiteng Zhang, Jinfeng Jiang, Bowen Du, and Hongfei Fan. 2021. Supporting cross-platform real-time collaborative programming: Architecture, techniques, and prototype system. In Collaborative Computing: Networking, Applications and Worksharing: 17th EAI International Conference, CollaborateCom 2021, Virtual Event, October 16-18, 2021, Proceedings, Part II 17. Springer, 124–143.
[37]
Jetbrains Marketplace. 2023. Code With Me. (14 Nov.2023). Retrieved Nov, 2023 from https://plugins.jetbrains.com/plugin/14896-code-with-me
[38]
Visual Studio Marketplace. 2023. Microsoft Visual Studio Live Share. (14 Nov.2023). Retrieved Nov, 2023 from https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare
[39]
Joseph Maxwell. 1992. Understanding and validity in qualitative research. Harvard Educational Review 62, 3 (1992), 279–301.
[40]
Shane McKee, Nicholas Nelson, Anita Sarma, and Danny Dig. 2017. Software practitioner perspectives on merge conflicts and resolutions. In 2017 IEEE International Conference on Software Maintenance and Evolution (ICSME). IEEE, 467–478.
[41]
Patrick E. McKnight and Julius Najab. 2010. Mann–Whitney U Test. John Wiley & Sons, Ltd, 1–1. DOI:DOI:arXiv:https://onlinelibrary.wiley.com/doi/pdf/10.1002/9780470479216.corpsy0524
[42]
Audris Mockus, Roy T Fielding, and James Herbsleb. 2000. A case study of open source software development: The apache server. In Proceedings of the 22nd International Conference on Software Engineering. 263–272.
[43]
Kathryn E. Newcomer, Harry P. Hatry, and Joseph S. Wholey. 2015. Conducting semi-structured interviews. Handbook of Practical Program Evaluation. 492–505.
[44]
Antti Nieminen. 2012. Real-time collaborative resolving of merge conflicts. In 8th International Conference on Collaborative Computing: Networking, Applications and Worksharing (CollaborateCom). IEEE, 540–543.
[45]
Esteban Parra, Mohammad Alahmadi, Ashley Ellis, and Sonia Haiduc. 2022. A comparative study and analysis of developer communications on slack and Gitter. Empirical Software Engineering 27, 2 (2022), 1–33.
[46]
Fabio Petrillo, André Suslik Spritzer, Carla Maria Dal Sasso Freitas, and Marcelo Soares Pimenta. 2011. Interactive analysis of likert scale data using a multichart visualization tool. IHC+ CLIHC 67 (2011), 358–368.
[47]
Julie Ponto. 2015. Understanding and evaluating survey research. Journal of the Advanced Practitioner in Oncology 6, 2 (2015), 168.
[48]
Paul Ralph, Sebastian Baltes, Gianisa Adisaputri, Richard Torkar, Vladimir Kovalenko, Marcos Kalinowski, Nicole Novielli, Shin Yoo, Xavier Devroey, Xin Tan, et al. 2020. Pandemic programming. Empirical Software Engineering 25, 6 (2020), 4927–4961.
[49]
David I. Samudio and Thomas D. LaToza. 2022. Barriers in front-end web development. In 2022 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC). IEEE, 1–11.
[50]
Marc Shapiro, Nuno Preguiça, Carlos Baquero, and Marek Zawirski. 2011. Conflict-free replicated data types. In Symposium on Self-Stabilizing Systems. Springer, 386–400.
[51]
Lin Shi, Xiao Chen, Ye Yang, Hanzhi Jiang, Ziyou Jiang, Nan Niu, and Qing Wang. 2021. A first look at developers’ live chat on gitter. In Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 391–403.
[52]
Makoto Shiraishi, Hironori Washizaki, Yoshiaki Fukazawa, and Joseph Yoder. 2019. Mob programming: A systematic literature review. In 2019 IEEE 43rd Annual Computer Software and Applications Conference (COMPSAC), Vol. 2. IEEE, 616–621.
[53]
Edward Smith, Robert Loftin, Emerson Murphy-Hill, Christian Bird, and Thomas Zimmermann. 2013. Improving developer participation rates in surveys. In 2013 6th International Workshop on Cooperative and Human Aspects of Software Engineering (CHASE). IEEE, 89–92.
[54]
Diomidis Spinellis. 2005. Version control systems. IEEE Software 22, 5 (2005), 108–109.
[55]
Diomidis Spinellis. 2012. Git. IEEE Software 29, 3 (2012), 100–101.
[56]
Michael Stein, John Riedl, Sören J. Harner, and Vahid Mashayekhi. 1997. A case study of distributed, asynchronous software inspection. In Proceedings of the 19th International Conference on Software Engineering. 107–117.
[57]
Igor Steinmacher, Ana Paula Chaves, and Marco Aurélio Gerosa. 2013. Awareness support in distributed software development: A systematic review and mapping of the literature. Computer Supported Cooperative Work (CSCW) 22, 2 (2013), 113–158.
[58]
Chengzheng Sun and Clarence Ellis. 1998. Operational transformation in real-time group editors: Issues, algorithms, and achievements. In Proceedings of the 1998 ACM Conference on Computer Supported Cooperative Work. 59–68.
[59]
Xin Tan, Minghui Zhou, and Li Zhang. 2023. Understanding mentors. engagement in OSS communities via google summer of code. IEEE Transactions on Software Engineering 49, 5 (2023), 3106–3130.
[60]
Lehana Thabane, Jinhui Ma, Rong Chu, Ji Cheng, Afisi Ismaila, Lorena P Rios, Reid Robson, Marroon Thabane, Lora Giangregorio, and Charles H Goldsmith. 2010. A tutorial on pilot studies: The what, why and how. BMC Medical Research Methodology 10, 1 (2010), 1–10.
[61]
M. Rita Thissen, Jean M. Page, Madhavi C. Bharathi, and Toyia L. Austin. 2007. Communication tools for distributed software development teams. In Proceedings of the 2007 ACM SIGMIS CPR Conference on Computer Personnel Research: The Global Information Technology Workforce. 28–35.
[62]
Zhiyuan Wan, Xin Xia, Ahmed E Hassan, David Lo, Jianwei Yin, and Xiaohu Yang. 2018. Perceptions, expectations, and challenges in defect prediction. IEEE Transactions on Software Engineering 46, 11 (2018), 1241–1266.
[63]
April Yi Wang, Anant Mittal, Christopher Brooks, and Steve Oney. 2019. How data scientists use computational notebooks for real-time collaboration. Proceedings of the ACM on Human–Computer Interaction 3, CSCW (2019), 1–30.
[64]
Laurie Williams, Robert R. Kessler, Ward Cunningham, and Ron Jeffries. 2000. Strengthening the case for pair programming. IEEE Software 17, 4 (2000), 19–25.
[65]
Pornpit Wongthongtham, Elizabeth Chang, and Tharam Dillon. 2007. Multi-site distributed software development: Issues, solutions, and challenges. In International Conference on Computational Science and Its Applications. Springer, 346–359.
[66]
Jin Zhang. 2018. An investigation of technology design features for supporting real-time collaborative programming in an educational environment. (2018). Master Thesis. The Pennsylvania State University.
[67]
Thomas Zimmermann. 2016. Card-sorting: From text to themes. In Perspectives on Data Science for Software Engineering. Elsevier, 137–141.

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Transactions on Software Engineering and Methodology
ACM Transactions on Software Engineering and Methodology  Volume 33, Issue 4
May 2024
940 pages
EISSN:1557-7392
DOI:10.1145/3613665
  • Editor:
  • Mauro Pezzè
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 20 April 2024
Online AM: 27 January 2024
Accepted: 23 January 2024
Revised: 28 November 2023
Received: 11 April 2023
Published in TOSEM Volume 33, Issue 4

Check for updates

Author Tags

  1. Real-time collaboration
  2. software development
  3. online collaboration
  4. synchronous collaboration

Qualifiers

  • Research-article

Funding Sources

  • National Natural Science Foundation of China
  • Research Fund of Beihang University-Huawei Key Software Joint Laboratory

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 334
    Total Downloads
  • Downloads (Last 12 months)334
  • Downloads (Last 6 weeks)42
Reflects downloads up to 23 Sep 2024

Other Metrics

Citations

View Options

Get Access

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Full Text

View this article in Full Text.

Full Text

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media