- Try to have your schedules line up as much as possible. You will be far more productive by working alongside your teammates and helping each other out.
- Making mistakes early will help you work smarter later on. Do the dirty work as early as possible so that there is time to fix all the bugs later.
- Don't overestimate your ability to get everything done in 1-2 days by pulling all-nighters.
- Decorations are the only aspect of design where no mysterious bugs can arise. Do this last.
- Go outside sometime.
- Have a rough layout of the physical design and where everything should go relatively early on. You don't need to build anything yet, but doing this will help you plan out your mechanisms and circuits.
- Do not fully seal off the back of machine until the very end (or ever!). You will be thankful for the quick access to your breadboards and the TIVA reset button.
Electrical & Hardware
- DO NOT forget to place multiple capacitors across all of your power rails! Do this early so you will never have to wonder if a bug is due to power fluctuations.
- Connect all the ground rails to each other, even if they are 2 PDBs from the same TIVA. Never assume you have common grounds unless they are connected!
- Plan out exactly which inputs and outputs will connect to each pin on the TIVA and shift registers. Keep this documentation somewhere easy to access.
- Longer wires are better than shorter wires. Wind them up using a drill so that they are more organized.
- Have long power rails that are easy to access from any part of your circuits.
- Learn how to use Git/Sourcetree properly and establish firm rules with your team regarding version control.
- Write a robust key mapper service so that you can simulate different events in your state machines for quick testing.
- Write out the skeleton code for all your state machines early. Similar to mechanical design, this will give you a better sense of what your final product will look like.
- Agree on some ground rules with your team regarding code style. It will be much easier to understand each other's code this way.