Develop Even Further Beyond

10 May 2024

Introduction

Computer science and software development is a huge field that changes every single day with new advancements. Being able to learn new technologies quickly and efficiently is a must for working in the industry. Throughout my time in ICS 314, I learned web development, as well as multiple practices that are important to other aspects of software engineering beyond the scope of just web development.

Configuration Management / Version Control

Version control is very important. Imagine having a perfectly usable/working application, and you make what seems to be a small change, but the change ends up breaking your entire application. Without version control, you have no way of easily reverting changes. Your only choice is to manually change pieces of code back to what it was before. In that process, you could end up breaking more things in your application. With version control, your working application can be preserved, and if things break when changes are made, you can easily revert the application back to its previous working state. During the final project for ICS 314, there were a couple of times that I had to revert changes made by myself or a group member in our GitHub repository, because those changes ended up breaking the application. Preservation of a working application is important to keep users happy on a working platform, and keep developers from pulling their hair out trying to figure out what change broke an application.

Agile / Issue Driven Project Management

Building on version control, for our final project, we used Issue Driven Project Management to assign tasks and complete them in a timely manner. An issue-driven approach for this project was perfect, as it allowed us to work on different features at once without much dependencies. People could freely work on different features without having to wait on someone else to finish their part, which is much more efficient than having members do tasks sequentially. This approach also broke down the project into three milestones, each of which having features that needed to be implemented, as well as each one building upon the last. Doing things in parallel with group members is way more efficient. This way of approaching projects is very applicable to other group projects, and I will be sure to utilize it in the future.

Coding Standards and Design Patterns

Following a set of guidelines is important while working in a group setting. Everyone should be following the same guidelines and standards in order to write readable and maintainable code not just for yourself, but whoever you are working with. Without coding standards or design patterns, group projects would be complete and utter chaos. More time would be spent on trying to understand what code was written rather than fixing bugs or implementing new features. Leave nothing ambiguous, and communicate how things should be done. But, do not be overbearing and excessive.

Conclusion / Takeaways

ICS 314 taught me a lot about software engineering. I learned about a certain type of software engineering, that being web development. I learned about specific technologies to web development, like HTML, CSS, JavaScript, React, and Meteor. I also learned about important software engineering practices, like the ones listed above. I hope to learn even more about software engineering throughout my undergraduate studies, and even more so when I start working in the industry.