A Warm Summer Breeze

12 Dec 2023

The SWE Dream

For a while now, I’ve been debating which path I want to go on within computer science. As of recently, I narrowed it down to either being a machine learning engineer or a software engineer. After taking both ICS314 (Software Engineering) and ICS 235 (Machine Learning Methods), I can now confidently say that I am leaning towards Software Engineering as my primary career goal.

Although I wouldn’t say that I enjoy all aspects of web application development, I do have a strong interest in many software engineering concepts. I enjoy working with Git and seeing a project come to life through multiple iterations, and being able to design programs that work in a simple, standard way.

Pretty Code

Before just a couple months ago, I despised coding style penalties. In my old classes, I used to get docked points for improper parentheses placement and bad spacing.

However, with the introduction of ESLint, it has actually become LESS of a hassle than it would be without it. I’ve found that I get a little dopamine rush whenever my code finally is free of a myriad of red lines, and that everything tends to look a lot more standard and organized.

ESLint enforces coding standards, which are a set of guidelines used to create consistent code that follows a set of best practices. These standards are important because it helps make code more readable and efficient.

Working Code

As important as readable code is, it’s reasonable to argue that functional code is even more important. This is where functional programming comes into play.

Functional programming is an approach that involves using functions in every aspect of the codebase, inclusing variables, arguments, and return values.

Another part of this is the abolishment of for loops to access array indices, instead using underscore functions like map and filter. This allows the code to both appear and function as a more compact system.

Configuration Management

Collaboration was one of the most enjoyable parts of the HelunaManoa project I completed this month. My group of 5 was relatively efficient and was able to develop software with minimal conflict. This would not have been possible without Git and what we learned about configuration management.

Configuration management and Git go hand in hand in software engineering. Git version control allows for programmers to go back in time and revert to older, less buggy versions. Commands like push, add, pull and commit were all used extensively to make sure everything was up to date.

Another part of configuration management was being able to communicate effectively through merge and push messages. Being able to revert to certain versions means nothing if those versions are unlabeled.

Conclusion

I enjoyed the process of learning about the core aspects of Software Engineering throught ICS 314. I believe that it has made me a better programmer as a whole, and I hope that I will be able to retain and use these skills across multiple classes in the future.