Software Design

We had quite a few state machines in our system. We decided to break the code into as small of pieces as possible to reduce the likelihood that weird, unforeseen edge cases would decide to occur in the middle of grading. We mostly prioritized simplicity and speed of implementation over elegance or scalability. For instance, we had 6 separate button state machines to debounce the 6 buttons in our system. Is that scalable? Absolutely not. Did it mean that, once one SM worked, we had them all working in 10 more minutes? Absolutely.