Novice to Beginner

17 Dec 2020

My Software Engineering course has been a great adventure, easily my favorite computer science class to-date. Through this class, I have gained the confidence to pursue a career related to computer science. I may be far from ready, but I am now confident enough to see this journey through.

Hands down what I consider to be the best skill I learned, was working with version control implemented using git and GitHub. For the layman, version control is a system that allows users to save their work in different states. Often with development, developers want to make a copy of the current work to experiment with and then later combine this to the original. One could just make changes to the original, but if said changes resulted in system failure, reverting everything is a painstaking process. Git is a version control system, one of many but easily the biggest name in the game. And GitHub is a tool to make using Git simple for users. Through this course, I pushed many projects to GitHub repos and by the end of the course, my final project relied heavily on GitHub to collaborate code with group members. Before learning version control, classmates and I would Dropbox entire zip files of code to one another and it was always a mess – even for small scale projects. Sharing codes, splitting branches, merging branches, I cannot believe this is all open source! How did developers manage without it? I am certain that whatever I career I end up in, so long as it pertains to computer science, I will be using some form of version control. Likely git and GitHub.

My second favorite lesson I learned from my Software Engineering course was on design patterns. Simply put, design patterns in software development refers to the use or study of established templates for solving commonly faced problems. For example, if a developer wanted to write code to ensure the creation of just a single instance of an object – they would likely at least start with the use of a design pattern called Singleton. As the name implies, it is used to create a single instance and ensure no other copy is made. Without knowing it, I have worked with many design patterns over the course of several months: Singleton, Publish-Subscribe, and Prototype are just a few of the ones that I recognize using. In the summer of 2020, I lost out on a great opportunity because I was not yet familiar with web development design patterns. Had I been faced with the same opportunity today; I would already have a good idea of how to development the application proposed. It would be written in Meteor with Semantic UI and React, and it would involve several design patterns I learned from the course.

Halfway through this course, I already began to apply for numerous internships, now confident with the knowledge I have been armed with. Not equipped well enough to already complete the journey, but knowledgeable enough to know where to start and eventually figure out how to reach my goal. Although I have only begun to scratch the surface of what I have learned, I am very excited to learn about other tools – working in angular, android, and platforms written in other languages.