UnitED Calculator
Overview
This team-based software development project involved creating a fully functional calculator application using Java technologies. The project emphasized collaborative development practices, utilizing version control systems and agile methodologies to deliver a complete GUI application.
Technologies Used
- Java Programming: JavaFX & Swing, Object-oriented Programming
- Testing Framework: JUnit for comprehensive unit testing
- Version Control: Git & GitHub
- Agile Development: Scrum methodology for iterative development
The Product
The UnitED Calculator is a Java-based application designed to perform calculations and conversions across different units.
It features a simple interface that allows users to input values and select the desired conversion type.
Some other features implemented were the creation of custom units, calculation history, custom settings, and a user-friendly help section.

Challenges & Solutions
The biggest challenge I personally faced in this project was working and programming with a team. This was something I had not done on this level before, and was an active point of conflict. This conflict arose in three different areas: version control, implementation responsibilities, and design decisions.
The problem regarding version control was that many of the team members were not familiar with Git and GitHub. This led to many issues with merging and conflicts in the code. To solve this, we had an initial training session on Git and GitHub, which helped to bring everyone up to speed. However, merge conflicts still occurred, and we had to spend time resolving them.
The second problem was regarding implementation responsibilities. We used a ScrumBoard to assign tasks, but some team members were not completing their tasks on time. Primarily the people responsible for the tasks that must be completed before others. This led to delays in the project timeline and increased pressure on other team members to pick up the slack. To address this, we tried to assign our tasks in a way such that dependencies were minimized and everyone had a clear understanding of their responsibilities.
The last problem was regarding design decisions. We had many discussions about the design of the calculator, and there were disagreements about the best approach. Ultimately, we just let the person responsible for the task make the decision, but this led to a very inconsistent design and codebase.
Takeaways
This project provided valuable experience in collaborative software development, emphasizing the importance of clear communication and version control in team settings. It also reinforced my understanding of Java programming and GUI design principles.
Meeting shareholder and project demands required effective prioritization and time management skills. Regular check-ins and updates ensured that all team members were aligned and that any issues were addressed promptly.
If I were to work on this same project again, I would do many things quite differently. For example, I would prioritize communication and collaboration among team members to ensure everyone is on the same page. In particular, I think the design of the codebase itself should've been much more of a frequent topic of conversation among the team.
Some key takeaways include:
- Teamwork and collaboration are essential for successful project outcomes.
- Effective communication helps to resolve conflicts and align team goals.
- Version control systems like Git are invaluable for managing code changes in a team setting.
- Working with JavaFX enhanced my skills in GUI development and user interface design.