Posts

Week 8

  Week 8 Learning Journal Understanding Core Concepts Instead of Memorization One of the most important things I learned in this course is the value of truly understanding concepts rather than just memorizing information. At the beginning, I relied more on memorization, but I found that I would forget things quickly or get stuck when problems were slightly different. As I started focusing on understanding the reasoning behind concepts, I became more confident and flexible in applying what I learned. I chose this because it completely changed how I approach studying and made learning more meaningful. Problem-Solving Strategies I learned how to break down complex problems into smaller, manageable steps instead of trying to solve everything at once. This included identifying what the problem is asking, organizing information, and solving step by step. This approach reduced mistakes and made difficult tasks feel more achievable. I chose this because it improved both my accuracy ...

Week 7

 Agile and Plan-and-Document (Waterfall) processes differ mainly in how they handle planning, flexibility, and development flow. In a Waterfall approach, the project is planned in detail upfront, with clearly defined phases such as requirements, design, implementation, testing, and deployment. Each phase must be completed before moving to the next. This makes it structured and predictable, but also rigid—changes are difficult to incorporate once the project is underway. In contrast, Agile is iterative and flexible. Work is divided into small increments (sprints), and requirements can evolve throughout the project. Teams continuously develop, test, and get feedback, allowing them to adapt quickly to changes or new insights. Agile emphasizes collaboration, customer feedback, and working software over extensive documentation. Another key difference is communication and feedback. Agile involves frequent interaction with stakeholders and regular reassessment of priorities, while Wate...

Week 6

  Week 6 Learning Journal – Iteration 3 System Testing This week focused on system testing and how it fits into the overall software development lifecycle. One of the most important things I learned is the difference between unit testing and system testing. While unit testing verifies individual components in isolation, system testing ensures that the entire application works correctly as a whole, including interactions between the frontend, backend, and any external services. I also learned how to design and execute system test cases that simulate real user behavior. This includes testing complete workflows such as creating, updating, and retrieving data through the application. Using tools like Postman and automated testing frameworks helped reinforce how APIs and the frontend integrate during testing. Another key takeaway was the importance of identifying edge cases and handling unexpected inputs. System testing is not just about verifying expected outcomes, but also ensuring th...

Week 5

 This week I learned how to build and enhance a React frontend as part of the second iteration of a full-stack project. I gained a deeper understanding of how React components work, including how to structure them effectively, reuse components, and manage state to create a more dynamic and responsive user interface. I also practiced handling user input, updating the UI based on changes, and improving the overall user experience. In addition, I learned how the frontend communicates with a REST backend by making API calls, retrieving data, and displaying it in a meaningful way. This helped me better understand how different parts of a full-stack application interact with each other. I also became more comfortable debugging issues that arise between the frontend and backend. Overall, this week reinforced my understanding of React development and showed me how iterative development works in practice. Each iteration builds on the previous one, allowing me to gradually improve both funct...

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...