Software Engineering

11 Dec 2020

Introduction

Though the semester had been bizarre and stressful for me and my fellow undergrads, I continued to remain steadfast throughout my programming classes to further develop my skills as a software engineer. The semester was filled with all kinds of challenges, notably the numerous final projects that involve coding. For each assignment given, including the projects, I applied various coding techniques learned in class lectures. By the end of the semester, my methods of coding has dramtically transformed to invoke a sense of professionalism and efficiency. Out of all the lessons I had learned throughout the semester, the following two lessons, design patterns and ethics in software engineering, stood as the primary factors of my growth this semester.

Design Patterns

One of the most interesting topics I learned throughout my programming classes was design patterns, which focuses on applying reusable coding solutions for common software problems. To effictively apply a design pattern, we, software developers, must be able to recognize and define the situation the pattern is applicable and highlight the general solution provided by the pattern. In terms of object oriented programming, these solutions are often viewed as relationships between different classes and objects. For example, the Meteor web framework applies the MVC design pattern to define the behavior between the user and the data system. In this semester, I had applied two design design patterns, Singleton and Object Pooling, in my game development project. Using these design patterns, I was able to increase the flexibility of my code and improve the overall performance of my game.

Ethics in Software Engineering

It is important for a software developer to understand the ethicality of their project designs, especially when it revolves around the internet of things. Thus far, many people in our society applied computer technology in their lives due to the ease of communication and information gathering over the world wide web. However, some people show skepticism in that regard, especially when personal information is involved. As software engineers and web developers, we must uphold a sense of guardianship in maintaining the privacy of our users. Projects, such as web applications and operating systems, must be crafted carefully to ensure no data is breached and stolen by anonymous hackers. Furthermore, we must understand that the trust between users and the developer should not be exploited for personal gain. Without the owner’s consent, we have no right to meddle with their sensitive information.