What I learned in software engineering, in general, is essentially the process of breaking apart unknown, vague, and generally complicated problems into well-known sub-problems. Webpages and the process of web building are great examples since in this class specifically we broke apart each language, its functions, and how they can interact with one another to create simple components and connect them to eventually make big overarching projects and websites. The patterns and problems you constantly try to reduce are essentially the same concepts as having design patterns. Templates that you are familiar with can always be reduced if you simplify the problems you are facing enough times. Since we are constantly trying to conform our problems to these templates we end up with said design patterns which are essentially general principles we try to follow when approaching the same type of problem.
On top of the way we approach and design these problems there also comes the topic of how to do these things while in collaboration. For one, coding standards which is the practice of always sticking to a certain format or syntax can help with collaboration in many ways. By keeping all code in unison in terms of format it becomes much easier to evaluate and assess the quality of code when they are all presented to a similar standard. On top of that, we also learned just the act of working together as you would in open-source software development. The act of maintaining broken-down issues and then pushing the changes individually to a main project where everyone can review and change the issues on their own is a very intimidating and unfamiliar environment at first but once everyone gets used to it, it creates a very efficient workflow for the team.
Overall this class and its structure allowed me to learn the basics of planning out a huge project, understanding the concepts and flows I should consider while deciding what to work on, and how to apply this to a team of people trying to do the same thing. Web-building in particular was a very good project to practice these concepts on considering the amount of extensive resources, languages, and communication that must go into making a proper and efficient website. Extrapolating from this project you realize all software projects more or less follow the same format. Despite the varying levels of complexities, you can always simplify them into smaller problems and if you learn to properly collaborate then you can split these smaller issues amongst each other to build your project up. These skills which are undoubtedly important in all avenues of software development have been very prominent throughout this semester. Although this is geared towards web development the skills we learned can be generalized to be applicable to basically any software development project.