As this ICS 314 class comes to an end, I take a moment to reflect on how much I’ve learned and grown in software engineering as a whole. While building web applications was a highlight of this course, and admittedly my favorite part, the deeper value of this class lies in the broader software engineering principles we’ve explored. These aren’t just skills to use for web applications only—they’re universal concepts that can be applied to many areas of software development. Let’s dive in on a couple of them.
This was something I learned early on in my programming journey, and something that I adhere to vehemently…or try to, at least. In this class I was given the opportunity to build a web application with a team. As we worked on our project, Dear Sunshine, I came to realize even further just how important upholding coding standards is. In our project, we used ESLint to help us identify syntax errors, adhering us to a strict, consistent standard. Some of my teammates struggled to follow these rules, whereas others had no problem. We ensured each line of code was within a certain length, avoided trailing white spaces, and followed consistent rules for indentation. These practices kept our codebase consistent and easy to understand, making collaboration smoother. Without adhering to a coding standard, I have little doubt that our codebase would’ve quickly become unmanageable.
My team used a style of Agile project management called Issue Driven Project Management (IDPM) for our development of Dear Sunshine. At first, I was skeptical on how it would work and if it would work for us, but as we started breaking down our project into small, manageable issues and assigning them on GitHub, it just clicked. IDPM isn’t just about tracking tasks and who does what; it’s about creating structure that will ultimately move the project forward.
Agile, at its core, is about flexibility. Instead of planning everything upfront and hoping it all goes perfectly (spoiler: it won’t), you work in iterations. Tackle one chunk at a time, review what’s working, and adjust as needed. Working with IDPM made our team’s workflow smoother and less stressful. If something didn’t work out as planned, or was taking longer than expected, we just moved it to the next milestone and broke it down into smaller pieces.
What’s great about Agile is that it isn’t limited to just software. IDPM could be used for organizing marketing campaigns, planning events, or even personal projects. The mindset that you gain from using IDPM is something that I see myself carrying into all kinds of projects.
In this course, we’ve touched upon a couple of frameworks, such as Bootstrap and Next.js. These frameworks gave us pre-built components and tools to create polished, responsive interfaces quickly, without feeling like we had to reinvent the wheel. Using frameworks have greatly improved my efficiency when coding; it allows me to focus on solving the real problems—like making a feature user-friendly—instead of getting stuck on low-level details. It’s the difference between using power tools and doing everything by hand, and who wants to put in more effort than needed?
If anything, this class was about learning how to approach software engineering in a thoughtful, professional way. Coding standards have taught me the importance of writing clean, collaborative code. Agile project management has shown me an efficient way to help my projects stay organized. And user interface frameworks have demonstrated the power of leveraging tools to work smarter, not harder.
The principles I’ve learned throughout this class can be applied to almost any kind of project, technical or not. And I believe that’s what makes this class so valuable. It’s not just about what you manage to build; it’s also about how you approach building it.