Reflections on Software Engineering

21 Dec 2024

My Experience with Software Engineering

Before taking ICS 314, I really didn’t have any actual software engineering experience. Sure, I had some of the skills required for software engineering such as coding and using github, but I’ve never applied them all together to build a working project with a team before. However, after successfully completing the 3D-Wizards web application project, I feel that I have gained invaluable experience not only in web application development but in software engineering as a whole. Throughout this course, I have learned many important software engineering concepts including agile project management and configuration management. These concepts make up the foundation of every successful software engineering project and help keep the project professional and well organized.

The benefits of issue driven project management

One key software engineering concept I learned in this course is agile project management. This is a flexible approach that involves breaking down a large project into multiple, focused chunks. One style of agile project management we used is called issue driven project management, which divides these chunks even further into issues that need to be addressed to complete a larger goal. I found this style of project management to be very effective for our 3D-Wizards web application project, which is an online store for a business that sells 3D printed toys. The project was divided into three milestones, which were then further divided into many issues that were self-assigned by each team member. This approach made it very clear what we each needed to do to complete the milestones and allowed us to easily check up on what the other team members are doing. Issue driven project management is definitely something I would want to utilize in future projects and in the workforce, as it is a flexible approach to project management that can be used for any software engineering project, not just in the case of web development.

The value of proper configuration managment

Configuration management is a process of maintaining the software in a desired state during development and throughout its life cycle. Properly managing the software development process with the rest of your team is just as important as developing the project itself. In many cases, this becomes more of a headache than the actual development because every member of the team needs to be on the same page. Thankfully, github makes this process relatively easy by allowing the creation of branches and being able to merge them together. By creating a separate branch to work on a task and only merging to the main branch when the functionality works and has been adequately tested, this makes it so that there is always a working main branch that never gets corrupted. The development and debugging is all done in the separate branches, and the main branch only gets updated with working, desired code. I had never realised the importance of proper configuration management as I have mainly been working on software projects on my own, but maintaining an organized development process is crucial to every software engineering project. This can be seen by real life examples everywhere, such as webpages and videogames using proper configuration management to always keep their product in a desired state.