To me, software engineering has been a journey not only into the technical aspect of implementing code, but also towards the idea of thinking like a programmer, like an engineer trying to create something. From mindless code for practice to the application of code to solve a created problem. Of what we learned, the most applicable I found to my outside application is design patterns for the way they pave our implementation, coding standards to keep it readable and transferrable between other users, and ethics that challenges my morals and sees me to create the best product I can create.
Design patterns work as a solution checklist of sorts in solving the many problems that we will face as software engineers. They are the tried-and-true ways to work around a problem.
While some design patterns are creational, like the singleton only allowing for a single instance of a class, like a database, working well for software development, other design patterns are different and are used for more specific fields such as authentication and authorizing. They can definitely be used by all types of applications, software, cybersecurity, or other, but some focus on the design pattern. More examples include facades and decorator for cybersecurity apps and observers and adapters for software.
Coding standards are what keeps code readable to most programmers, easy to maintain, and ensures consistency no matter what the program. They are especially important for long standing projects where the programmers may come and go. This was particularly useful in things like my final project where some issues went into other people’s code that they worked on. Standards ensured that my groupmates could understand my code and that I could understand theirs.
Standards in the cybersecurity are definitely required to maintain the secrets of others. That hashes are correctly mapping to completely separate hashes and no repeats creating no collisions or the keys for encryption staying consistent with the current. Furthermore, for things like mobile apps, keeping code that works for both mobile apps and other apps like desktop are very important for creating a consistent experience across multiple platforms. Coding standards assure not only standards for the developer, but standards for the user!
Ethics in software engineering applies to aspects where the function or side effects of what is being made may negatively harm the individual using the app. It didn’t apply much during our class as we haven’t dealt with it much, but it is definitely something to consider for other appliances. Within cybersecurity, it’s a given, to protect everyone’s secrets and whatnot, but that is generally a good thing, no doubt about, but what about games with micro transactions, weaponry or programs that can harm people, or even gambling sites?
While it serves no practical use as the site or program is still made, it allows for a sense of fulfillment or not depending on how the ethics of creating such applications align with the developer.
Not a purely this or that class, but software engineering has shown me how to make use of my tools and has challenged my mental to wonder how to gain fulfillment from this, whether it be through money or a sense of accomplishment. What I have covered and much more will have curated a mindset to allow for me to progress through the rest of my schooling and eventual career.