Author Archives: Sovibol Keo

Record What You Learn

Ive grown to have struggled with my communication skills. I would propose that it comes from feelings of inadequacy. Growing up I spoke solely Khmer at home and going into school there was a short time of transition from one language to another. Fast-forward a decade or two the tides have turned, and I now struggle with Khmer.  What I recognize is the common factor within developing language and communication is one’s ability to write in each language. For one key factor as introduced in the Record What You Learn pattern, it says “You should not also underestimate the power of writing itself….You can lose your larger sense of purpose. But writing lets you step back and think through a problem. Even the angriest rant forces the writer to achieve a degree of thoughtfulness.” During my earlier stages of life, I don’t think I would ever have been able to understand this idea so much so that it would have led me to loathe writing in its entirety.

Though, as a graduating student, like many things, I have learned to love and develop a healthier relationship with things that may feel adverse. Like an opposing force school has been, I have learned to pull rather push against such a struggle. As I begin to make a shift, I wish to utilize writing more in any way that would serve me. As of now I see writing as a way to develop my language skills both natural language and coding/computer language, continue to use it as a way to develop ideas, and have it be part of my lifelong existence.

More specifically writing such as the writing in this blog has been an empowering way to process thinking and how to think. Of the many ideas that this blog has helped me develop, with the subject matter being the patterns in the reading, I’m learning to reflect on myself and record those reflections in way that crafts my “larger sense of purpose”. For example, recognizing that I like talking up all these ideas but never act on them, and starting to transition into learning how to take action and start making these ideas come true. The role in which writing has played has served as an oath to grow to my higher self, a mastered self. If I am true to myself these writings must be treated as a nursery to my ideas and the visions of the future that I have.

It is not only myself that I serve, but also for those that may have struggled as I did.

From the blog CS@Worcester – Sovibol's Glass Case by Sovibol Keo and used with permission of the author. All other rights reserved by the author.

Revisiting Construct Your Curriculum

In this penultimate blog post for school, I’d like to revisit the construct your curriculum chapter and talk more about a specific pattern in the chapter and further develop thoughts on it as I realize it was only briefly mentioned in said blog post. The specific pattern I would like to develop some of my thoughts on is the familiar tools pattern.

During this period of time, it seems to be quite advantageous to familiarize myself with the tools that I have been given, especially having a bit of an understanding of the job market, some foresight on my own abilities, and my general outlook on life and the world. Through a formal education I have been given more tools than I know what to do with; spending some time to clarify what those tools are, recognizing which tools may be most valuable to me, and gaining some practice with said tools, may support me in a way that is confidence inspiring and overall fulfilling.

When asked by those closest to me what was next for me after graduating college, despite some fears of rejection and judgement, I would respond with “I would like to spend some time getting my bearings”. Getting my bearings in a way that propels my career development and transitions me into a journeyman by utilizing my own reflections and acting upon them to eventually becoming masterful.

Setting Sights on Being a Journeyman

By no means do I see myself in the position to appoint myself to a journeyman, but I think it’s important to set a goal early on so that you have a clear vision of what you may be working towards. I wanted to revisit the intro as this is where journeyman is discussed.

Like my blog discussing the introduction I think that this is a fitting time to be considering such ideas. In the same way as the topics discussed in said blogpost, I believe that this not only applied to CS but can be applied broadly to life and career goals outside of CS. This idea is supported by the existence of apprenticeships in many other fields and careers.

There are two quotes from the journeyman paragraph in the intro in which I would like to explore more personally “This new focus is on the connections between practitioners, the communication channels within and outside the team.” And ends with a snippet on “Some of the patterns we will discuss are not appropriate for a journeyman, precisely because he has a greater responsibility to others who may see him as a mentor.” Seems crucial to keep this in mind and leads me into my next post.

From the blog CS@Worcester – Sovibol's Glass Case by Sovibol Keo and used with permission of the author. All other rights reserved by the author.

Practice, Practice, Practice

