Keeping it 100 With Software Engineering

10 May 2025

Reflecting On Everything

Before taking this software engineering course, I had a vague idea that it would mostly be about coding websites. While I did get better at building web apps using tools like Next.js and React Bootstrap, I quickly realized the class was about something deeper. Understanding the systems and principles that guide how software gets built in the real world. This wasn’t just about writing code, it was about writing code well, as part of a team, with tools and practices that help projects stay organized, maintainable, and ethical. In this reflection, I want to focus on two core concepts that changed the way I think about software: user interface frameworks and agile project management. Both of these areas taught me lessons that go far beyond web development.

User Interferance Frameworks

User interface (UI) frameworks like React Bootstrap and Next.js were some of the parts that stood out from me in the course. At first, I saw them just as a way to make websites look good without writing too much CSS. But as I worked on more websites like Digits and Island Snow, I began to understand that UI frameworks are more about structure, reusability, and user experience. React, for example, uses a component-based model that encourages developers to break their interface into small, testable, and reusable chunks. It’s kind of like turning your UI into LEGO pieces you can rearrange and reuse without rebuilding everything from scratch.

Next.js added another layer by helping manage routing, page generation, and performance optimization, albeit being a slightly frustrating at times. Together, these frameworks helped me see how a well-designed front-end system can support clean code, faster development, and better collaboration with teammates. Even if I never touch another web app again, the concept of building things in modular, maintainable pieces is something I’ll carry with me into any kind of software development, whether it’s mobile apps, game design, or even hardware interfaces.

Agile Project Management

One of the biggest mindset shifts for me came from learning about agile project management, specifically a version called Issue Driven Project Management (IDPM). Agile is a way of organizing software development around short, iterative cycles called sprints. Instead of planning everything upfront and hoping it works out (like the old-school “waterfall” model), Agile assumes things will change and focuses on constant feedback and improvement. IDPM takes this further by tying features, bugs, tasks, to GitHub issues that can be tracked, assigned, and estimated.

During our Campus Resource Scheduler group project, we really leaned into Issue Driven Project Management (IDPM), and it made a big difference. From the start, we broke down our overall goals—like building pages for Available Equipment, Available Rooms, and handling reservations—into smaller GitHub issues that we could assign to ourselves or each other. Each issue had an estimate using the IDPM effort scale, which helped us stay realistic about how much we could get done in a sprint. As we worked through the project, we used GitHub Projects to track progress and update the status of each issue. Everyone knew what they were responsible for, and it made collaboration a lot smoother. It also taught me how IDPM is a great way to manage any kind of group work by breaking things down, assigning responsibilities, and tracking progress in a way that keeps things from falling through the cracks.

It’s Been Fun

This course taught me a lot of technical skills, but the real value came from the way it reshaped how I think about building things with other people. UI frameworks like React Bootstrap and Next.js taught me the importance of reusable design and scalable interfaces. Agile project management, especially IDPM, gave me a practical system for working efficiently in teams and staying organized. These aren’t just tools for coding websites, but tools for thinking clearly, collaborating better, and building any kind of complex project, no matter the domain. That’s what I’ll take with me long after the class is over. Thank you ICS 314, you’ve been my favorite computer science course in college so far.