Software engineering is something that has intrigued me ever since I switched majors from Computer Engineering to Computer Science back in my first semester of college. The idea of creating and coding software, something I first dipped my toes into in my first semester of college, is something that I see myself doing for the rest of my life. One reason that really interests me about software engineering is the fact that I will always be learning new things everyday. Software is something that is everchanging, so something that works one day and is highly regarded could be obsolete and considered a “thing of the past” the next day. This is because new software comes out quite often and there are always updates and optimizations to existing software in order to create better performance or even to improve correctness. As software continues to change, we as software engineers need to follow along with the meta and make sure we learn about the new things that come out in our universe so that we can apply them to whatever it is that we need to do.
Another aspect of Software Engineering that intrigues me is the Software Development Life Cycle, also known as the SDLC. There are many different views of the SDLC, and different variations of it have different stages to consider. However, for the most part, the general idea and the sequence of the steps is essentially the same across all variations. There is always some sort of planning phase which leads into going through the actual coding and design implementation process. After this, we test everything and then release, which then leads back to maintenance and the repetition of the cycle. The entire process of software development just intrigues me because of how general yet specific it is. We always follow the same process when working on new projects, but each time, there is always some sort of variation that changes things up. Switch ups and new things that come my way are what really interests me about software engineering. As I mentioned above, I really like learning about new things and learning how to apply them in my own way, so every time I go through the Software Development Life Cycle process, I try to learn something new about what is going on. That keeps me pulled in to the world of Software Engineering and is one of my driving forces that keeps me going in this field.
Skills I hope to develop in the future are being able to seamlessly integrate a front-end with a back-end and using multiple languages in a project collaboratively. For the first skill mentioned, I have had projects where I have had to implement a front-end with a back-end; in fact, one was in the younger sibling class of this current ICS 613: Advanced Software Engineering class, which was ICS 314: Software Engineering I. However, although I have had experience doing so, I feel like there is still so much more for me to learn about it. For example, I am not the best with databases whether that be using MongoDB, SQL-based databases, or anything else. I feel like I still lack quite a bit in that area so I wish to refine my skills in that area to make myself more well-rounded and to have a better understanding of those things. For the latter skill, again like the first skill, I have had projects where I use multiple languages in the same project, with the most recent example being my Master’s project where I use mainly C++ for the backend with a Javascript frontend. What I mean when I say I want to develop this skill in the future is that I wish to get more chances at these types of projects so I can further improve my process of going through these projects. I wish to learn more about how to integrate them together seamlessly in order to take advantage of the benefits of each programming language (e.g. speed for C) while using another language to cover up its weakness/weaknesses.
Experiences I hope to have in the future are working on large-scale (or larger than what I have done so far) projects and experimenting with programming languages that are new to me. With the former experience, I say this with a look ahead towards the future, but not necessarily the immediate future. When I say this, I am mostly referring to when I get out there in the workforce. When that happens, I want to work on projects that are larger-scale than what I am used to. I want to push myself outside of my own comfort zone and I feel like this is a way to do so. By doing so, I can give myself more invaluable experience in the real world as well as the world of Software Engineering in general. As for what the large-scale projects would entitle, I am not quite sure about that part, but I know I want to contribute to something that will be used to make a difference. I want to feel the impact of my work, whether that be small and directed towards only a certain group of people, or large and towards the general public. For the latter skill, throughout my college career to this point, I have experienced many different languages from C to Java to Javascript to LISP to Prolog and many others. With these experiences, it allows me to widen my skill circle by learning these new languages. It allows me to become more well-rounded and gives me a chance to learn the good sides and the bad sides of each language. I want to continue that process of learning new programming languages so that I can learn more about the world of Software Engineering and so that I can be able to apply those languages in future works that I may partake in.