Note: This was written as a reminder for instructors, who are already familiar with these techniques, to refer to while advising students. It is long on general advice and short on examples. It may be useful to students as well, who are willing to put some work into reading it and are willing to then check with an instructor or other advisor (such as a more experienced student) once they have a tentative plan.

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 taking separately-developed pieces and getting them to work together. If you divide up your work, it is important to frequently and early practice combining the pieces. Integration failure is the most common failure mode of a team project with separately-developed components.

Note that dividing a project into pieces is useful even if you are not forced to work remotely from your team mate. Then you can both be working on things at the same time.