Software engineering. If you were to ask me what exactly software engineering is. Especially after taking an ICS 314 Software Engineering course here at the University of Hawaii at Manoa for almost 16 weeks. I’m going to have to respond with, “I’m still not sure”. And that’s not because I don’t know what software engineering is. Otherwise, I just have wasted 16 weeks of my life. No. It’s because software engineering is just a concept that is too hard to describe or explain to someone with simply just one or two sentences. Software engineering is like an onion. It has layers upon layers. Concepts behind concepts at every action and turn. At that point, I might be too lazy to explain and just go with “We just code and stuff” and end it there to save time from an endless conversation. Though, let’s say we had all the time in the world. Better yet, a way to tell people without actually having to talk. Like this essay. Thus with that said, let me explain to you, what software engineering is to me.
While reflecting on my journey through this software engineering course, I’ve realized that while the development of web applications was a primary focus, the essence of the learning experience lies in mastering concepts applicable across diverse stacks. Three areas that particularly resonated with me throughout this semester as we dove into web development are Agile Project Management, Coding Standards, and Ethics in Software Engineering.
Agile Project Management stands out as a methodology emphasizing flexibility, collaboration, and incremental delivery. Up until this point, I’ve always been used to having to code alone as an individual and was quite inexperienced with how to actually collaborate on a team. Though through agile project management, its principles transcend the confines of web applications and can be applied to a spectrum of projects across various domains. Within Agile, Issue Driven Project Management stands as a style that promotes transparency and accountability by breaking down all the work, piece by piece, by creating small manageable tasks or “issues.” With experience, I eventually came to believe that this approach ensures adaptability to evolving requirements and mitigates risks throughout the project lifecycle. And plays a great role in the importance of completing the project as a team. By embracing Agile principles, teams can navigate evolving requirements, manage risks effectively, and deliver value incrementally, instead of all in one go.
Coding Standards also play a crucial role in software engineering by defining guidelines for writing clean, maintainable, and efficient code. Its principles at first were quite unfamiliar to me as I was not used to having to follow certain rules when coding. Like an essay, I always envisioned that coding was a way to express an individual’s style. Their work. Their personality. Though throughout the semester as I painfully payed attention and meticulously followed all standards one by one. I’ve learned that adherence to coding standards is very much emphasized in software engineering. Despite how painstaking it may be. Coding standards help bring “meaning” to Web development. Consistent coding standards facilitate collaboration among team members, improve code readability by making sure that everyone can understand, and reduces the likelihood of introducing bugs.
Consider a scenario where a team is developing firmware. Adhering to coding standards ensures that the codebase is well-structured, making it easier to maintain and debug. Moreover, consistent coding standards promote a culture of professionalism and quality within the development team, regardless of the project’s nature or domain.
Ethics in Software Engineering is another critical aspect that was also quite unfamiliar to me. I mean, after all, I came into computer science fully thinking about; well, simply just coding. Never did I ever have to expect that we also had to deal with the philosophical concept of morals of right and wrong. Though, looking more deeper into it, Software engineers do hold significant power in shaping the digital landscape, and as Spider-Man once said “With that great power comes great responsibility.” Thus, ethical considerations, such as privacy, security, and inclusivity, are paramount in software development, regardless of the project’s scope or scale.
Whether developing a web application, a mobile app, or an enterprise software solution, software engineers must uphold ethical standards and consider the societal implications of their work. For example, in the context of developing artificial intelligence systems, ethical considerations regarding bias, fairness, and transparency are of utmost importance to ensure that the technology benefits society as a whole.
In essence, software engineering encompasses more than just writing code for web applications. It’s about embracing principles like Agile Project Management, adhering to Coding Standards, and upholding moral concepts like Ethics in Software Engineering to engineer solutions that are not only functional but also robust, maintainable, and ethical. As I embark on future projects, I carry not just technical skills but also a deep understanding of the timeless principles that truly show what “software engineering” really is.