Category Archives: Blog

First Sprint Retrospective

Reflection on what worked well and didn’t work well
After having the Sprint Retrospective meeting with my group overall, I would say things went pretty well. The workflow of the group was simple and smooth, and both the frontend and backend development teams were able to make a lot of progress towards the project. Overall, we were able to get everything done besides 3 items on our issue board. The only issue we really had was our branches. While working on the project, we ended up making a lot of branches for different things we were working on. For example, in the backend we had a API branch, a jsdoc branch, and a test branch. Per the Product Owner, he said that this is fine, but we should be merging the branches to the main branch and delete the branches once they get deleted. This will prevent future errors as other developers work on this project and add more things to it.

Reflection on what changes could be made to improve as a team
The team worked pretty well. We divided the project up into two teams, backend and frontend. This allowed everyone to work where they were most comfortable with. From how the meeting went, everyone was able to communicate any problems they had with one another, and no one was ever afraid to ask questions when they needed help. Something that the team can improve on is probably be more vocal. Sometimes there may be a problem that a member has, and everyone is silent until one of the more vocal members speak up. It may be, because some of the members may not know the answer but overall, just being more vocal is what the team could improve on. Instead of saying “I’m done, here’s what I did”. Maybe they can elaborate on what they did, like if they had any problems that they had to fix on their own.

Reflection on what changes could be made to improve as an individual
From my perspective, the sprint went well. I was able to complete me task with very little difficulties. I will attach the work I did on the project at the end with a description. Since what I worked on was mostly what I learned from last semester it was relatively easy and straight forward. Only problem I had was when I had to figure out how to connect certain files. This was mostly because of how the previously team worked on the project. What I can improve on is probably be more active with other team members. What I mean by this is to give input on when they are having any issues or any type of problems.  

From the blog CS@Worcester – Michael's Developer Blog by michaelchaau and used with permission of the author. All other rights reserved by the author.

Concrete Skills

This pattern starts off with a strong quote by Pele McBreen by saying, “Having knowledge is not the same as having the skill and practical ability to apply that knowledge to create software applications. This is where craftsmanship comes in”. I agree 100% to this quote. Until I was a junior, I had no idea where to apply my coding skills I learned this far from classes such as cs140, cs101, cs242 or any computer science classes. Then I decided to think of some side projects I can do, or I can try to do, and the first thought was a discord bot. I did create a discord bot for a group of mobile gamers using java. The bot basically returned how much time is left for a game tournament, and the bot also greeted every new members that came to the group. This was a fun project, but it was not enough for me, so I decided to focus on a project which I can keep on building overtime. Something to enhanced my both frontend and backend skill, so in order to do that I made my own simple static website with the custom domain name of sandeshgurung.com. Now my primary goal is to add more content to my website while also showing my skills at the same time.

As for the pattern, it felt like what I need to read at the moment as I am applying for jobs, intern, or any contract jobs. The context is to get a hold of a talented team of craftsmen who can provide me with a better learning opportunities than I currently have. The problem is that no team or company want to hire someone who can slow them down or even can be any help to them at all. The solution is to acquire some concrete skills that would get me past the crude HR filters and managers. Some concrete skills examples can be writing build files which many open source frameworks such as Vue.js that we are using for our capstone project.

The best knowledge I got from this pattern is from the Action section, which basically said to get the CV from the people whose skills I respect. Locate their skills and identify which can be immediately useful on the type of team I want to join. Plan a project based on that skill and implement it.

From the blog cs@worcester – Dream to Reality by tamusandesh99 and used with permission of the author. All other rights reserved by the author.

Apprenticeship Pattern “The White Belt”

This apprenticeship pattern describes as how we as programmers are comfortable with the language that we are best at and then how we try to apply our knowledge to learning something else. In the end it is hard to learn something new that way. What we realize by doing this is that it is difficult to then try and learn something new, and then we may end up becoming stagnant in our growth. The white belt method tells us to forget everything we thought we knew previously and come into learning something new with the mindset of a beginner. Although we lose productivity in the beginning, it will end up being a big step in mastering something new.

One of the most interesting things I enjoyed while reading about this pattern was an example of how to reimplement a Java pattern into another language like Io and then into something like J. we can notice how the code can change drastically from one to another and yet at the end of the day they all do the same thing. This example is eye opening to showing how similar and different every language is and that we can’t just take the same knowledge we have in something and apply it to something else. We have no make sure we go in with a fresh mind and try and follow the new language’s nuances and set of rules and forget everything we think we should know instead of trying to apply it to something new.

This pattern is very insightful and applies to what I’m currently working on in class. We are attempting to learn how to code in React Native and I feel as though my growth in learning and the progress that I want to achieve is not what I want to. It might be because I’m trying to apply my skills in java to a front-end language and that does not mesh well whatsoever. I’m an impatient person when it comes to learning something new, but this pattern is a great way for me to keep in the back of my mind because progression shouldn’t come in an instant, it comes with slow and steady progress and constant repetition.

