Overall, this software engineering course is a great introduction to what software engineering is all about. Although this course was designed for the creation of web applications, the main point of this course was to teach us about the fundamental software engineering concepts such as open source software development, agile project management, configuration management, and many more.
Open source software development is a process of creating, enhancing, and maintaining software. The “open source” in the name refers to how the source code of the software is freely accessible, allowing for people to see and interact with the application. For this class, we used React, an open source JavaScript library for building user interfaces, and Meteor, an open source full stack platform for building web and mobile applications. We used a combination of React and Meteor for our final projects, which was to create and deploy a web application.
Agile project management is a fundamental concept that is used everywhere. In a simple way, agile project management is an iterative approach to managing software development projects that focuses on continuous releases and incorporating customer feedback with every iteration. For our final project, we used issue driven project management using GitHub’s issue tracking feature. For every milestone, we create issues, and we would each assign ourselves to different issues for us to work on. It not only helps with managing tasks, but it also is a way for us to communicate and better enhance the collaboration within the team.
Configuration management is defined as a system engineering process for establishing consistency of a product’s attributes throughout its life. The importance of configuration management goes beyond the web development area. Configuration management is important because it ensures that the application remains consistent and stable across different environments. You are able to track and control the changes made to help avoid discrepancies between the development and test stages. In a collaboration setting, configuration management provides a centralized repository where developers can synchronize their work, minimizing conflicts and ensuring that everyone is working with the most up-to-date version of the code.
The class has taught many more fundamental concepts which has given me more insights into the different aspects of the software engineering process. As I move forward with all the fundamental concepts, I feel that I am better prepared to contribute more to the software engineering field.