Standing on the Shoulders of Giants: Software Engineering Reflection

11 May 2023

Software Engineering

People, at least me when I first decided to pursue computer science, may think software engineering is just making stuff that people use on the internet. In essence, if you want to boil it down like, yeah you could describe it as such. But the more I have hone and practiced my skills in this class, the more I have come to appreciate the effort that goes into software engineering. Some may think that ordinary programming is harder compared to software engineering. While programming can be hard, and is a part of software engineering, programming in a bubble is a lot more simple. With software engineering you have so many edge cases and variables to be aware of, where one mistake can ruin an entire website leaving you scouring your code for that one line. Going in without the proper skill development, software engineering can feel like a nightmare, but through some skills cultivated in this class, these nightmares can be mitigated.

Collaboration

One skill in software engineering is the idea of collaboration through open source software. In simple terms, you can think of open source software as developing something with the window open. To an extent you do not care who has access to your software. You can publish everything that has to do with your software and people can take what you have and expand on it. Something about the software not looking right to you, through open source software you can make that modification and publish it. From there, people can edit the modification, leading to possibly many different variations of one concept. In this class we utilized Github to achieve this. We would store our code here so we not only have access to it on one platform but if we were to make it open source, we could do it easily.

Designing Efficiently

Knowing the capabilities of what you are working on is one aspect of software engineering that is important when you develop applications. Understanding what are functions, variables, and the most simple, data is and how they play a part on your application. With what you are developing or what you are using, there may be some things that others may have solved and you can utilize those through frameworks. You can think of frameworks as an organized box of tools that make developing your applications easier. Sure without the organized toolbox you can probably make something similar if not better than what that organized toolbox can offer, but having access to it makes it a lot easier to develop. In computer science we have a concept known as a black box where we have something that we know can do a particular thing as long as we give it the right data. This idea along with frameworks allows developers to think about the bigger things so they can develop more and develop better. In this class we started from the bottom with developing just raw HTML. Very open but very hard to work with. As we went along, we started incorporating Bootstrap, React, and finally Meteor.

Beyond the Keyboard and Monitor

By this point you should have learned a couple of things. Software engineering is harder than one may perceive, we can collaborate to build better applications, and knowing your toolbox can make you a better developer. All of this is good and all, and in theory with some of this knowledge you could theoretically develop any program you want. One question does come to mind though. If you can develop a program to accomplish a particular task, should you make it? Is this application ethical? As a developer, for some reason we are not held to the same standardization as some other sectors like engineering. Anyone can access a computer and make anything that comes to mind. It is important to consider what you make, where you work, and are you ok with doing this. While it is important to know how to develop a program efficiently, being aware of its potential effect is equally if not vastly more important than making the program itself.