Version Control and Collaboration
Collaboration is so important in the field of computer science; as a programmer, you will rarely if ever find yourself alone on an island when working on a project. More often than not, you will have peers with whom you are collaborating or sharing when designing something, and all parties will need to share information… but what is the best way to collaborate? In this section, we discuss a number of different popular techniques for collaboration among programmers. In CS50 AP, the “driver/navigator” model will suffice for student collaboration, but we also touch on some more advanced techniques for those of you who wish to independently pursue their learning about these.
-
Seminar
- Brian Yu’s Seminar on Version Control and Collaboration in GitHub
-
Notes
-
Supplementary Resources
- Git-scm on Getting Started - About Version Control
- Weblab Technology on Pair Programming Guide
- Sam Harris on The Benefits and Pitfalls of Pair Programming in the Workplace
-
Thought Questions
- Why do you think the driver / navigator model is set up the way that it is, with the roles so clearly delineated?
- When might pair programming be an effective work setup? What about pair programming is difficult?
- What additional advantages does Git have over some of the other models, particular as it might pertain to two people working on the same project at the same time?
- What are the benefits of having multiple saved versions of the same code? How can this make debugging more effective?