End of a race, start of a marathon

11 Dec 2023

To me, this past semester was very enjoyable, having escaped the theory and abstract problems of data structures and algorithms, I get to finally do hands on work to develop something that can be seen by not just me or my group, but by everyone on the internet. Over the past few months, I’ve learned so much more than I would have imagined, not in just coding, but also the process and concepts that software engineering requires. It taught me that to be a software engineer, it is not enough to just be a coder or programmer, it requires so much more discipline and understanding of the concepts used in the field. Concepts like open source, design patterns, and even UI Frameworks, concepts that are crucial in any software engineering project and group.

Open Source Software Development

Let’s start off with open source development. Before taking this course, I have only heard of GitHub as a website where people are able to share code and projects they have written, and had never interacted with the resource as a whole. Little did I know that it was going to be such a huge part of a software engineers daily life. Open source software development basically means that anyone can access the source code, make edits and try out the software themselves. It doesn’t have to be a website like GitHub, it can be anything that utilizes the power of the community to help move the project forward, projects like Linux, MySQL, and Node.js are all examples of using open source. This development practice involves around three major features, committing and pushing, branching and merging, and pulling. In this course, we mainly experienced the first two, where we also applied in combination to the principles of Issue Driven Project Management, a practice under Agile Project Management. These practices focused on dividing work based on different issues that the project needed, and doing work on that issue in a branch separate from the main branch. After the issue has been completed, it will be reviewed and merged back into main. Although the third feature of pull requests wasn’t used all that much in this course, I would imagine that it has a large presence when doing projects in the industry, as it is a major feature of GitHub after all. Outside of this class, I think GitHub and other open source resources are a good way to learn more about what’s happening in the industry, what are people interested in developing, and what new ideas and patterns are emerging.

Design Patterns

Speaking of patterns, one of the most important concepts that I learned this semester was about design patterns. Just like with anything in life, as you come across the same things over and over again, you start to see a pattern, and by utilizing certain steps, you can solve the problem easily. That is the same concept with design patterns, except its aim at choices developers make during development. By knowing design patterns, you know and understand the best practices to use to develop the project. Many of these patterns are able to be reused throughout the project, and even on different projects, keeping everything organized and consistent. Outside of the few design patterns our group utilized in our web application project, I can see many more design patterns being used in all sorts of different tech fields. Each field may have their own unique design patterns, but I believe there’s some that is able to break through that barrier, and be utilized across multiple or even all fields. Patterns like component based programming, singleton, Model-View-Controller and more are all crucial in all sorts of development.

UI Frameworks

User interface frameworks like react and bootstrap are useful tools used to speed up the process of UI development. In this course, we also utilized node.js and meteor to do more full-stack development and utilize JavaScript in our project. They eliminate most of the tedious CSS styling that comes with traditional web development, and also brings in more functionality with the server side. Having said that, UI is not something only found in web development, it can be found everywhere, from mobile apps, to software, and even everyday programs and tools we use, such as our IDE and operating system. If it has any user interaction, it utilizes UI, and most likely a UI framework. No one wants to see just plain text with a white background when they use a software, so I believe that UI frameworks will take me far into my future endeavors.