Insights into Software Engineering

20 Dec 2024

Overview

When it comes to software engineering, ICS314 has provided me with the necessary skillset to operate on both technical and collaborative levels. The course taught me what I would consider the essentials of programming needed to be able to work in real-time situations. The ability to not only write functional code but also understand the processes, tools, and methodologies are all the stepping stones to create successful software development projects.

Open Source Development

GitHub is a prime example of open source development where the source code of a project is made public for anyone to view, use, modify, and distribute. It is an application that I’ve learned and used extensively in this course. Configuration management also falls in similar topic. Things like branching, merging, and overall version control made coding easier and more convenient. In such cases where I had to work in a group for the final project, the previous instances where I had used GitHub created a solid foundation for when I collaborated with other people. During the final project, I often made commits and other branches to test files and features that I implemented to avoid unnecessary drawbacks or errors. I had used previous branches to compare to newer and edited files for the convenience of tracking changes and making sure everything is stable and runs accordingly.

One of the key takeaways from this subject are effective communication, structure, and documentation. It’s no surprise that in a team setting these are all crucial but having first-hand experience before stepping foot into the real thing was invaluable. These are fundementall skills and knowledge that I will be using in the upcoming future.

Development Environments

To dip your toes in software engineering, the right tools must be needed to move forward. I personally did not have a good laptop heading into this course. I had a five-year-old laptop that only held 8 gigabytes of RAM, so trying to do the assignments and deploying things took longer than the usual time. About two months before the end of the course, I had bought a MacBook with 16 gigabytes of RAM which was sufficient for this course and future tasks.

A good development environment is critical to support the quality of productivity and efficiency when writing, testing, and deploying code. In this course, we primarily used VSCode as our IDE. It proved to be a very convenient tool with its wide range of extensions and syntax highlighting. It also had its own integrated terminal. Additionally, as aforementioned, GitHub was used to track changes and pairing this with VSCode made it very convenient to progress.

Conclusion

Overall, having had the experiences and insights into the complexities of software engineering, I have gained a much deeper understanding of the topics that drive this field. From learning new framework languages to creating a collaborative website, to managing a database, each experience has broadened my skills and knowledge to further my abilities in the future.