For this blog post I will be discussing the Practice, Practice, Practice pattern. This pattern essentially says that you should practice, obviously. The goal is to get better and better and to build concrete skills in new areas. Looking back on all that I have learned I noticed that there was one thing that I nearly could have always done more of and that was practice. The initial blurb in this pattern says ” The people we know as masters don’t devote themselves to their particular skill just to get better at it. The truth is, they love to practice—and because of this they do get better. And then to complete the circle, the better they get the more they enjoy performing the basic moves over and over again.”(Apprenticeship Patterns) From this valuable quote I have learned that those that are truly skilled have put in a lot of time devoted to practicing. Within this year if I want to do anything, that is practice everything that I have learned at WSU. From basic java skills to git workflows. I see that with open-source software this may be a good opportunity to do such things. WSU has provided the resources and has made becoming a master in computers that much more of a reality and a valuable one at that. By practicing on my own I can learn from my mistakes and give myself the comfort to save space and observe my own mistakes. Then, by looking to the provided resources I can look where to emulate a more masterful understanding of computers in whatever specific area that I may wish to practice in. I can even look back on where I can specifically improve based on grades and the hindsight of completing a course. In the context of this specific course, it is working on a large scale project that are maintained by large groups of people. I understand that the traditional way of getting a position at some type software developer job is a good way to get in that practice but with where I am at now and where I want to be I don’t think that would be an optimal environment for me, at least not yet. If I have learned anything, its that I can get by on a set structure that school provides, but where I find the most growth and improvement is in the setting in which I put myself in.

From the blog CS@Worcester – Sovibol's Glass Case by Sovibol Keo and used with permission of the author. All other rights reserved by the author.

Sprint Retrospective 3

I think this last sprint was a fitting end to the semester and at large a great CS course. The way we organized really resolved a lot of the personal issues that I discussed in my last retrospective. We all put our heads together and tackled these issues as a team.

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem/backend/-/issues/59

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem/backend/-/issues/52

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem/backend/-/issues/54

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem/backend/-/issues/62

After working on my own for a good bit of the last sprint, I was a bit concerned going into the next sprint working on testing as I felt I had some catching up to do. Fortunately, I had a great team that was able to fill me in on what I was missing and in addition to that reading up on documentation about chai testing and trying out the manual test on my own. I was in a position where I felt I could contribute to the team. Not only did we have great teamwork within the group we were also in a position where we could collaborate with another group as well which brought back a sense of contributing to something greater. I would say a big theme of this short sprint is that the sum of its parts builds something much greater. Another theme that emerged from this sprint is that everyone should be at the same level of understanding by the end. I feel as though I now have much more comfort with the workflow and even the projects themselves.

There were often many little feelings of accomplishments being made. Being able to share those accomplishments with the team just made it that much better and contributed to the good feelings. This sprint was a refreshing sense of reality and brought the joys of working on such a project even while things outside may feel a bit hectic. It even brought some joys to writing code that I have experienced before, the attention to detail is a greater skill that I have developed thanks to programming.

Nothing really comes to mind in terms of improvements that could have been made during this sprint. Maybe more comments on git lab could have been made but communication outside of git lab was pretty good so it wasn’t too much of a necessity. I could say that we could have documented the work we did so that people in the future could better understand the work that was completed. We might have relied a little bit too much on letting the next semester take on the problems but that is honestly a nitpick considering the work that was completed. If I had only this project to work on like how it may be in a professional setting, I’m sure that we could that much closer to a fully up and running usable software.

Even though a lot of personal improvements were made for the last sprint I think there is always some room for improvement. In the context of the Apprenticeship Patterns, I think it’s important to always work on self-improvement. Due to my last blog post and the nature of the last two sprints I have put some consideration in to working in a team setting. I don’t have any specific improvements that can be made but I’m sure with more thought that I can find something to work on and be that much better of a team player.

From the blog CS@Worcester – Sovibol's Glass Case by Sovibol Keo and used with permission of the author. All other rights reserved by the author.

I’m the Worst?

