
As this course wraps up, I have reflected on what I’ve learned about software engineering. While we focused on building web applications, the real value of this class lies in understanding the core principles that apply to all kinds of software. In this essay, I’ll discuss three significant topics: Agile Project Management, Design Patterns, and Ethics in Software Engineering. These concepts go beyond web development and are useful in many other types of projects.
Agile Project Management is a way to handle projects by breaking them into smaller steps. It focuses on teamwork and the ability to adapt to changes. During this class, we used Issue Driven Project Management (IDPM). With IDPM, we divided our projects into smaller, manageable tasks called “issues.” Solving these issues one at a time helped us stay organized and made teamwork more effective.
This approach isn’t just for web development. It can also be applied to other fields, such as robotics or game design. For example, if a team is creating a robot, they could use IDPM to focus on adding specific features, such as movement or voice control, one step at a time. By working on smaller tasks, the team can address problems quickly and adjust as needed. Agile methods are great for keeping the project on track and making sure everyone works efficiently toward their goals.
Design Patterns are reusable solutions to common coding problems. In this class, I worked with patterns such as the Singleton and Observer. The Singleton pattern makes sure there is only one instance of something, like a shared database connection. The Observer pattern helps different parts of a program stay connected so that when one part changes, others can react automatically.
These patterns are useful beyond web applications. For example, in video games, the Singleton pattern could manage settings like audio or graphics, ensuring consistency across the game. Meanwhile, the Observer pattern could be used to make non-player characters respond dynamically to the player’s actions. Design Patterns make it easier to write clear, maintainable, and adaptable code, no matter what kind of project you are working on.
Ethics in software engineering is about making choices that are fair and responsible when creating software. This involves ensuring accessibility, protecting user privacy, and avoiding bias in algorithms.
Ethics is especially important in areas like artificial intelligence (AI) and healthcare. For example, AI systems need to be designed with fairness in mind, avoiding favoritism toward specific groups of people. In healthcare, software must keep sensitive patient information secure and only allow access to authorized individuals. By considering ethics, we can build software that people trust and rely on.
This course has provided me with a strong foundation in software engineering concepts that go far beyond building websites. Agile Project Management taught me how to approach projects in manageable steps while working effectively with a team. Design Patterns showed me how to create well-structured and reusable code. Ethics reminded me of the responsibility we have to create software that is safe and fair. These lessons will be valuable in any software project I take on in the future, and I’m excited to continue applying them in meaningful ways.