In this course, we explored the creation of web applications through a rich technology stack, including React, JavaScript, TypeScript, Prisma ORM, PostgreSQL, Bootstrap, and Vercel. However, the primary objective was not just to teach us how to build web applications but to provide a comprehensive understanding of fundamental software engineering concepts that transcend specific technologies. Through the final project, Manoa Menu, we combined these concepts into a cohesive application. We had to use many different software engineering ideas learned throughout to build this final project.
Functional programming is a idea where computation is treated as the evaluation of mathematical functions, avoiding changing states and mutable data. This approach encourages writing predictable, modular, and reusable code. In this class, we encountered functional programming primarily through JavaScript and TypeScript. Concepts like immutability, pure functions, and higher-order functions became essential tools. For instance, when filtering and mapping menu data for the Manoa Menu project, we leveraged these functional programming principles to ensure clean and readable code.
A development environment encompasses the tools and configurations that facilitate software creation. In this class, we worked with tools like Visual Studio Code, GitHub, and Vercel. We learned to configure environments for efficient collaboration and deployment. For example, setting up Vercel for continuous deployment enabled us to see changes to Manoa Menu in near real-time.
In software engineering, mastering development environments is crucial for productivity and team coordination. Tools such as integrated development environments (IDEs) and version control applications like Git are crucial to every software-related project.
Coding standards refer to the conventions that developers follow to write consistent, readable, and maintainable code. In this class, we adhered to TypeScript’s strict typing rules, React’s component organization patterns, and ESLint for code quality checks. For instance, the Manoa Menu project’s use of TypeScript allowed us to define data models clearly, reducing runtime errors when interacting with our database tables.
Sticking to coding standards is vital in professional settings, where projects often involve large teams. Standards facilitate and ensure code quality across diverse contributors. Furthermore, they enable tools like automated testing and continuous integration to work effectively, creating a robust software development pipeline.
User Interface Frameworks
User interface frameworks streamline the development of visually appealing and responsive applications. In this course, Bootstrap and React served as the foundations of our UI, however in cases where it wasn’t enough, additional libraries such as Material UI were used. These libraries provided styled components with easy-to-use props, while React allowed us to build dynamic, state-driven interfaces. For example, Manoa Menu’s entire application was built on a number of useState, useEffect, useRef, and useMemo hooks.
UI frameworks’ relevance extends beyond web applications to simply mobile and desktop users. They let us prioritize user experience design while reducing development time. Understanding these frameworks has taught me to think from the user’s perspective, ensuring that applications are intuitive and accessible.
While this course equipped me with the skills to create web applications, its true value lies in the broader software engineering principles it imparted. These lessons, exemplified through the Manoa Menu project, extend far beyond the scope of web development. They prepare me to tackle diverse challenges in software engineering, ensuring that I can contribute effectively in any technological domain.