Since I am reading the way that I am while reading, I find myself not knowing what chapter I’m on unless I actively decide to take a look. After finally looking there was an entire chapter dedicated to an accurate self-assessment, the chapter with the pattern entitled “Be the Worst”. The pattern describes surrounding yourself with people who are much better than you are in efforts to improve one’s own abilities. Eventually you end up progressing to a point where you end up as equals with your team. I was then led to consider the team in which I would “take” on this adventure and my role in a team setting. I feel like this chapter allows for a good moment to reflect on your own career in relationship to others. You can’t accurately assess yourself without assessing how you are around other people. Each person on a team provides their own level of experience that can be brought to the table to progress not only the work but the team as well. 

The problem that this pattern resolves is the problem that your “rate of learning has leveled off”.  Knowing this I wish that I had recognized that this might be a problem that I was facing sooner. I think I had come to a point where I could have only taught myself so much that I needed to look to others in a way that would allow me to improve myself in the same way that I described previously. As much as I am often aggravated by cultural norms, I should see that I too am influenced by them. The cultural norm at play is the encouragement of attaining a position of superiority as fast as you can. It has influenced in a way that may have stunted my growth a bit and could have potentially led me towards something a bit more selfish instead of a more noble pursuit such as mastery.

After learning of this pattern, I think I will work in a more self-aware way. Perhaps in a way that is not so clouded by ego but more so driven by the pursuit of mastery that many others alike are also on.

From the blog CS@Worcester – Sovibol's Glass Case by Sovibol Keo and used with permission of the author. All other rights reserved by the author.

An Accurate Assessment?

There is currently nothing that reigns truer than the “Learn How You Fail” pattern in the Apprenticeship Patterns. Essentially this chapter identifies the role in which failure plays in your career development. I have often heard that failure is not something to be feared but instead embraced and this chapter mirrors that same sentiment. It offers the idea that if someone has not failed then they have actually “avoided pushing the boundaries of their abilities”.

I think this idea heavily resonates with me. I’ve learned that I need to look upon what I am doing with a realistic lens and to be able to recognize the truth in my actions and decisions. The more objectively I can view things the greater the ceiling for growth and further expand the boundaries of my abilities. The chapter puts it as “the goal is to gain self-knowledge about the patterns, conditions, habits, and behaviors that lead you to failure”.

I think that one of the major things that is hampering my success is procrastination.

For a long time, I have been “wallowing in self-pity” from the consequences of my procrastination. There has been a bit of a perspective change as of late that allows me to recognize my strengths through an accurate self-assessment all in an effort to remove the focus on the self-pity and shift it to self-improvement.

I find that from my procrastination I’ve learned how to handle my own self sabotaging self. I have seen that it is something I can improve on as I find myself having instances of being proactive, so I know that it is something that I am capable of overcoming. With consistent effort I can see myself overcoming this barrier to achieve whatever it is I want to achieve. From all my criticization of the education system it wouldn’t be without this system that has allowed me to recognize my strengths and abilities and has enabled me to look upon my weaknesses not as an impossible barrier but as something that I can overcome and climb. On the other hand, even though I can recognize this pattern within myself I learned that nothing is going to be accomplished without a disproportionate amount of time, so that is why it’s going to take consistent effort and not all be accomplished within a day. This kind of self-assessment seems very valuable and is something I actively believe I can improve on and may even somehow adopt as a core value.

From the blog CS@Worcester – Sovibol's Glass Case by Sovibol Keo and used with permission of the author. All other rights reserved by the author.

Sprint Retrospective 2

For this sprint we decided to split up the work a little differently, as a group we agreed that we should switch what projects we were working on to get a better holistic understanding of the inventory system. This somehow led me to wanting to work on creating the entire inventory integration project here.

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

which completes this issue

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem/community/-/issues/79

I learned a lot during this sprint about the intricacies of each file and how they work with each other to create a working project and, at large, a system. I remember early on wanting to work on the frontend for the purpose of being able to work with visual design and UI but from working on the integration project I learned the skeleton and bare bones nature of what we are working on, even considered vaporware. Piecing this project together allowed me to realize what kind of work is required to have things up and running so I then realized I might have to hold off on wanting to work on that aspect of the front end, at least for now. What made it even more challenging was that I had to figure out how having multiple frontends changed creating the project as it was a bit different from other guest info and reporting. Even though I was able to use most of what other groups had, it required some time that was spent looking into the contents of the docker compose file.

