Applying Software Engineering Beyond Web Application Development

14 May 2025

Applying Software Engineering Beyond the Web

Throughout this course, I’ve gained far more than just technical knowledge about how to build web applications—I’ve developed a deeper understanding of fundamental software engineering principles that apply across a broad range of contexts. While the class projects were centered around web development, many of the concepts we explored have relevance in other areas of software and even non-software-related fields. In this essay, I will reflect on three key software engineering concepts that stood out to me: Agile Project Management, Configuration Management, and Design Patterns. Each of these has applications that extend well beyond the creation of web apps, making them powerful tools for any kind of structured, collaborative, or scalable project.

Agile Project Management

Agile Project Management is a methodology focused on iterative development, frequent reassessment, and flexibility in response to changing requirements. Unlike traditional “waterfall” models that emphasize rigid planning and sequential stages, Agile encourages teams to work in short development cycles (called “sprints”), deliver working features early, and continuously gather feedback.

A specific implementation of Agile that we used in this course was Issue Driven Project Management (IDPM). In IDPM, development is centered around issues—individual tasks, bugs, or features—that are documented and tracked via an issue management system like GitHub Issues. Each developer claims and completes issues independently, allowing for transparency, modular progress, and accountability.

What struck me most about IDPM is how applicable it is to any project requiring collaboration and task delegation. For example, in a team-based research project or an event planning committee, tasks can be broken down into discrete “issues” that are assigned, tracked, and closed as they are completed. This promotes visibility, prevents duplication of effort, and enables smooth collaboration—even among remote team members. I can easily imagine using IDPM for group work in other classes or professional environments, including marketing campaigns, logistics planning, or software projects unrelated to web development.

Configuration Management

Configuration Management refers to the systematic handling of changes in software to maintain consistency, traceability, and control. In practical terms, this involves version control systems like Git, which allow developers to track code changes, manage different branches of development, and revert to previous states if needed.

Before this course, I viewed version control as something mainly useful for coders. However, I now realize configuration management is critical in any context where changes need to be tracked over time. For instance, a data science project that evolves through iterations of analysis, code updates, and collaboration among team members would benefit greatly from version control. Even in document-heavy environments—like technical writing, academic publishing, or policy drafting—tools like Git can help track revisions, avoid lost progress, and facilitate collaboration.

Moreover, the principles of configuration management encourage discipline and foresight. By maintaining well-organized change histories and documentation, teams can identify problems more quickly, ensure accountability, and reduce the risk of introducing bugs or inconsistencies. These benefits are universal, regardless of the specific technology stack being used.

Design Patterns

Design patterns are reusable solutions to common problems in software design. They provide proven templates for organizing code in ways that are efficient, readable, and maintainable. Examples include the Model-View-Controller (MVC) pattern used in web apps, the Singleton pattern for managing shared resources, and the Observer pattern for managing event-driven behavior.

What makes design patterns powerful is that they abstract away specific implementations and offer guidance that is broadly applicable. For example, if I were building a desktop application, mobile app, or even a game engine, many of the same patterns would still be relevant. The MVC pattern can help separate data management from user interface concerns in any kind of application. The Singleton pattern ensures only one instance of a database connection or logging system is created—regardless of platform.

Beyond software, design patterns can even inspire better structure in non-programming systems. For instance, the Observer pattern is conceptually similar to how real-time notification systems work in business or media: one change triggers multiple updates across different recipients. Understanding these patterns helps me not only write better code but also think more structurally and systemically in other domains.