Beyond the Browser: Reflections on Software Engineering Fundamentals

16 Dec 2025

Software engineering concepts

As ICS 314 draws to a close, I’ve built web applications, debugged JavaScript, and deployed to GitHub Pages. But beneath the HTML and CSS lies a foundation of software engineering principles that extend far beyond web development. This class wasn’t just about making sites; it was about learning to build software responsibly and efficiently. Here, I reflect on three key concepts—Agile Project Management, Design Patterns, and Ethics in Software Engineering—and how they apply to any software project, not just web apps.

Agile Project Management: Issue-Driven Workflow

Agile Project Management is an iterative approach to software development that emphasizes flexibility, collaboration, and rapid delivery over rigid planning. Instead of a waterfall model with fixed phases, Agile breaks work into small, manageable increments called sprints, allowing teams to adapt to changes and feedback.

In ICS 314, we practiced Issue-Driven Project Management (IDPM), a specific Agile flavor. IDPM treats each task as a GitHub issue, tracked from creation to completion with estimates, actual effort logging, and status updates. For my Tithr project, I estimated hours for features like “implement budget calculations,” logged coding and non-coding time (research, design), and used the board to manage progress.

Beyond web apps, IDPM shines in any collaborative project. Imagine building a mobile game: issues could cover “design level mechanics,” “integrate physics engine,” or “test multiplayer sync.” The issue board provides visibility, estimates prevent overcommitment, and logging reveals bottlenecks—like if testing takes longer than expected. I’ve seen myself using this for group research projects or even personal apps, where tracking prevents feature creep and ensures steady progress.

Design Patterns: Reusable Blueprints

Design patterns are proven solutions to common software design problems, documented as templates rather than code snippets. They promote code reusability, maintainability, and communication among developers.

In Tithr, I applied patterns like the Singleton (one global config object), Observer (updating UI on data changes), Factory (creating budget categories), and Strategy (flexible allocation rules). These weren’t web-specific; they’re universal. The Singleton ensures no duplicate configs in any app, Observer handles event-driven updates in games or IoT systems, and Strategy lets users swap algorithms without rewriting code.

Outside web development, patterns are essential. In embedded systems, the Observer pattern manages sensor data notifications. In data science, the Strategy pattern switches between ML models. Learning patterns taught me to think abstractly: instead of hacking solutions, I now recognize recurring problems and apply established fixes, making my code more professional and easier for others to understand.

Ethics in Software Engineering: Responsibility Beyond Code

Ethics in Software Engineering involves considering the societal impact of software, including privacy, security, accessibility, and fairness. It’s about building systems that don’t harm users or society.

ICS 314 emphasized ethical considerations like data privacy (GDPR compliance), inclusive design (WCAG accessibility), and responsible AI use. In Tithr, I ensured user data stayed local (no cloud storage without consent) and made the UI accessible with proper labels and contrast.

This extends beyond web apps to all software. In autonomous vehicles, ethical coding means prioritizing pedestrian safety over speed. In social media algorithms, it involves combating bias and misinformation. Ethics reminds me that code has consequences: a bug in a medical device could endanger lives, so thorough testing and transparency are non-negotiable. This class instilled a mindset of responsibility, making me question not just “does it work?” but “is it right?”

Wrapping Up

ICS 314 transformed my view of software engineering from coding to craftsmanship. Agile management keeps projects on track, design patterns make code elegant and reusable, and ethics ensure impact is positive. These principles apply to mobile apps, desktop software, AI systems—even non-software projects like organizing events. As I move forward, I’ll carry this foundation, building not just functional systems, but sustainable, ethical ones.


Small print on AI usage: I used ChatGPT to brainstorm essay structure and refine examples, but wrote and reflected on the content personally.