Philip Guo (Phil Guo, Philip J. Guo, Philip Jia Guo, pgbovine)

CodePilot: Scaffolding End-to-End Collaborative Software Development for Novice Programmers

research paper summary
CodePilot: Scaffolding End-to-End Collaborative Software Development for Novice Programmers. Jeremy Warner and Philip J. Guo. ACM Conference on Human Factors in Computing Systems (CHI), 2017.
Novice programmers often have trouble installing, configuring, and managing disparate tools (e.g., version control systems, testing infrastructure, bug trackers) that are required to become productive in a modern collaborative software development environment. To lower the barriers to entry into software development, we created a prototype IDE for novices called CodePilot, which is, to our knowledge, the first attempt to integrate coding, testing, bug reporting, and version control management into a real-time collaborative system. CodePilot enables multiple users to connect to a web-based programming session and work together on several major phases of software development. An eight-subject exploratory user study found that first-time users of CodePilot spontaneously used it to assume roles such as developer/tester and developer/assistant when creating a web application together in pairs. Users felt that CodePilot could aid in scaffolding for novices, situational awareness, and lowering barriers to impromptu collaboration.
@inproceedings{WarnerCHI2017,
 author = {Warner, Jeremy and Guo, Philip J.},
 title = {CodePilot: Scaffolding End-to-End Collaborative Software Development for Novice Programmers},
 booktitle = {Proceedings of the 2017 CHI Conference on Human Factors in Computing Systems},
 series = {CHI '17},
 year = {2017},
 isbn = {978-1-4503-4655-9},
 location = {Denver, Colorado, USA},
 pages = {1136--1141},
 numpages = {6},
 url = {http://doi.acm.org/10.1145/3025453.3025876},
 doi = {10.1145/3025453.3025876},
 acmid = {3025876},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {collaborative ide, novice programmers, pair programming},
}

Plenty of tools can already help novices learn to code, but real-world software development is about much more than simply coding. To be able to work well in any software organization, developers must also learn to coordinate with teammates via version control systems, bug/issue tracking tools, testing/DevOps infrastructure, and activities such as pair programming.

How can we get novices familiar with these important concepts? To even get started nowadays, they must first jump through the hoops of installing, configuring, and learning to use a plethora of tools to set up a modern collaborative software development environment. The logistical overhead of doing so can be extremely daunting to novices who are already expending large amounts of effort learning the mechanics of programming itself. To lower these barriers, we created a web-based IDE called CodePilot that requires no software setup or configuration BS.

CodePilot (project webpage) lets multiple programmers coordinate in real time throughout several major phases of the modern software development workflow:

  • writing, running, and testing code,
  • generating bug reports,
  • managing the bug/issue tracker,
  • and managing the version control system.

To see how CodePilot works, let's consider Alice and Bob, two web developers working together to create an HTML/CSS/JavaScript web app. Alice first logs into CodePilot with her GitHub account, starts coding up the web app, and emails Bob the URL of her session. When Bob visits that URL, both see this shared interface (click to enlarge):

  1. Both Alice and Bob can manage the shared Git repository by adding, editing, and deleting files.
  2. Both can simultaneously edit code in a multi-user text editor similar to Google Docs.
  3. They can text chat and see each other's actions in the activity feed, which displays messages such as “Alice created a new bug report on X” or “Bob pushed latest changes to GitHub.”

As Alice is writing new code, Bob can serve as her tester by running that code and checking for bugs. When Bob clicks the “check” button at the top of the UI, he brings up the testing pane:

This pane renders the current state of the HTML/CSS/JavaScript code in Bob's web browser, along with a JavaScript console and a task queue linked to the project's GitHub account. As Bob is testing the app, he can push todo tasks to the queue or click the “report issue” button to file a formal bug report. When he clicks that button, a pop-up appears that lets him highlight parts of the webpage that he wants to emphasize in his bug report and also black out any private data prior to taking a screenshot:

Bob can then write a bug report, and CodePilot files it as a new GitHub issue along with that screenshot and a snapshot of all of the current project code. This allows Alice (or anyone else) to easily reproduce the bug later.

In addition, both can manage the GitHub repository by committing, viewing, and reverting Git changes within CodePilot.

In sum, this all-in-one web-based environment lets Alice and Bob engage in either traditional pair programming where they both work on the same file, side-by-side programming where work on different files while coordinating via chat, or test-driven development (i.e., developer and tester roles) as shown in this example. The main benefit is that it requires no software installation or setup; simply log in with a GitHub account and start coding together.

To see how actual novices respond to this system, we got four pairs of college students to use CodePilot to develop a simple web application. Our participants felt that it was useful for:

  • Novice scaffolding: They liked how CodePilot's visual Git interface could serve as scaffolding (i.e., “training wheels”) to gently introduce novices to version control concepts before being exposed to full-fledged command-line tools.

  • Situational awareness: They preferred using CodePilot over working side-by-side on separate computers using regular IDEs due to the extra situational awareness provided by both the activity feed and the Google-Docs-like concurrent editing.

  • Lowering barriers to impromptu collaboration: Finally, they mentioned how this tool could encourage more ad-hoc collaboration even amongst experienced developers, especially when prototyping new hacks. Anyone can quickly create a project and instantly share their session with a URL.

CodePilot points toward a future where it's much easier to learn about collaborative software development workflows and work together to hack up prototype apps without the fuss of managing an array of complex command-line and GUI software tools.


Read the full paper for details:

CodePilot: Scaffolding End-to-End Collaborative Software Development for Novice Programmers. Jeremy Warner and Philip J. Guo. ACM Conference on Human Factors in Computing Systems (CHI), 2017.
Novice programmers often have trouble installing, configuring, and managing disparate tools (e.g., version control systems, testing infrastructure, bug trackers) that are required to become productive in a modern collaborative software development environment. To lower the barriers to entry into software development, we created a prototype IDE for novices called CodePilot, which is, to our knowledge, the first attempt to integrate coding, testing, bug reporting, and version control management into a real-time collaborative system. CodePilot enables multiple users to connect to a web-based programming session and work together on several major phases of software development. An eight-subject exploratory user study found that first-time users of CodePilot spontaneously used it to assume roles such as developer/tester and developer/assistant when creating a web application together in pairs. Users felt that CodePilot could aid in scaffolding for novices, situational awareness, and lowering barriers to impromptu collaboration.
@inproceedings{WarnerCHI2017,
 author = {Warner, Jeremy and Guo, Philip J.},
 title = {CodePilot: Scaffolding End-to-End Collaborative Software Development for Novice Programmers},
 booktitle = {Proceedings of the 2017 CHI Conference on Human Factors in Computing Systems},
 series = {CHI '17},
 year = {2017},
 isbn = {978-1-4503-4655-9},
 location = {Denver, Colorado, USA},
 pages = {1136--1141},
 numpages = {6},
 url = {http://doi.acm.org/10.1145/3025453.3025876},
 doi = {10.1145/3025453.3025876},
 acmid = {3025876},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {collaborative ide, novice programmers, pair programming},
}
Created: 2017-10-13
Last modified: 2017-10-13
Related pages tagged as human-computer interaction:
Related pages tagged as programming: