Review of an Interesting Semester

11 Dec 2023

After a long semester of hard work in my first software engineering class, I would like to talk about my main takeaways. I joined ICS314 with no JavaScript, database or front-end experience. Although I have learned all of those skills in this course, my main takeaways dealt with open source software development, design patterns and development environments.

Open Source Software Development

Although I have been programming for over 6 years, I never needed to use GitHub. Most of my projects were small and did not need a version control software. Taking ICS314, I realized that knowing how to use GitHub effectively is a skill that takes a lot of time to master. Even after a semester of using it, I still only know the basics; how to pull, fetch, update and push. But there are many other commands that I would like to be familiar with. Using GitHub made collaboration during the Hawaii Annual Code Challenge much simpler. I never really understood the importance of tracking changes until this semester. There have been many instances during the HACC where changes needed to be reverted and GitHub’s version control saved us. I see the importance of using GitHub for collaboration, but it would also be really helpful for solo work. I hope to contribute to other open source projects in the future. However, I know that I still have a long way to go to master GitHub.

Design Patterns

What I have learned from ICS314 is that being thoughtful about the code you write in the beginning of a project is essential as it builds the foundation of your software’s future. I think of design patterns like a template. A template that you should follow to assure that pieces of your code work nicely together. After my experience in the Hawaii Annual Code Challenge, I think I finally realize the importance of having clean code. We took second place which is great. However, I think that if we spent more time planning the structure of our project, It would have saved us time and allowed us to add more features and possibly take the win. Writing code that works is great but writing code that works and is easily readable and scalable is much more important. At this point, I know how to code and learning new languages is fairly easy. I want to make it a goal to learn different design patterns and how to implement them in my other projects. The project that I have worked on the longest was for about four weeks. I hope that in the future, I can work on something important to me for a long time. I’m talking years. I understand now that learning more about design patterns will help me to achieve that.