An Unexpected Journey

10 May 2024

Changing Paths

An old pastime of mine was to stare obsessively at my degree plan and chew the insides of my mouth bloody. I would look at each semester’s classes, credits, requirements, and more over and over again until the taste of blood filled my mouth and I couldn’t feel the insides of my cheeks. Guidance notes fill the right half of the page from the countless meetings with advisors and five major changes. No matter how many times I changed my course or how long I stared at my degree, nothing seemed satisfying. Instead I would spend hours agonizing over the idea that I was making a decision that would follow me for the rest of my life. What if I didn’t like working in chemistry, biochemistry, or biology? I certainly didn’t enjoy going to class for them. What if I was making a laughably expensive mistake? The fear of coming to the end of my educational experience, graduating with a degree I was unsure about, and then entering into a workforce that would drain me of life paralyzed me for years. So, before my final year of university I decided to take a last minute journey and study abroad. Admittedly, I was running away from the horror of graduating and making some kind of decision about my life, but in hindsight I ran to the right place. I found myself in Japan for a year where I was lucky enough to study at and visit some of the top research universities in the world with an amazing international group of people. It was here that I realized, with the help of the people and environment around me that I didn’t actually need to choose. Japan is a country that excels in preserving the diversity and beauty of its natural environment while still being home to one of the largest and most dense cities on earth, a feat that is unimaginable in most other countries. It is also at the forefront of conservation technology and advancements. The unique relationship between technology and nature in Japan is what first inspired my interest in combining computer science with my biology major. When I returned to Hawaii the following fall, I was sure I wanted to minor in computer science. I began the path of my unexpected foray into computer science; my new journey. But where would I begin? Suddenly throwing myself into a field that I knew nothing about so late into my degree scared me to death. But now, as I near the completion of both my major and my minor, I can confidently say that I am excited about my degree and where it might take me. I think ICS 314, software engineering, was a significant part of my growth towards this.

Something that has become very important to me over the course of my journey in computer science is accessibility. As a student coming from an unrelated degree, I had an extremely hard time adjusting in some areas where I had less experience than other students despite being in entry-level classes. Some of these kids had been programming since middle school. As a result, I became very invested in things that felt as if they were “evening the playing field”. Part of the reason why I enjoyed ICS 314 so much is because it provided me with so many of these “accessible” concepts such as open source software development, coding standards, and ethics.

Open Source Software Development

Perhaps the most important concept I feel we covered in ICS 314 is Open Source Software Development. Open source software development involves a collaborative approach to creating software, where the code is freely accessible to everyone. It encourages teamwork, transparency, and allows anyone to modify or distribute the software. This concept fosters innovation and ensures widespread access to technology which is extremely important to accessibility within as well as outside of the computer science community. Open source software development is what allows the replicability of code and the ability to learn from other programmers. This not only benefits all programmers as a whole, but also allows people without programming experience to see how apps, websites, or programs are created and encourages interest in computer science. Open source materials are the things that helped me the most in my journey as an inexperienced student transitioning into learning about computer science. Without Github and Stack Overflow, I would have gone insane before earning my degree.

Open source development plays a particularly important role in my specific field of interest, conservation technology. By making research and projects in conservation open source and freely accessible, others are able to contribute by taking part in conservation efforts. For example, the machine learning I do in my conservation lab is heavily sourced from open source software developments such as the machine learning program Edge Impulse where I train my coqui frog and bee sensors. Open source software development is the key to technological development because it makes programming accessible for more people to take part in.

Coding Standards

Coding standards are universal guidelines that govern the structure of programming code within a software project. They ensure consistency, readability, and maintainability across the project by establishing rules for things like indentation, naming conventions, commenting practices, code organization, and the usage of programming constructs. By enforcing these universal rules, coding standards promote clear communication among developers and allow for many benefits such as simplifying debugging or maintenance tasks and elevating overall code quality in software development projects. Coding standards are another integral part of making software engineering, and programming in general, accessible. Because of coding standards, inexperienced programmers such as myself can see common patterns in different coding languages. This standardization makes it much easier to learn a language than if every programmer had their own style of coding. Coding standards were one of the first concepts I could identify even coming from a field where I had never touched code previously.

There is little to be said about how coding standards may be used in any future projects or careers as it will be involved in literally everything I do. I doubt I will find any career or project where I don’t make use of coding standards in my work.

Ethics in Software Engineering

Ethics in software engineering can be defined by the ACM code of ethics and professional conduct. The ACM guidelines outline a set of principles and rules for ethical behavior in computer science. It emphasizes the importance of integrity, fairness, and respect for all individuals affected by computing technology which in this day and age is everybody. The code addresses various ethical considerations, including professional responsibilities, privacy and security, intellectual property rights, and the societal impact of computer science. It encourages professionals to act in the best interests of society, to contribute to its overall well-being, and to not use their skills to do harm through technology. Overall, the ACM Code of Ethics serves as a framework for ethical decision-making and professional conduct for computer scientists. In my opinion, ethics in software engineering is perhaps the most important thing I learned in this class, despite its module being only a day long. Learning the ethics of your field as a STEM student is incredibly important particularly because we have less exposure to discussions about ethics and morality in our majors. Without these discussions, the tools we are given through our education can do irreparable damage on society. I feel this also ties in with my emphasis on accessibility as ethics can humanize computer science and software engineering. As someone with no prior experience in computer science, the entire field seemed very distant and disconnected from the rest of society until I began programming myself. Now I can see how it is intertwined with daily life and how the ethics of what we make is so important.

I know I will be using ethics, especially the ACM conduct code, constantly in my future careers and projects. A good example of how I am using it now is in my Coqui Frog Sensor project. While the sensor itself is used to track the invasive species that threatens insects, we also built the sensor to “do no harm” to the environment and invasive frogs themselves. The sensors are made to not disrupt the natural ecosystem of the forest while also allowing us to collect data on an invasive species so we can make a plan to manage their populations without causing undue harm. To do this, the program I made for the sensor and the counter do not emit any unnecessary sounds or light that may disrupt the forest and its inhabitants. I am confident I will continue to use ethics in any future endeavors.

Finding My Way

In summary, my journey through computer science, particularly shaped by ICS 314, has been enlightening. Concepts like open source software development, coding standards, and ethics in software engineering have been instrumental in my growth as an inexperienced software engineer coming from a biology major. These principles not only equipped me with valuable tools for programming but also emphasized accessibility and inclusivity within the field, which are things I value immensely as someone who entered it later than my peers. Moving forward I hope to advocate for accessible computer science, humanizing the discipline through ethics, and welcoming others into the field just how others did for me. My time in university, coming to an end with ICS 314, has been a long and winding path with many, many stops and turns along the way but after this course, I am confident to say I have found my direction and I will forever be glad I decided to step out of my comfort zone and go on this unexpected journey.