What I Learned About Software Engineering

08 Aug 2025

Throughout this course, it’s clear to me that I have learned more than just the ability to design and program applications using HTML and CSS. While learning to build applications was a key part of this software engineering course, I also learned about topics like design patterns and open source project management. These concepts not only taught me more about web development, but also are transferable to any kind of software projects- and even some non software projects.

Design Patterns: Solutions for Better Software:

As detailed more fully in my essay focusing exclusively on design patterns, this is one of the most impactful skills I learned throughout this course. A design pattern is a general and reusable solution to a common problem in software design. Design patterns aren’t pre-written blocks of code, but rather blueprints that adapt to solve recurring problems in a structured way.

What stood out to me the most design patterns is how they represent sharing knowledge across the programming world. Once I learned a few common design patterns, I started noticing them everywhere. Design patterns in tutorials, open source problems, and even in job interview prep questions. Learning design patterns is like learning a new language that helps you talk to other developers more clearly and effectively.

Open Source Software Development: Large Scale Collaboration:

Another key takeaway from this class was learning open source software development. Open source refers to software projects where source code is publicly available, and anyone can contribute. At first this idea was a little intimidating, the idea of thousands of people working together in a collaborative codebase. As I familiarized myself with GitHub throughout this course I began to better understand how it all fits together.

Tools like GitHub enable version control, where every change to the code is tracked. We use pull requests to propose changes, issues to track tasks and bugs, and branches to separate individual features being developed. These workflows are the same ones used by open source communities on GitHub and throughout the world. Contributing to an open source project isn’t just writing code, it’s also learning about communication, organization, and goals.

I have come to see the skills I developed in this course as being integral for working in an open source environment. For example, if I were collaborating on a data science project or mobile application I could use the resources and skills I learned in this class to write clear code and provide feedback for others.

All in All: Collaboration In Software Engineering:

Before taking this course, I did not know anything about UI design or front end design. I also had never worked on programming in a collaborative context. This course taught me not only essential skills in software engineering and programming, but also a new way of viewing problems, solving problems in and out of code, and collaborating with others on projects. These skills combined with the course emphasis on athletic software engineering made me not only a better programmer, but a better learner and collaborator. The skills I learned in this course will serve me well in future endeavors of programming and set me up for success in the real world. I am walking away from this course with not only an application in which I helped program and design, but also a set of skills and practices that will make me a better programmer.