A Taste of Software Engineering

16 Dec 2020

Dipping My Feet in Software Engineering

As I near the end of the ICS 314 Software Engineering course, I realize that I only dipped my feet in the waters of software engineering. After this course, there is still a lot more knowledge for me to learn. However, that is not to say that this course did not cover much. In fact, this course has gone over many topics of software engineering. So much, that I could sit down and talk about it all day, but that will be too much for today. There are however three topics that stuck out to me and they are coding standards, user interface frameworks, and design patterns.

Coding Standards and Their Significance

Coding standards was a topic that was heavily stressed during the halfway point of the semester, or more specifically speaking, during the starting point of building web pages. This stuck out to me the most because I find coding standards to be very important when you want developers to be able to understand your project. If there was no such thing as coding standards, you can imagine it like people writing on blank pieces of paper without the college ruled lines and without proper grammar or spelling. If there was no such thing as writing standards, our world would be chaotic and less efficient. All writing pieces will come in different forms and shapes. In relation to coding, if we did not have coding standards, people would be competing to see who can write the most complicated looking line of code which in reality is busy and ugly to the human eye. However, since we have coding standards, code written in this day and age is nicely formatted and indented, and everyone follows the same syntax standards of variable names. All in all, coding standards is always something that is in the back of my mind whenever I’m writing code. Along with coding standards, user interface frameworks is always a “pick your poison” situation for me.

Deciding Whether or Not To User Interface Frameworks

In my experience of developing projects, I always found user interface frameworks to either work in my favor or slow me down. When I first started learning web development in 2019, I thought that using user interface frameworks like Bootstrap was amazing. I remember thinking that using Bootstrap saved me the hassle of having to learn the ins and outs of CSS. However, as I started building out more small and larger projects, I began to discover that user interface frameworks can be troublesome at times. The biggest gripe I have with user interface frameworks is that you have to spend significantly more time to create your own bespoke styles if the provided styling of the user interface framework does not fit for a given situation. Sometimes, applying your own style with user interface frameworks is not as simple as giving an element a class name or id selector. In most cases, you have to dig deep and select every element from the root down to the element you want to select. Despite that main gripe, I find that user interface frameworks are tools that I would still use in the future if I were to build a project that is not prioritizing the user interface, as they definitely provide a quick fix-up for a project’s user interface. Speaking of user interface frameworks, design patterns also play a major role in developing projects.

Design Patterns Are The Blueprints

Throughout all my time learning and building projects on the web, I was not aware of the fact that I was using design patterns until it was made obvious in the ICS 314 Software Engineering course. I am not knowledgeable in all forms of design patterns in software, however I did discover that I commonly use the Model View Controller (MVC) design pattern. The MVC design pattern is one that I think I will continuously use throughout my journey in software engineering. This is because I find that the Model View Controller design pattern gives the developer a better understanding of how exactly their idea or project will function. When I found out about the MVC design pattern, I thought about my final group project for this course. The MVC design pattern made me think about how the user will use the Controller and how the Controller should function. Then, I had to think about how the Model interacts with both the Controller and View. After considering the Model, I then needed to think about a design for how the View should be presented to the user and how the View will receive data and updates from the Model. This thought process is something that I will always bring with me on future projects in software engineering as I find that design patterns play a significant role in understanding the direction and purpose of a project.

Making Sure to Always Learn

In the end, during my time in the ICS 314 Software Engineering course, I found coding standards, user interface frameworks, and design patterns to be topics where I learned a lot since they were still somewhat new to me. There were many topics covered in this course over the duration of 4 months. Even though, this course covered a good chunk of current industry practices and technologies, this does not mean I stop here. I plan to take this beginning knowledge of software engineering with me as a guide for my journey to always learning more topics in software engineering.