Beyond the Browser: Software Engineering Lessons

15 May 2025

While ICS 314 focused on building web applications, I’ve come to realize that it was never just about designing interfaces or managing routes. At its core, the class was about learning the principles and practices of software engineering: skills that apply beyond the scope of websites or web apps. Two concepts that especially stood out to me were Agile Project Management (specifically, Issue Driven Project Management) and Ethics in Software Engineering. These taught me how to approach software not just as a product to be built, but as a responsibility to be managed with care.

Agile and Issue Driven Project Management

Agile Project Management is a flexible approach to managing software development. Instead of planning everything in advance, Agile teams work in short cycles, regularly revisiting goals and adjusting as needed. This approach helps teams respond to change and continuously improve the product based on feedback.

Within Agile, we practiced something called Issue Driven Project Management (IDPM). In IDPM, every task, whether it’s fixing a bug, adding a feature, or writing documentation, is tied to a specific “issue” in a shared tracking system like GitHub. Each issue represents a unit of work, and developers create branches, write code, and submit pull requests tied to that issue. This keeps the development process organized and easy to manage.

Even outside of web development, I can see myself using IDPM for other kinds of software projects. For example, if I were working on a machine learning pipeline or a mobile app, breaking down the work into issues would still help me stay focused and track progress clearly with my team. It turns abstract project goals into tangible, manageable tasks.

Ethics in Software Engineering

Another important topic we explored was Ethics in Software Engineering. Ethics in this field refers to the responsibility software developers have to consider how their work impacts users, society, and the broader world. It involves issues like privacy, accessibility, fairness, and avoiding harm.

One of the most memorable parts of the course was discussing ethical dilemmas in development, such as whether a more experienced developer should be passed over for a promotion in favor of someone with more AI expertise. These kinds of questions reminded me that writing code isn’t just a technical act; it’s a human one. The decisions we make can influence who gets access to technology, how data is used, or whether people are treated fairly by algorithms.

Ethical thinking applies no matter what kind of software you’re building. Whether it’s a medical app that handles patient data, or a social platform that moderates content, ethical considerations are part of what makes a system trustworthy and safe. I now understand that being a good software engineer isn’t just about knowing how to write code, it’s about using that knowledge responsibly.

Conclusions

ICS 314 introduced me to web development, but what I truly gained from this class goes beyond front-end design. I learned how real-world software projects are structured, maintained, and evaluated, not just for functionality, but for human impact. Tools like Issue Driven Project Management gave me the structure to work effectively in a team, while discussions on ethics helped me realize the broader responsibility that comes with being a software developer.

Going forward, I feel more prepared to contribute meaningfully to software projects, whether they involve web apps, research tools, or even systems we haven’t imagined yet. More importantly, I’m walking away with a mindset that values both collaboration and conscience, because great software isn’t just well-built, it’s well-intentioned.

This essay was written with the help of AI