The topics I’ve learned in my Software Engineering course: ICS 314 go beyond web application development. Configuration management and Issue Driven Project Management (IDPM) stood out to me as they are not only valuable to software engineering but also valuable to my learning and personal developments. Throughout the course, I gained hands-on experience with Github and developed a web application with a team, ending up with quality results because of the techniques we used. These techniques not only streamlined our project but also improved my skills in teamwork, time, and project management which are valuable across any industry.
This module of the course taught me about the importance of version control in software development. Version control systems allow developers to keep track of different versions of files vital to the software. This is especially useful for shared repositories, storage spaces that hold the files, that involve multiple developers working on the same project at the same time. With Github, any changes to the repository are tracked. Github allows developers to make branches off the main repository, and make a pull request when we are finished making changes. Other team members can review those pull requests and Github automatically checks for merge conflicts that might mess up the functionality of the software. This is why Github’s version control system was a vital platform used for our final project. I learned how to effectively use Github’s version control system. As a result I have become much more familiar with Github than I was before taking this course.
This course also introduced me to another software engineering tool, Github Desktop. Before Github desktop, I was running git commands in my local terminal when updating code for a project. Although I was taught how to run these commands and what they did, I would make mistakes. Cloning, stashing changes, switching branches, pulling, and pushing code are all made easy with Github Desktop.
IDPM is an agile project management process that my team and I utilized for our final project, a web application called Campus Plate Mate. We had a little more than a month to complete our final project, within that month we delivered finished/functional parts of our project every 7-10 days (milestones). This method allowed us to focus on a certain goal each week or so. We focused on designing the user interface in the first milestone, worked on the functionality for the second, and made final changes to both the UI and functionality for the last milestone. It was easier to check-in and make progress this way and we avoided having to cram in all the work near the submission deadline.
Additionally, before starting the project, our team created a Github workflow that organized our issues into ‘To Do’, ‘In Progress’, and ‘Completed’ categories. This workflow helped us keep track of all the tasks that need to be completed and those already being worked on by the other team members. These tactics have been very valuable in improving my time management and teamwork skills. These skills along with IDPM are beneficial to not only software engineers, but to any profession or personal projects.
This course has taught me valuable management skills that I will use throughout both my academic and professional journey. Ultimately, I found IDPM to be a very efficient process compared to other project management processes. Configuration management helped me become familiar with platforms such as Github and understand the importance of version control in software development. Even beyond software development, it is essential to track changes to projects. IDPM is a process that promotes time management and collaboration, both of which are important for quality results.