From the blog CS@Worcester – Life as a CS Student by Dylan Nguyen and used with permission of the author. All other rights reserved by the author.

Unleash Your Enthusiasm Pattern

This week I decided to read about the apprenticeship pattern ‘Unleash Your Enthusiasm’. The meaning behind unleashing your enthusiasm is that there may be something that is holding you back. Just like the pattern says, you have so much enthusiasm that’s ready to be release. The example that the book uses, is that software developers, you will more than likely be working as part of a team. Usually when working in groups, there is something called a norm which is what everyone follows. No one tries to stand out or if they did, they would find themselves in an uncomfortable position.

My initial reaction to this pattern is that it can relate to more than just software development. It can be compared to the outside world. For example, who you choose to have as your friends. In my instance, I used to have a circle of friends I used to ‘confine my enthusiasm’. Eventually I learned that they were holding me back from furthering my life from being greater. Once I started being myself, things naturally got better for me. My life got overall got better ever since I hold myself back. Just like how some new software engineers that start their first professional jobs confine with the norms. They become held back because they don’t want to speak up and voice their own opinions which then results in them becoming an ordinary worker who doesn’t stand out.

After reading the pattern, it has definitely made an impact to how I view myself working in a professional environment. I tend to be a quiet person when working in teams but lately have been more active and more vocal in the teams I am in at school. By doing this, I believe it will help me get out of my comfort zone and allow myself to ‘unleash my enthusiasm’.

This pattern can be applied to not only for software developers, but to their personal lives as well. I would agree with what have been said in this pattern because the meaning behind it, is to just let loose your ambitions. In order to grow and further your career, you can’t become a person who holds themselves back. There are times when staying in the norm is okay, but overall, it’s better to stand out because that is how you will get recognized.

From the blog CS@Worcester – Michael's Developer Blog by michaelchaau and used with permission of the author. All other rights reserved by the author.

Apprenticeship Pattern “Your First Language”

This apprenticeship pattern describes how we should approach our first language and how develop our craft in it. The greatest and simplest way for us to master our first language is to tackle real problems to solve. It is beneficial for us to practice problems and code that provide feedback to us with an example being using a print line function to see what we’re getting from specific functions and methods from maybe certain APIs. These test-driven results really teach us to take small steps in developing code and to take a step-by-step approach to testing out assumptions on what we’ve written. We also should always try to learn from more experienced peers. They can help provide insight into some of the nuances in the programming language we are trying to learn.  Also, don’t shy away from focusing on what you’re not good at, try to branch out of what you’re comfortable with and try different types of coding outside of your comfort zone.

What I’ve taken away from this is to try and solve real situational problems to help us learn how to code. A lot of times as students, we tend to just try to get assignments done without truly understanding how certain parts of our code work. We are just learning our first programming languages and are never forced to understand how to use certain things for specific situations. That’s where I believe that using mentors to our advantages work very well. We are able to ask them for help to help us understand the reasoning behind why we use certain things.

This pattern has been insightful into the basics of how to approach my first language. I personally shy away from the things I am weak in and tend to focus more of my time into what I’m good at. As a software engineer, I shouldn’t be scared to tackle problems that I’m not comfortable with but now feel as though I should go back and revisit what I’m not comfortable in. I should be able to use my resources and the people around me to begin to get better at what I’m bad at and to use test driven results to help bridge the gap with what I’m bad at. If I do not understand something, there are always ways to get around and to better myself.

From the blog CS@Worcester – Life as a CS Student by Dylan Nguyen and used with permission of the author. All other rights reserved by the author.

White Belt Pattern

For my first Apprenticeship pattern, I chose to write about “The White Belt”. In this pattern, you’ve created a good understanding of the first language you’ve learned, and others have recognized and have often called you for help when they have problems. Even though this is great, you feel that you’re have a little difficulty trying to learn new materials and find that things are slowing down and you’re not learning as quick as before and fear you have hit a peak of your personal development.

When I first read about this pattern, I did in fact felt like I hit a plateau in obtaining new skills and in self learning. I could relate to the description of the white belt very much. I really loved how they quoted Yoda from Star Wars with “You must unlearn what you have learned”, regarding approaching new situations. Another quote that I liked while reading about this pattern is “In order to climb, you must leave the sure footing, letting go of what you already do well and possibly slipping downward into a ravine. If you never let go of what you already do well, you may continue to make steady progress, but you’ll never get off the plateau” by Jerry Weinberg. Both quotes are quite similar and suggest that in order to learn and make a steady progress, you must leave your comfort zone and tackle the problem with a different method. This helped me come to the realization that I’m constantly trying to incorporate another programming language that I was comfortable with the new language I’m trying to learn. Which results in me having a hard time learning new things for both languages. After I took a step back to analyze what was going on, I went back and tackle each language in a separate way. I then was able to learn and get past the plateau I was on.

