My experience on the Zelda game project has been positive, with significant development in three key areas:
-
Object-Oriented Design Patterns: Early introduction to object-oriented design patterns in the course highlighted the importance of elegant solutions and high code quality. This foundation was crucial for revisiting and improving previous structures. Key patterns I found invaluable included:
- State Pattern: Facilitated debugging and adding new behaviors to Link's character.
- Sprite Factory: Streamlined code and eased the addition of new content.
- Singleton Pattern: Provided a global access point for game states and collision handling, essential for managing the public elements of Link's character.
-
Problem-Solving Process: Each sprint presented unique challenges, necessitating maintainable solutions. This aspect of the project bolstered my problem-solving skills, particularly in:
- Developing sustainable and elegant solutions.
- Enhancing critical thinking and object-oriented programming mindset, differing from my prior experiences at OSU.
-
Resilience and Trust in Teamwork: The project emphasized the importance of resilience and trust within the team. Key insights include:
- Appreciating the capabilities of my CSE classmates.
- Benefiting from paired programming and peer reviews.
- Learning the significance of task delegation and team resilience, especially during intensive periods.
- Critical Thinking: Confronting complex system develoment constraints and challenges in the collision detection system enhanced my critical thinking abilities.
- Collaboration: Active collaboration, particularly during whiteboard sessions, was crucial for refining ideas and developing solutions.
- Respect and Faith in Team: My respect and faith in the team's abilities grew with each sprint, inspired by their creative problem-solving methods.
Reflecting on the project, I've identified several best practices in software development:
-
Proactive Project Management: Defining sprint goals early and documenting them in task tracking software helps in maintaining clarity and reducing delivery risks.
-
Agile Workflow: Agile methodologies enable continuous development and frequent stakeholder check-ins and lead to more effective feedback and a higher quality end product.
-
High Code Quality: Writing well-organized, maintainable code enhances team efficiency and makes the development process more enjoyable. It also simplifies debugging and allows the team to focus on creative aspects rather than fixing errors.