Before I worked on creating the integration project I updated to the modern java script within the check out guest front end project, this issue was pretty straight forward and only required finding the right lines to change. Thinking that I was going to be working with the design and presentation I was mildly disappointed. I actually think that this issue and the integration project issue could have switched weight as making sure the integration project worked ended up taking much more time and research. The only thing that I think we can improve on is properly assigning weights to issues.

I think what is good is that a group member and I traded the scrum master position for the sprint, he did good and kept the team working well even through some struggles. It led me to wonder a little more about how other groups or even in the industry how people approach the scrum master position, even wonder how well a team functioned based on the certain characteristics of the scrum master. During this sprint we played around a little more with the projects that we were working on and even the structure of the class, which ultimately made working through the struggles that much more enjoyable.

This last sprint was a whirlwind of emotions and struggles for a variety of different reasons. While reflecting for some reason it appears to me that I felt the need to do individual work during this sprint, which probably isn’t the most productive idea while working with a team. There is a lot that can be taken from this;  I have a strong tendency to often go out and explore myself, that I should be a bit more cognizant of my own impulses, and that there’s always a good time for some play. I think I could’ve changed what I was doing so that I could help my group members with what they happen to be struggling with at the time, and that was something that was taken into the next sprint. Overall, this was a very enlightening and insightful sprint that helped me understand the work that it takes to develop software.

From the blog CS@Worcester – Sovibol's Glass Case by Sovibol Keo and used with permission of the author. All other rights reserved by the author.

Create Your Own Adventure

Instead of reading one pattern at a time, I decided to read it as a choose your own adventure. Anyone as obsessed with those as I was? I don’t recall enjoying reading that often, but I do remember picking that kind of book 8 times out of 10 during library visits. I vividly remember seeing the gooey goosebumps with R.L Stine’s name written above it. I think there was something about that perceived autonomy that I always enjoyed about those books. Looking back on It I get strong sense of horrifying nostalgia. I’m surprised I was ever able to sleep at night at that time.

Any ways that was a bit off topic but lets bring it back around to to this blog post, the task at hand. The first section I decided to read was the Construct Your Own Curriculum pattern, HA, bet you didn’t see that coming. In this blog post I am making a conscious effort to forgo whatever sense of formality that I had as I believe it to be more important to show a sense of authenticity within my writing. 

My takeaway from this chapter is that I should take some time to home in on my skills and what I am good at. I have been able to reflect on my own abilities and work with a sense of mindfulness when pursuing a task. I also learned that I know myself best and that I can trust my own abilities to get a job done, by taking in what resources I have and maintaining a perspective of perpetual learning. This led me to consider how this information may affect me career-wise and where such things may lead.

I want to fully understand my tool set that I was given and improve on the areas that I may be lacking in and even keep in mind that I don’t need to do everything myself and think about the things that I can outsource to people or technology that may be more skilled in a certain aspect. As I close in on the finale of my time at Worcester State, there is a strong sense of self-reflection. So far this book has been a helpful aid in thinking about where I am career-wise and provided a sense that it is only the beginning on this journey to mastery, and that I still have a long ways to go. Yet, I must remember that I can trust in my abilities only once I am able to have a realistic understanding of where I am at. A couple chapters have allowed me to go about my experiences with CS in a way that will lead me to where I want to go. That, I will go into further in the next coming blog post.

From the blog CS@Worcester – Sovibol's Glass Case by Sovibol Keo and used with permission of the author. All other rights reserved by the author.

Trust the process: Sprint Retrospective 1

With our first-ever experience with an agile workflow in the books, my team and I have successfully completed our first ever sprint. As a team, I think we worked wonderfully, especially when considering potential outcomes. Ironically, as the team’s scrum master, I’m glad that we didn’t fall behind on account of me, phew! I do admit that at times I thought I was holding my team back, but my team was very willing to help each other through whatever problems we may have had. As scrum master like to think that it only seemed easy because I had such a great team to work with.

I think each one of us had 4 issues to work on within each of the separate systems. We found that it was easy to split that way and made the overall epic easier to attack.