There isn’t anything I would disagree with what was said for this pattern. Everything that was said was great and would really help others who have also hit a plateau. The story of Dave was a quick and simple way of relating the quotes I said earlier and applying them. Overall reading about this pattern has helped me come to the realization that there are some problems that should be handled differently, for instance when learning a new problem or a technique of how to do something.

From the blog CS@Worcester – Michael's Developer Blog by michaelchaau and used with permission of the author. All other rights reserved by the author.

Reaction to Apprenticeship Patterns

My initial reaction after reading Apprenticeship Patterns by David H. Hoover and Adewale Oshineye, was very eye opening for me. It made me rethink about my future and goals and what I want to be able to achieve. The story of Dave which displayed his experience was very helpful. Apprenticeship Pattern is a book I would definitely recommend to people who are getting into software development. It’s a book that gets your mind ready to go on a journey from an apprenticeship to journeyman status. While reading the introductions from Chapter 2 thru 6, it really inspired and motivated me to do my own learning other than what I am currently doing in my university. I would agree with the reading however, I do believe some people may disagree depending on their mindset and goals. In the book it takes about how some people become the “better than average developer”. This isn’t what I want to achieve, instead I would like to someday develop an application that is useful or that can help communities and to be able to do that, I need a mindset of a master. A master is a step above a journey man who completed their apprenticeship. The mindset of a master is to constantly get better at their craft and they’re always learning new things.  The chapter that I believe that is most relevant to me right now would be in chapter three. In the intro of chapter three, we follow Dave who decides to branch out and connect with other developers through a website. After this he met a few hackers that inspired him because were experts in their craft but were still learning new things at a fast rate. This made him realized he just barely scratched the surface of being a great software developer. After a few interactions and observations, he captured the learning process and threw himself into anything he can get his hands on. This last part is what I can really relate to right now. I am trying to learn as much as I can before the end of my semester and to work on a few projects that will help be harness my skills together.

From the blog CS@Worcester – Michael's Developer Blog by michaelchaau and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Chapter 1 and Chapter 2-6 Introductions

            From reading chapter one and the introductions of the rest of the chapters, I get a true sense of what it takes to become a craftsman in the world of software engineering. Getting better at this craft is all about one’s mentality and how they deal with being able to learn and having a growth mentality. We need to always be adapting and changing, and if we come in with our cup half full then there’s always room to grow. After graduating we are looking to become apprentices and learn what we can from those around us who have been coding for years. Once we have taken all we can at some point is when we can then change jobs or get promoted to learn more. The journeyman part is really where I believe that a lot of us will be for most of our lives. We’ll always be trying to grow in new and different technologies as software engineers. We want to be able to take what we’ve learned from one place to another to be able to compare what works and what doesn’t as well as just learning as much as we can. Here we want to begin building a bigger portfolio that is diverse and pushes us to someday to become masters at our craft. What is also important to know is that we will never know everything about certain languages and coding; there will always be something to learn and most likely someone to learn from. We should never be satisfied about where we stand as software engineers, for example, we have strictly been using java in class and may have gotten good with is, but it doesn’t mean that we should just stick with it because we’re good at it. We should branch out and try learning new things or even try exceling in more advanced java that you haven’t even thought about learning. There is always room to grow, and it is up to us to take the time and put in effort to learn. There are plenty of books such as this one for us to grow as software engineers, from books to blogs, to other online sources, information is at the touch of our fingertips, and it is up to us to better ourselves at our craft.

From the blog CS@Worcester – Life as a CS Student by Dylan Nguyen and used with permission of the author. All other rights reserved by the author.

Thea’s Pantry

Thea’s Pantry Client is an integrated software solution for the actual Thea’s Pantry that is created by its students at Worcester State University. While looking through the project on gitlab, what I found most interesting was architecture of the software. It was amazing to see all the features that already exist to make it work from the inventory system to the reporting system. There are so many pieces to each thing that make it all work such as in inventory system it has a CheckOutGuest, AddInventory, CheckInventory, InventoryBackend, InventoryEvents, and InventoryDb. The reporting feature also is an interesting part of it that we have not worked with yet, and they generate reports of the backend as well as guest info and the inventory.

Source: https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry

From the blog CS@Worcester – Life as a CS Student by Dylan Nguyen and used with permission of the author. All other rights reserved by the author.

LibreFoodPantry

LibreFoodPantry is a project that our community is working on not only as a way for students to learn but is also a humanitarian project to help others. What was nice that I discovered when looking through the “Values” of this project were the 16 FOSSisms that all educators should know. Not only are these useful for educators but also for us students as well. One of the things I found that stood out the most in this was, “FOSSism #11: It’s not what you know; it’s what you want to learn”. This piece of advice stands out as one where we should not look at the work we are about to do as just work, but a project where we can learn how to progress as futures Software Engineers.

Source: https://librefoodpantry.org/

From the blog CS@Worcester – Life as a CS Student by Dylan Nguyen and used with permission of the author. All other rights reserved by the author.