Posts

Week 4

One of the most interesting things I learned from Software Engineering at Google is how seriously Google treats code reviews as a core part of engineering culture rather than just a formality. I was surprised to learn that code reviews are not only about finding bugs, but also about improving code readability, maintainability, and ensuring long-term ownership of the codebase. In particular, the idea that reviewers focus on whether future engineers will understand and be able to maintain the code stood out to me. This shifts the mindset from just “making code work” to “making code sustainable.” I also found it interesting that Google encourages small, frequent code reviews instead of large ones, which helps improve quality and efficiency. Overall, this changed how I think about collaboration in software development - code is not just written for machines to execute, but for other engineers to read, understand, and build upon.

Week 3

 Week 3 Learning Journal Git is really useful for managing source code. One good thing about Git is that it keeps track of all the changes you make, so if something breaks you can go back to an older version. It also makes it easier for multiple people to work on the same project at the same time without messing up each other’s work. Another helpful feature is branching, where you can work on new ideas or features separately without affecting the main code. Git also shows who made changes and when, which helps when trying to figure out problems. Even though Git is helpful, merging code is not always perfect. Sometimes Git can combine code without showing any errors, but the program still does not work correctly because the changes do not fit well together. This is called a logical conflict. Git also cannot fix situations where developers write code in different ways that do not match. Another problem is when people do not communicate well, which can make merging harder and more con...

Week 2

 This week in Software Engineering, I focused on building a dynamic frontend using React to interface with a REST API. Through the development of the Order, OrderHistory, and EditOrder components, I gained a deeper understanding of React's component-based architecture and how it promotes modular, maintainable code. A significant portion of my learning involved mastering React hooks: I used useState to manage local component data, such as capturing user input in forms, and useEffect to synchronize the UI with the backend by fetching data when a component first mounts. Successfully passing data via props and handling user events allowed me to create a cohesive flow between the user's actions and the application's state. In my opinion, one of React's greatest strengths is its reusability; the ability to build a component once and use it throughout an application significantly speeds up development and ensures UI consistency. Furthermore, the Virtual DOM provides a highly r...

Week1

 Before taking this course, I expected Software Engineering to mainly focus on programming and learning how to build software applications. I thought the course would mostly cover writing code, using frameworks, and developing features for programs or websites. I also expected to learn some tools used by developers, but I assumed the main emphasis would be on coding. After completing Week 1, my opinion has changed. I realized that Software Engineering is not only about writing code, but also about the entire process of designing, building, testing, and maintaining software systems. The readings and labs showed that software engineering involves planning, defining requirements, creating APIs, and making sure the system works correctly through testing. I also learned that good software engineering practices help teams work together effectively and produce reliable software. Overall, Week 1 helped me understand that software engineering is more about structured processes, collaboratio...