Posts

Showing posts from November, 2025

Week 4 Learning Journal- CST438

What is the most interesting thing you have learned in your reading of "Software Engineering at Google"? One of the most significant concepts presented in the text is Hyrum's Law. It states that with a sufficient number of users, all observable behaviors of a system will be depended on by someone, regardless of the official interface contract. This principle highlights the inherent difficulty in maintaining software over time because even undocumented behaviors effectively become part of the public API. It suggests that rigorous adherence to published contracts is often insufficient to prevent breaking downstream users when changes occur. Ideally, an API owner would have the flexibility to change implementation details that are not part of the strict interface promise, but Hyrum's Law suggests this flexibility is an illusion in practice. As a result, discussions about software maintenance must account for this phenomenon much like discussions about thermodynamics must...

Week 3 Learning Journal- CST438

This week, I learned the importance of Version Control Systems (VCS) and gained practical experience using Git. After finishing the lab exercises, I can see why Git is such a critical tool for software engineering, particularly when working in teams. The Benefits of Using Git The primary advantage of Git is its ability to track the entire history of a project. By maintaining a sequence of snapshots, Git allows developers to pinpoint exactly which versions include specific new features or bug fixes. This history also makes it possible to undo mistakes using commands like revert or reset if a change causes issues. Another major benefit is the branching system. Branches allow us to maintain multiple independent versions of a project simultaneously. For instance, I can work on a new feature or a bug fix in a separate branch without affecting the main code base until the work is verified and ready to be merged. Finally, Git simplifies the complex task of merging changes from multiple develo...

Week 2 Learning Journal- CST438

This week's lab was a practical and comprehensive project where I built a React frontend from the ground up to interface with our existing Spring Boot backend. The main takeaway was a clear understanding of how React's core features work in a full-stack context. I learned to build the application's structure entirely from components, creating separate, reusable pieces of UI like Register, Login, and OrderHistory. I also became very familiar with React's hooks: useState was essential for managing all form inputs, useEffect was used to fetch data once when the OrderHistory component loaded, and useRef provided a way to directly control the EditOrder dialog modal. In my opinion, React's primary strength is how it simplifies UI development through component reusability and state management. Being able to create a single Messages component and use it on multiple pages was very efficient. The way useState automatically updates the UI when the state changes is also a power...

Week 1 Learning Journal- CST438

Before starting CST438, I had the common programmer's perspective: that the central skill lay in writing functional code and mastering complex syntax or data structures. I anticipated the course would focus heavily on project management and architectural design, the mechanics of building features. However, after reviewing the labs and materials, it's clear that Software Engineering is fundamentally different from programming. It's defined as "programming integrated over time", meaning the primary challenge is not creation, but ensuring the software's sustainability and maintainability over a lifespan that could span decades. After the first week, my opinion has profoundly changed, shifting the focus from individual code creation to organizational sustainability over time. It's now clear that the central engineering problem isn't getting code to work once, but ensuring it survives, scales, and is safely maintainable for decades. The course empha...