Posts

Showing posts from November, 2025

CST 438 - Week 4

 Hey everyone,      While reading Software Engineering at Google , the most interesting and impactful idea I encountered is the concept that software engineering is fundamentally about managing complexity over time , not just writing code that works today. Google frames software engineering as the discipline of building software that continues to be understandable, maintainable, and scalable as systems, teams, and lifespans grow. This long-term perspective reframed how I think about engineering work.      What stood out most is Google’s idea of “time as the primary scaling factor.” Google’s codebases are expected to outlive individual engineers, teams, and even products. Because of this, Google optimizes for practices that reduce long-term friction—such as code readability, consistency, and maintainability—sometimes even at the expense of short-term productivity. The emphasis on making code easy for someone else to understand years later was striking...

CST438 - Week 3

 Hey everyone, This week’s lessons focused on two essential aspects of software engineering — testing and version control with Git . Through the readings, videos, and labs, I learned how both areas are crucial for building reliable software and working effectively in a team. The testing materials emphasized the importance of having a strong suite of automated tests to ensure that code works as expected and can be changed safely over time. The Git labs and videos helped me understand how developers collaborate on code, manage changes, and prevent conflicts in shared projects. From the testing labs and readings, I learned that testing isn’t just something done at the end of development; it’s an ongoing process that supports every stage of building software. The concept of the testing pyramid stood out — most tests should be unit tests (around 80%), followed by integration tests (15%) and a small number of end-to-end tests (5%). I also learned that small tests are limited to a singl...

CST 438 - Week 2

 Hey everyone, This week, I learned more about React, a popular JavaScript library used for building user interfaces. I explored how React uses components to create reusable and modular pieces of UI, which makes development more organized and efficient. I also learned about JSX, the syntax extension that allows developers to write HTML directly within JavaScript, and how React’s virtual DOM helps improve performance by updating only the parts of the page that change instead of reloading the entire page. In my opinion, one of React’s biggest strengths is its component-based architecture, which promotes reusability and easier maintenance. Its strong community support and wide range of libraries and tools also make it very flexible for different kinds of projects. However, one weakness is that the learning curve can be steep for beginners, especially when integrating with other technologies like Redux or understanding hooks. Additionally, React changes frequently, so staying up to dat...

CST 438 - Week 1

Hey everyone,       This week, I learned a lot about what software engineering really means and how it’s different from just programming. The reading from SAG Chapter 1: What is Software Engineering? explained that software engineering is not just about writing code—it’s about creating software in a structured, organized, and maintainable way. It involves planning, designing, testing, and thinking about how the software will be used and maintained over time.      In Lab 1 , I learned about REST APIs and how they let different systems communicate using HTTP methods like GET, POST, PUT, and DELETE. The lab videos walked through how to build and test an API step by step, which helped me understand how the backend of web applications works. The bonus reading on REST API best practices was also helpful—it explained things like keeping endpoint names consistent and using the correct status codes when returning responses.      In Lab 2 , I...