Reflecting on Software Engineering

11 Dec 2023

The foundations covered in this course on software engineering, when viewed one-dimensionally, can only be applied to web development. However, this is not the case. For the most, if not all, of the principles we covered in this course can be applied beyond this field. In this essay, I will discuss two of the software engineering fundamentals that transcends beyond software engineering.

Open Source Software Development

In web development, the term “open source software” refers to the usage of publicly available source code that programmers can view, edit, and share. Web development frameworks like React Bootstrap and content management systems like WordPress are popular examples of open-source projects. While I haven’t personally utilized WordPress to create a website, I have used React Bootstrap both within and outside of the classroom. Compared to developing with raw HTML and CSS, using such a framework made designing responsive web applications so much easier.

This concept of open source can be applied beyond web development. One very obvious example of this would be writing a research paper. Using online resources and properly citing them is like using a framework like Bootstrap in the academic writing space. Researchers can access publicly available studies, papers, and data to enhance their own work, just as programmers leverage open-source code to improve their projects.

Configuration Management

In web development, configuration management refers to the tracking and management of dependencies, environment configurations, and program modifications. Web projects employ tools like npm or pip to manage dependencies, and version control systems like Git are essential for tracking code changes. Github and Github desktop were utilized in class to track and manage assignments and projects. I have used Gitkraken, a well-known Git client that offers an easy-to-use interface for managing Git repositories, outside of the classroom. Gitkraken lets you track changes, work with team members using Git, and see the branching and merging of code. It streamlines the Git workflow, facilitating developers’ comprehension and administration of version control in web development projects.

The use of configuration management techniques to video editing may not come as a surprise to someone who has previously explored the interplay of software engineering concepts with the field of video editing and the broader creative media sector. I explored the similarities between video production and coding techniques in my earlier essays. One of the key parallels between software engineering and video editing lies in the management of versions. Just as version control systems like Git track changes in code, applying this concept to video assets ensures a comprehensive history of edits, aiding collaboration and providing a safety net for experimentation. Shared storage and cloud-based platforms like Google Drive and Dropbox can act as a version control. This allows multiple editors to access the same files and collaborate seamlessly.

Conclusion

To sum up, the principles of software engineering that are covered in this course are not limited to web development; rather, they may be applied to a wide range of fields. One of the foundation of web development, open source software development, provides a compelling analogy for team projects in other fields, like academic studies. In the same way that using open-source code improves programming projects, researchers can further their work by using openly available studies and data. Another important concept in web development is configuration management, which has applications outside of the industry, most notably in the artistic field of video editing. The flexibility of software engineering principles is demonstrated by the similarities between version control systems such as Git and the careful handling of alterations in film assets. Structured workflows, collaborative tools, and methodical techniques are essential for improving both the technical and creative processes, whether one is tracking code changes or video alterations.