The Essence of Software Engineering

08 May 2025

The Journey of Problem Solving

As I come to an end in my Software Engineering course at UH Manoa, I have gained many skills which I could apply not only to the content which I covered in the course, but in other aspects of my life as well. The course was designed to teach us different aspects of Software Engineering and that it did. I was introduced to many topics such as Open Source Software Development, Configuration Management, Functional Programming, and many more. These topics were introduced to us through web application development however they can be applied to a variety of projects because they are not specifically for one thing or another, they can apply to any project for software engineers.

Coding Standards: A Shared Ideology

Just as each person can have their own unique writing style, each person has their own way of coding as well. Unlike writing individual essays, however, code is almost always not individual work but rather a collaborated effort of multiple people all working towards a similar goal. Due to the collaborative nature of coding projects, each person working on the project needs to be able to understand what the code is doing as well as be able to write code that will be understood by others working on the project. This is important because if there is confusion within your understanding of the code, then it could increase the amount of time it would have taken for the project to be completed by an enormous amount. Without proper coding standards, the codebase could look like spaghetti code full of useless lines that do nothing or could be formatted all on one line (hopefully never happens). With proper coding standards, this can all be avoided by implementing “good” coding practices such as using single quotes in strings (for typescript), using === rather than ==, avoiding “any” unsafe return type, and so on. These examples are specifically for typescript given courtesy of ESLint, but this can be applied for every coding language. These standards not only help avoid bugs and unsafe code, but also significantly improve readability and help smoothen the workflow of the project. Overall, when doing a project, it would be very helpful if the foundational parts of the project were constructed similarly to not cause confusion and miscommunication within the members working on the project. Presentation slides would be a good example. Imagine you were tasked with creating slides with a group for some topic, and each group member had their own part of the presentation to work on. If every member had a different theme to their slides, the fluidity and continuity of the project would be quite skewed. This isn’t to say that every single thing has to be the exact same; I think that it is great to have individuality and uniqueness within projects otherwise, they would be dull and monotonous.

During the week that I learned about ethics in software engineering, it opened my eyes to a lot of things that I never really thought about. Of course there are common issues that I was aware of, such as honesty, integrity, privacy, etc., but there were some situations that I had not even thought of, for example the story of how the University of Minnesota got banned from the Linux kernel due to its questionable research practices (conducting research without notifying they were). Throughout that read, I hadn’t even thought about the fact that in the realm of software engineering, human experimentation was possible and had been done before. There was another example situation given to my class one week, where there were two workers at a company, a man with 2 years with the company who uses AI but didn’t know basic skills (i.e. using GitHub), and a woman with 8 years in the company with proficient experience as well as contributions to the progress of the company, and it turned out that the man had been promoted rather than the woman. This opened up a large amount of issues not only relating to software engineering but also the human aspect of ethics as well. Debating about how this act opened my eyes up to issues that I would have never seen, such as the possibility that the man was hired because of his gender or that they overlooked the woman’s skills because the man was proficient with using AI, which is the “future.” The whole topic of ethics is important in nearly every aspect of our lives because, without it, the world would be living without any restraints or consequences, and there are malicious people who will take advantage of that. Learning how to create software and to improve it is one thing, while upholding ethics that coincide with the public’s as well as the professional world’s ethics is another important topic.

A Brief Glimpse into Software Engineering

I have learned quite a bit in my software engineering class, however, most of it was surface-level information, and each topic we did cover had so many more levels within them. Nonetheless, this course has helped round out my understanding of what it means to be a software engineer a little more than what I had previously known. As previously stated, learning how to write ‘Hello World!’ in some coding language is the start to developing your individual skill in programming. Understanding how the real world operates and preparing yourself to join the workforce as a programmer is another thing. You could be the greatest programmer in the world, but if you don’t know how to work with a team or how the overall software development community operates, then things may not play out so well for yourself. These are skills that are fundamental and not only apply to software engineers but can also apply to other fields and even to your day-to-day life. Whether you like it or not, our world operates on collaborative efforts, and without the help of others, our world would fall apart. Understanding this and implementing it in your life can help you become a “better” software engineer who can actively and effectively incorporate oneself seamlessly into the workflow of every project that may come your way.