A major challenge was realizing that I had started doing the work backward. In that, I started with an issue that was dependent on a different issue being completed. I began work with this issue…

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem/inventoryapi/-/issues/4

At some point, I realized that I need to revise the directory structure before doing the documentation as shown in this issue…

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem/inventoryapi/-/issues/5

Unfortunately, after trying to commit those issues I ran into the issue of it not passing the pipeline until these two issues were completed…

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem/inventoryapi/-/issues/6

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem/inventoryapi/-/issues/7

Going into our next sprint planning it was very important to consider what order issues should be completed.

I tried to be a good scrum master to the best of my abilities, more so, to the best of my knowledge of what it is to be scrum master. Yet, I put quite some effort into trying to understand my responsibilities, A big theme for me throughout this sprint was having to research to refresh my memory on things that I should have made sure that I knew before going into the sprint. Various things like maneuvering through git, understanding scrum roles, and evening watching videos on sprint phases, were all things that I had put some time and energy towards.

Most of the improvements that could have been made were personal issues that affected me individually. I was able to partially rest these concerns by trying to talk to other scrum masters and by taking peaks in other teams progress. In particular, I would like to give some credit to Scott for easing some of my tensions regarding holding my team back. Scott offered the advice of “trust the process” when I told him that my group had a shared feeling of not wanting to “break” anything, mind you have yet to read the “Breakable Toys” chapter in the Apprenticeship Patterns book (it will definitely be the topic of an upcoming blog).

One other thing that I wish to improve on is being able to ask better questions and have a better overall line of communication with the product owner. I think it is very valuable to have such immediate access to communicating with the product owner that should definitely be utilized. I think going into my next sprint it would be very advantageous for me to organize whatever good or bad questions I or even my team may have and go to the product owners with the good questions. That way I can have an actual record of questions and even answers. There was a moment where I had also questioned navigating the feeling of the issue of not wanting to “break” anything with Prof. Wurst but he offered similar advice as Scott in that we should “trust the process” but in this case, it was more so “trust in git”. It was that conversation in which I found the value of asking questions.

From the blog CS@Worcester – Sovibol's Glass Case by Sovibol Keo and used with permission of the author. All other rights reserved by the author.

Initial thoughts: Apprenticeship Patterns

I think the timing of this book in my life couldn’t have been any better.

I think the entire idea of software as a craft resonates with me. The idea itself is novel yet somehow familiar. As of now the familiarity can be easily traced due to my current place of employment. It was once described to me as an apprenticeship by a good friend. This wasn’t immediately apparent to me as I didn’t know what it meant to be an apprentice. The introduction of the book provides a good basis for what being an apprentice may entail.  Although it may not traditionally be considered an apprenticeship, I find that the patterns in this book match that of the work that I have been doing.

There was a large part of me that wanted to just go into a trade school but for a combination of reasons I didn’t and instead went to WSU yet I somehow got a job in manufacturing where I get to work hands on. I even got the opportunity to learn how to weld and I think this correlate to the perpetual learning pattern. I enjoy that this book takes the lens of software development and puts it onto apprenticeship. It appears these patterns are relevant to any sort of apprenticeship. I was able to go back and forth between my  “apprenticeship” at work and my apprenticeship in software development, from just the introductions I was able to find that all the patterns were recognizable to me when divided between the two crafts. In so far that if it wasn’t applicable in the software context it was applicable in the manufacturing context.

What I have been pondering as of late is the bridge between my current work and what I am learning in school. At first I believed it to be more material as I think that was the basis in which I understood the world, but after being introduced to this book I would begin to say that its is the way in which I aspire to become a master at my craft.

Something to distinguish though that I think the into briefly touched on is that. From my understanding one is usually an apprentice to a craftsman but in my case, as of now,  in both my trade and my formal education there isn’t any sole person that acts as such a mentor. In fact, the idea of a mental has briefly crossed my mind. This leads me to one of the patterns that stood out to me most now and that is the constructing my curriculum pattern.

From the blog CS@Worcester – Sovibol's Glass Case by Sovibol Keo and used with permission of the author. All other rights reserved by the author.