Testing:
Software Design:
Apocalypse Now Tips (Collaborating with Teammates Remotely):
Time/Project Management:
- Have a defined test plan early on that is independent of other teams (i.e. can you use recordings of your own team? Can you write your own test harness or map events to key presses?)
- Test every module independently before integrating it
- Whenever you can, use an oscilloscope or logic analyzer to help test that are seeing what you’d expect from your power supplies/microcontroller before plugging in the extra equipment
Software Design:
- Push yourself to rework your main state machine into its simplest form. It’s worth the extra time to simplify the SM to make it more robust and easier to work with
- Always have the members who wrote the code present for merging to sort through the conflicts
- Merge the newest code into the branch you are on instead of the master branch. That way you can verify that everything is working before modifying the master branch
- Always use #defines when possible. Makes the code cleaner and easier to read
Apocalypse Now Tips (Collaborating with Teammates Remotely):
- If working remotely with your team and dependent on internet performance, observe how the internet changes throughout the day and plan checkpoints/check-offs around the best times for you and your team. If you have access to Ethernet, definitely use it for a more dependable connection
- Try to meet with your team over Zoom/Discord/whatever platform you’re using a lot in the beginning of the project and then at steady intervals throughout to make sure you are all on the same page
- If you are working off of the same code, but have discrepancies in performance, start probing your circuit to look for noise or consider adjusting the sensitivity of your sensors. Ask your teammates what their hardware set-up is and show pictures (remember the old cliche a picture is worth a thousand words)
- If you are working on your project in the vicinity of family who will be annoyed by beeps and tones, be super nice to them whenever you are not beeping so that you can continue working there
- Try your best to schedule thunderstorms, hurricanes, tornados, or any other serious weather to not conflict with check-off days
- If you are working on a boat, try to schedule any loud, but required maintenance for times when the west coast is asleep and no beeping is occurring. Sometimes sailing to a different island to get better wifi is required.
Time/Project Management:
- If you have a piece of hardware/software that is difficult to integrate and known to create bugs in other parts of the code (e.g. a servo or motor using PWM), consider saving it as the last piece to integrate, so that you can validate that everything else works and then devote your full resources to resolving that issue