Author Archives: Tai Nguyen

Object Oriented Principles

This blog is based on “OOP Principles: What is Object Oriented Programming?” from Full Stack Foundations. The article has a clear understanding of the four core pillars of object-oriented programming. That being encapsulation, abstraction, inheritance, and polymorphism. It also explores how these principles tie into more advanced design ideas such as composition over inheritance and more.

The article begins by explaining why OOP is valuable, emphasizing that it organizes code into modular blocks that bundle together data. OOP helps developers manage complexity in large systems. It then talks about encapsulation as the practice of hiding code and exposing only interfaces, which helps reduce unintended interactions. Abstraction is explained as representing concepts with simplified models. Inheritance is presented as a practice that allows new classes to build upon existing ones, enabling reuse of behavior. Finally, polymorphism is described as the ability to treat different classes as instances of a common base type, making systems more flexible and adaptable. Later in the article, the author connects these principles to design patterns, noting that good object design avoids fragile hierarchies.

I chose this article because it’s connection to our class, discussing design concepts. OOP is a key topic in this course, from abstraction and encapsulation to design principles and patterns, and I thought this blog was a good representation of OOP. It struck a good balance between the basics of OOP and the many ideas that are needed to think about design in a professional way.

Reading this article reminded me that OOP is more than just syntax like classes and methods. The discussion on abstraction and encapsulation stood out the most to me because in my past projects and classes I often never thought about the exposure of too many details of a class, either through public fields or otherwise. The article emphasized that clean abstraction is essential for maintainability. I also appreciated the warning about inheritance. The article shared the idea that using composition over inheritance can prevent problems and lead to more flexible ideas.

The main takeaway for me is that OOP is an idea that allows code to be built clean and modular rather than something that has to be perfected up front. In future assignments and projects, I want to be more aware about the principles of clean OOP coding. I also plan to make better use of interfaces and encapsulation so that classes depend less on concrete implementations. This resource gave me a refresher on these ideas and hopefully I can build systems that are easier to maintain and improve upon.

https://www.fullstackfoundations.com/blog/oop-principles?

From the blog CS@Worcester – Coding with Tai by Tai Nguyen and used with permission of the author. All other rights reserved by the author.

Github Workflows

I listened to the podcast episode “Comparing Git Workflows” from CodingBlocks, which relates git and workflow strategies. This podcast explores different ways that teams structure their Git workflows, what the trade offs are among them, and when one approach might be more suitable than another. They discuss many different workflows such as feature branching, Gitflow, centralized workflows, and many more. Taking into consideration on how these choices affect collaboration, history cleanliness, conflict resolution, etc. They compare simpler approaches that are easier for small teams with more structured models that are more strict for larger, distributed projects. They highlight how workflow decisions impact and affect team.

I chose to listen to this podcast because our course has just started to learn about git and how version control works in terms of commands like commit or branch. Learning about how workflows and team agreements integrate into real-world coding practices is likely going to be important and something we will work on in this course. “Comparing Git Workflows” gave me deeper insight into how different teams make those decisions and how those decisions can affect the teams workflow.

Listening to the episode taught me that no one plan is ideal for every situation. Before, I had assumed that there would be one best practice for all around coding, but hearing how workflow can change based on taken actions was eye opening. I also realized that simpler workflows might sacrifice structure or history clarity, but can offer agility, especially for smaller teams or solo developers. The discussion on this podcast helped clarify for me how preserving a linear history can help with finding bugs or reading logs, but also how tools can be misused if people rewrite shared history. Another takeaway was how important it is for teams to agree explicitly on their workflow, branching naming conventions, pull request practices, and many more key aspects. Hopefully I can apply what I learned in future team projects and potential jobs that are upcoming.

From the blog CS@Worcester – Coding with Tai by Tai Nguyen and used with permission of the author. All other rights reserved by the author.

Github’s Issues and Pull requests sped up

“How to create issues and pull requests in record time on GitHub” by Jon Peck is a blog discussing the importance of issues and pull request as well as how to efficiently use them. This blog goes on to explain how GitHub has improved the process of creating issues and pull requests, particularly with the help of GitHub Copilot. Instead of manually drafting titles, descriptions, labels and then writing separate pull requests, developers can use Copilot to assist with both issue creation and the process of turning those issues into draft pull requests. To start this blog reminds readers why well structured issues and pull requests are important. They provide shared information, enable online coordination, and many more important matters. It then explores the concepts of a good issue, including clear titles, explanations of expected versus actual behavior, reproduction steps or visual evidence, definitions of done, scope, constraints and useful data. From there the article shows how you can use Copilot Chat to speed up drafting issues. A developer can describe what is needed, include screenshots, and let Copilot suggest labels. Finally it demonstrates how to turn issues into draft pull requests by assigning them to a Copilot coding agent which can clone the repository, work in a secured workspace and produce commits in a draft pull request that remains open to continuous integration.

I chose this article because in our first pogil activity I didn’t have much experience using git and it’s available tools. Having read up on how version control tools are used not just for storing code but also for managing collaboration, code quality and workflow efficiencies. I learned that Issues and pull requests are surprisingly important to that process. This post shows explains this, It connects directly to what we have worked on in lectures, more specifically about assignment 1 about github, pull request reviews, issue tracking and practices in version control.

After reading this blog, the idea of version control to me is more than committing code or branching, it is about clear communication, traceability and making sure issues and pull requests are useful. I realized how much poorly constructed issues and pull requests slow down not only human reviewers but also automation tools. The idea of assigning a coding agent to issues via Copilot is interesting because it includes both human oversight while utilizing automation. In my future projects, I plan to apply these ideas by using formatting every issue in a useful way, making sure pull request descriptions link back to the issue and clearly explain what was done, and paying attention to data early so that project tracking and team collaboration become easier.

https://github.blog/developer-skills/github/how-to-create-issues-and-pull-requests-in-record-time-

From the blog CS@Worcester – Coding with Tai by Tai Nguyen and used with permission of the author. All other rights reserved by the author.

First Blog!

Hello world! This is my first blog, a test if you will. Good to meet anyone and everyone that sees this.

From the blog CS@Worcester – Coding with Tai by Tai Nguyen and used with permission of the author. All other rights reserved by the author.