The Finale

09 May 2022

One aspect of technology that has always interested me is web development. How does one make a website? What technologies do I need to use? Is there a standard that I should follow? With this ignorance in web development as a Computer Engineer, I was excited but mostly nervous about taking ICS314 “Software Engineering.” After taking this course and reflecting on my experience, this class has taught and challenged me in many aspects, from learning new frameworks from scratch to learning better team management and communication methods.

With each hurdle I struggled to surpass, I learned a surplus of knowledge. Although the course name is “Introduction to Software Engineering,” This course has taught me so many skills that can also be applied to other parts of my daily and academic life.

Functional Programming

One of the first things we were introduced to in ICS314 was functional programming. Functional programming is a way of thinking about software construction by creating pure functions. This allows data to be only loosely coupled to functions, allowing functions to hide their implementations and relevant data to reduce complexity. I have previously heard of functional programming however have never really tried it. Learning a functional programming language such as Javascript with the use of the underscore library and the ES6 class construct was difficult at first since I was not used to the grammar and syntax of Javascript. However, after only a few classes of practice, the use of functional programming constructs such as “map,” “reduce,” and “filter” allowed me to have an easier time expressing my intentions in the code and provided me a way to do so. This idea of modularizing your code is a handy tip when programming. It enables you to write a piece of code (function) once and call it by referencing it to perform a specific action in different locations in the program.

Creating functions allows you to understand better what each piece of your code is doing and how you want to implement it later in your program. Additionally, if a piece of code is not working correctly, or you want to change an aspect of the code, all you need to do is change that one function. This idea of writing your code in functions is helpful in web development and also can be applied during technical coding interviews.

Agile Project Management called Issue Driven Project Management

Agile project management is a project management approach that focuses on breaking down large projects into more manageable tasks. This was combined with issue driven project management with the help of Github, which allows team members to create issues or tasks and assign them to a team member. Once an issue has been resolved, the whole team can check a centralized project board and be updated on everyone’s progress. Issue driven project management was first introduced to me during the last month of ICS314 for my final project, Manoa Eats. This organization method helped me stay on task and keep a clearer mind throughout the project since I could easily keep track of everyone’s progress and collaborate with other team members if I saw that they were stuck on a task. This approach also helped me measure my team’s performance and greatly improved our team’s communication and progress throughout the project. This approach of breaking down a problem into parts and using a project board to track the progress of other team members can be used in all projects in all aspects of life. Since organization, communication, and transparency are the main aspects of any project, the use of this agile project management can be very beneficial even outside of programming.

Coding Standards

iMaginEReading an EsSAY with Uneven Spacing no inDENtions bad grammar no line breaks and Odd CAPITALIZATION. How did that make you feel?

Throughout our life, we are taught standards: a guideline that allows us to produce repeatable, harmonized, and agreed-upon documentation. One example is the MLA writing standard: 12 times new roman font, double spaced, indentations for new paragraphs, etc. During the Spring 2022 semester in ICS314, I was introduced to a similar standing but for coding. This standard incorporated the use of ESLint into my use of javascript, IntelliJ, and Github. ESLint provides an easy and effective way to find problematic patterns or code that doesn’t adhere to a particular style of guidelines. This meant that by having ESLint running in the background of my IntelliJ environment, I could check my coding grammar and structure. A little red light bulb and a red squiggly line would appear if an error was found. The use of the ESLint’s coding standards helped me tremendously with writing code that was easier to read and reduced my code’s complexity massively. Using a standard, whether a coding standard or an English writing format, will make it easier for readers to understand a text by providing a familiar structure that they can follow. This will reduce the confusion of your text, allow the reader to understand your text easier, and provide cleaner documentation for later use.

Conclusion

Overall, I am very happy that I took this course. I was able to expose myself to many different technologies and ease my curiosity into the development of a simple website. Although this course was at times challenging and took many hours of my days, I am very happy with my progression and will hopefully continue my education in these technologies in the future.

~