Collaboration Tips

Note: This page is a reference for instructors who advise student teams. Students can also use it to draft a plan, then review that plan with an instructor or experienced student.

Note: Some of this advice applies to projects, or engineering projects, or software projects, in general. Some of it is specific to physical computing or the Arduino.

Alternatives for how students can work together remotely:

Separating a project into components

Separating an Arduino Sketch

Thoughts on dividing the coding part of an Arduino project into pieces:

Integration hell refers to the difficulty of getting separately developed pieces to work together. If you divide the work, combine the pieces early and often. Integration failure is the most common failure mode of a team project with separate components.

Dividing a project into pieces is useful even when you are not working remotely from your teammate. You can both work at the same time.

Dividing a project into pieces is also useful when you are working alone. You can develop and debug one part in isolation. There is less to build before you can test it, and fewer places to look when something goes wrong.

Collaborating on Code

Screen sharing

One way to collaborate on code is to work on the same code at the same time, by having it “live” on one person’s computer and sharing that computer with the other team member(s).

Zoom is good for one-way screen sharing (where one person shares their screen for the other person to see, but not control). Zoom implement two-way screen control as well, but on a slower connection it doesn’t work as well as…

https://screen.so lets both participants type while sharing control of a screen.

For Arduino code, the Tinkercad simulator probably makes it easier to collaborate.

Note: For web development there are other possibilities. So if you take a course such as Creative Coding that involves web development or server development, you will have the opportunity to use other collaboration tools that can work better than the ones described here.

Sending Code back and Forth

The other way to collaborate on code is to send lines of code or files back and forth.

Slack is particularly good at talking about code, as well as sending snippets of code back and forth. Surround a word by backticks to quote it as code e.g.function setup()`. Start a line with three backticks ``` to paste in a multi-line sketch or fragment of a sketch, to preserve its code formatting.

Git, GitHub, and GitHub Desktop automate this, so that it is easier to share new versions and to see what has changed since the previous version. They can be used with the Arduino and Processing IDEs. Although git is easier to use once a project has been set up with it (especially using GitHub Desktop), it is more difficult to set up a project so that you and your team members have access to it, and is beyond the scope of this course.