This was the final project of the SENG 300 course in my second year at The University of Calgary. Working off the hardware project’s source code, I and 22 other team members collaborated to design, develop, and test a fully functional self-checkout station software system. The project was developed in 3 iterations, the first two of which were focused on implementing a growing number of use cases for the system.
These use cases represented a customer with whom we could not communicate directly, and whose use case requirements were descriptive at times and vague at others. It was a challenge to decide which cases we should spend more time on, and which we should not. The final iteration involved developing a graphical user interface for the system, including setting up an attendant station to monitor and maintain all the running instances of our self-checkout station software.
In this final iteration, we had to expand our design to incorporate elements like user experience, as well as thinking deeply about the relationships between our various classes, inheritance and synchronization. It was the most challenging iteration of the three, but I feel like I’ve grown so much not only as a software developer but also as a person. From the start, I volunteered for the role of project manager, which I quickly realized was not as simple as I’d initially thought it would be. Not only did I need to know how every aspect of our system functioned, but I also needed to know every member of our team. I had to keep tabs on them, tell them what to do, help solve their issues, and check in on them regularly despite the heavy load from my other classes and my part-time job. But with all that said, though this has been one of the most challenging experiences of my academic career, I can confidently say that it has also been the most fulfilling. I look forward to future experiences where I can apply all the leadership and technical experience that I’ve learnt while doing this project, and this course as a whole.