If someone were to ask me what I learned from taking Software Engineering (ICS 314) at UH Mānoa, I would not know where to start. Our achievements could be quantified through how many coding assessments a.k.a WODs (Workout of the Day) we passed, or our final project. The tangible outcomes of this course mostly consist of deployments that we view through a browser. The technology stack we were taught does directly relate to web development. Because of this, ICS 314 has gained a reputation of being a web development class. Instead, I feel web development is only the surface, that we have to break through in order to understand what Software Engineering really is.
Software engineering places an ethical responsibility on our societal roles. By developing solutions to the world’s problems, our code will surely have an impact on each other, the economy, and the environment.
One of the Software Engineering principles that stood out to me was Open Source Software Development. It is a well-known practice that promotes collaboration and innovation from published work. The source code is open and available for anyone to view, modify, and distribute.
The most prominent example of open source software development in ICS 314 was the meteor-react-application template. It gave us a head start on Meteor development, deployment, and boilerplate code to implement basic page display, navigation, forms, roles, and collection manipulation. It also was the backbone for our final team project. My team members and I came from different majors and coding backgrounds, which enhanced the experience of experimenting with this template. Each of us had valuable contributions that were made possible by having source we could clone and develop for a solution. This openness fosters a community-driven development.
I definitely look forward to contributing to open source code in the future. It can be applied to almost all projects and disciplines of Computer Science. For example if you have an interest in Data Science, Elasticsearch is a great open-source project that heps users put data to work in many different ways. We can really benefit from a culture of learning and sharing, as less experienced developers can learn from the code written by more seasoned coders. In reality there is no “perfect code” to follow, but that’s just another aspect that makes the Software Engineering process.
Another Software Engineering principle I took to heart was Coding Standards. They are a set of guidelines and best practices for writing code. Our class strictly followed ESLint guidelines. ESLint is a downloadable linting utility for JavaScript that raises errors on parts of code that violate guidelines of the [AirBnB JavaScript Style Guide](https://github.com/airbnb/javascript]. They ensure consistency, readability, and maintainability of the code. It’s a universal concept that varies in implementation depending on your organization. Following coding styles won’t be going away anytime soon for me.
Following coding styles meant the most to me in our final project when my teammates needed to create a branch off my work. Our code changed drastically over a matter of weeks based on our tight project timeline. We needed to understand each other’s code, and make sure we weren’t pushing code to GitHub that had ESLint errors.
Within this we found an intersection between open-source software development and strict coding standards. It set us up for sustainable software development. Our contributions are now highly accessible through our project site. We do plan on showcasing our final project and improving beyond this semester.
It is evident that Software Engineering is not just about the code that underlies web applications but also about a set of principles and practices that have far-reaching implications. This course has not only equipped me with the technical skills for web development but has also instilled a deeper appreciation for the broader aspects of software engineering. One of my most important takeaways of this course is the mindset of continuous learning that encourages staying updated with the latest technologies. The fun part is you never know what the future holds for your project.