Software Engineering 101

10 Dec 2023

Introduction

As someone who is interested in web development, I was mostly expecting to learn about the user interface in my ICS 314 Software Engineering course. To my surprise, along with getting to learn about User Interface Frameworks, I also experienced other fundamental software engineering concepts. These included coding standards and Agile project management.

Chapter 1: UI Frameworks

Before taking ICS 314, I thought that most of the user interface design was done using HTML and CSS and by having to manually write all the design elements. However, throughout the course I got to experience UI frameworks, which are collections of pre-built components, libraries, and design elements. One example of a UI framework that I got to use in my code was Bootstrap 5, among others. After creating several web pages with Bootstrap, I’ve found myself saving more time and creating less CSS classes or attributes used to apply unique styling to HTML elements like text. Its simplicity in styling eliminated the need for manual resizing of images, texts, and other elements. I no longer had to spend a lot of time on spacing and margins and got to focus on the core aspects of design. In the future, I will definitely continue using UI frameworks for web applications. I will also consider applying different types of frameworks for other devices as well, such as mobile and AR/VR apps.

Chapter 2: Coding Standards

Another concept I got to explore more is coding standards. Depending on the language, coding standards are guidelines that recommend programming style, practices, and methods for each aspect of a program. For our JavaScript code in this class, we used ESLint to identify and report spacing issues and bugs. I found it simple and efficient as it provided me with suggestions on how to improve my code and avoid inconsistencies. Beyond web application development, coding standards are like grammar checkers that are fundamental in any programming domain, promoting good programming practices and collaboration among team members. I can see myself using them in mobile and game development projects since they contribute to the overall quality of the codebase.

Chapter 3: Issue Driven Project Management

Lastly, another crucial concept for being a successful software engineer is a style of Agile Project Management called Issue Driven Project Management. Agile project management is an iterative approach to managing software development projects like websites. For instance, when developing a new website, a team can gather requirements, write a website brief, design, develop the site and complete testing within a single iteration. An Issue-Driven Project Management (IDPM) is a project management approach that revolves around identifying and addressing issues or tasks that need attention throughout the project lifecycle. Our team used Github to track our issues and follow the IDPM approach. As a result, we were able to efficiently split our workload between team members and track each member’s issue status. This method made us much more productive, which is why I plan to continue using it for future projects. For instance, for game development, issues can cover tasks related to gameplay mechanics, graphics, bug fixes, and performance optimization.

Conclusion

In conclusion, three software engineering concepts that I got to experience are UI frameworks, coding standards, and Issue Driven Project Management. UI frameworks and coding standards enhanced my code’s quality and the Issue Driven Project Management approach through Github proved instrumental in efficiently managing tasks and optimizing team productivity. As I look ahead, I am eager to apply these acquired skills not only in web development but also in diverse domains like mobile and game development, recognizing their universal value in fostering excellence in software engineering practices.