As my software engineering class comes to an end, I’ve realized that the lessons learned extend far beyond web application development. While I gained technical skills in React, Prisma, PostgreSQL, and more, the real value lies in understanding fundamental software engineering concepts like Agile Project Management and Configuration Management. These principles have shaped my approach to teamwork, task management, and personal growth as a developer. This reflection explores how these concepts have influenced my learning and how they can be applied in various contexts.
Agile Project Management emphasizes collaboration and breaking projects into smaller, manageable tasks. In our team, this meant assigning tasks based on individual strengths and interests. For instance, those who enjoyed frontend development worked on UI components, while others focused on backend systems. This approach fostered teamwork and made the project more enjoyable.
We used GitHub Issues and Milestones to track progress, set deadlines, and ensure that tasks were completed on time. The clear structure on GitHub allowed us to efficiently assign tasks and avoid unnecessary in-person meetings. Milestones acted as chapters for grouping tasks, providing a logical flow for the project. Frequent testing involved testing our own branches before squashing and merging into the main branch if everything worked as expected.
Challenges arose when team members struggled with tasks due to skill gaps. In these cases, others would step in to help or refine the work. This flexibility, a cornerstone of Agile, ensured the project stayed on track and taught me the importance of supporting teammates when needed.
Using Git and GitHub introduced me to the importance of version control in managing changes systematically. Although my understanding of GitHub was basic at first, I quickly realized how effective it was for organizing and collaborating on projects. For example, GitHub’s merge confirmation process ensured that conflicts could be detected and resolved before merging changes into the main branch. Additionally, group members could review changes, adding another layer of accountability.
GitHub’s tools, like Issues and Milestones, made it easier to organize and track progress. If a task wasn’t completed or didn’t fit well within a milestone, we reassigned or refined it for the next phase. This systematic approach reduced errors and improved efficiency, teaching me how to manage iterative improvements.
Working on a team taught me the importance of clear communication. Being honest about project goals, providing examples, and openly discussing what I could or couldn’t do helped our team work more effectively. Timeliness was also crucial; delays in simpler tasks could hinder overall progress. I also learned that asking team members respectfully if they needed help could prevent bottlenecks and encourage collaboration.
One of my key takeaways from this class was the importance of deep learning and reading documentation. While AI tools are helpful, relying too heavily on them can limit foundational understanding. I became more cautious about the code I modified, aiming to make minimal but effective changes. I also learned the value of using environment files for sensitive data like keys and coordinates, rather than hardcoding values. This approach makes the application more scalable and easier to maintain.
The principles of Agile and Configuration Management are not limited to coding projects. For example, Agile’s iterative task management and teamwork could apply to marketing campaigns or event planning. Similarly, Configuration Management’s systematic approach to tracking changes could benefit research projects or hardware development.
These concepts will undoubtedly shape my approach to internships, jobs, and personal projects. Whether it’s using Agile to organize tasks or GitHub to manage files, the skills I’ve gained in this class will help me tackle future challenges with confidence. For instance, I plan to watch more tutorials and engage in self-learning to build a stronger foundational knowledge before diving into projects.
Manoa Bites is a web application designed to help students and staff at the University of Hawaii at Manoa easily find food options across campus locations. With Manoa Bites, users can discover available menu items, search for specific restaurants, and find out which dishes are being served on any given day. Key features include:
Through this project, I gained a clearer understanding of the software engineering process. I learned how PostgreSQL manages user data, including account details, email, and roles. I also improved my understanding of tabling in PostgreSQL and recognized Prisma’s role as a schema intermediary. However, I realized that I need to study these tools further to fully grasp their potential.
Reflecting on this course, I’ve come to appreciate the depth of software engineering beyond coding. Agile Project Management and Configuration Management have provided me with frameworks to approach projects effectively, foster teamwork, and maintain consistency. The lessons learned from the Manoa Bites project, such as managing APIs, avoiding hardcoding, and improving database knowledge, will serve as a strong foundation as I continue to grow as a software engineer, both in collaborative environments and individual pursuits.