Software Engineering is Hard

12 May 2022

The Fundamentals

Throughout this semester I was able to build my repertoire in software engineering. Although this course focused primarily on web application development, it taught me many fundamental software developing concepts and values. Some of the concepts that stuck with me include Agile Project Management, Design Patterns, and Ethics. By engaging in the topic of software engineering through this light I have been able to see that a programmer at the top is backed by not only their skills as a coder but also someone who remembers and applies the fundamentals.

Code With the “Best Design”

Learning to code with the “best design” may sound like picking a matching curtain design for the ambiance of the room, when really it has more to do with the coding choices rather than the visual presentation. In my essay Ka ʻŌnohi O Nā Code I parallel the concept of Design Patterns to hula and I still stand by it. Like hula, the goal of a Design Pattern is to describe some sort of problem in our environment that occurs many times, but we can come up with a solution that can be used over and over, without doing it the same way twice. No two projects, people, or environments are the same or meet the same criteria, design patterns can be used to tackle each individual problem in the most efficient and suitable way while still achieving the goal of the project. In hula no two hālau will dance the exact same way or have the exact same choreography but the goal remains the same, to portray the story of the song and its author.

Being Ethical

When hearing the word ethics, one might think: “well duh, being a decent human being should be a given.” Easier said than done for some people. All jokes aside I actually really enjoyed learning this topic in more depth during the last weeks of this semester. I was expecting to only hear about things like not trying to scam anyone online, stealing personal information, or hacking but I was surprised to learn there were much more political and social aspects as well. For example in class we debated about the ethics of facial recognition. This debate made me realize what a difference the field of technology and computer science actually has on the world, it could possibly ruin lives just as much as it can improve them. The weight of that thought was heavy, but it only made me more motivated to try and support the latter half. As programmers we must take into account as many consequences and minimize the damage that could be done, and if we were to find discrepancies it is our duty to do our best to eliminate them.

It takes a village to raise a child

The saying “it takes a village to raise a child” could not be more true! This saying is one that frequently circulated both my journey going to Merrie Monarch as well as my journey with this final project. The final group project for this semester really demonstrated how much of a group effort it is to push out a final product using Issue Driven Project Management. With the help of the projects feature in GitHub, splitting up and completing tasks was made much easier within the group and took care of a lot of organization. Moreover, Issue Driven Project Management allowed for our group to change the way we look at group work, it allowed us to come together and effectively come up with, assign, and complete tasks with the full trust that each team mate would contribute to the project without being babysat. This skill is one that I will most definitely take with me into the future. Interacting and communicating with people within my project team, my field, and outside of my field is of the utmost importance. In a world where technology and media is prevalent, connections and communicating ideas takes heavy precedence. Therefore, being organized and being able to share the progress of a project is also important as it could lead to better opportunities.