Simplify as much a possible within the requirements of the project, you will be much happier with a completed project than with something over the top and unfinished.
Even simple projects can be fun (both to build and to play!).
Simplify early and often.
Buy spare parts.
Pair program - although it seems like it is less efficient on a four person team, the benefits of having more people know the code and having someone to cross check your reasoning is very valuable.
Get the keystroke state machine working early. This is by far one of the best debugging tools we have for the software.
Check the SPDL stock room for parts early. (Often they are cheaper than Jameco).
Be wary of guards with state machines; pure event driven code is easier to implement and debug.
Create a document everyone in your team can refer to that lays out your interface specifications (what you are calling certain things on your code and what the letter case you selected is). Make sure to update this while you make changes.
Actually make sure to keep all documents (state diagrams, schematics, pseudocode) consistently updated as you move along.
Spend due time writing and figuring out your state diagram. Conduct thought exercises to see if you are missing scenarios or did not account for them as you had intended. This is a critical design piece that will serve as fundamental groundwork if everyone in your team agrees on it from the beginning. Referring back to it will thus easily simplify the development process as well as any possible confusion.
Also take your time on the pseudocode. Time spent here is less time spend debugging.
Recommended software development process: Pick a simple, but exciting project. Make sure it satisfies all the requirements, one by one. Delve into the state diagrams. Theoretically test your state diagrams. Agree on your state diagrams. Write your pseudo code from the state diagrams. Convert your pseudo-code into code, leaving self-explanatory comments. Write and test it incrementally. Commit versions repeatedly. Communicate effectively.
Make sure you are keeping tabs on the lab station reservations. Plan ahead for shop reservations also. Show up on time at R36 and the shop even if you are on the waitlist or did not get a reservation, especially if it was for 8am
Take the time to figure out how you are going to lay out your circuits on the breadboards.
If you are stuck and feel like you have tried everything you (and your teammates and friends too) could think of, don’t forget that Ed can be an incredible resource! Ask for help if you need it, and- no surprise- ask early.
If you know there is a problem with a certain event, search in all files at once for where the event comes up and review them one by one.
Test. Test. Test. (Fix accordingly.)
Make sure your team stays on the same page.
If you are ready to spray paint, do it! It could rain tomorrow.
In case you forgot, things always take longer than you think they will.