Author Archives: jneal44

CS 448 Post #8

I wanted my last post to be about a pattern from chapter 6, and I chose Dig Deeper, which is about dealing with complex problems and to learning as much as you should. It builds upon previous chapters by talking about how you can run into issues by learning just enough to handle some problems but not others, and having just “superficial knowledge of a thousand tools”. At this level where some people will be at, there is much more that they can learn, and as the name of the pattern says, they need to dig deeper into the technology and tools that are out there. This sounds like retreading previous patterns about growth and learning more, but this pattern specifies the difference between the learning that has been talked about before, and going deeper into the knowledge that we have growing. Instead of just learning how to solve problems and read designs, this pattern is about understanding how these are created and why they are the way they are. The pattern put it best when it stated “depth means understanding the forces that led to a design rather than just the details of a design”.

I selected this pattern in particular not just because it adds on the idea of going deeper into what we are learning, but because the pattern goes in depth on this idea. It talks a lot about how this can be beneficial to you and how you can dive deeper into what you already know and having a full understanding of what you are working with, both what you are working with and how they came to be. In recent years I have been trying to use something similar to this method when it comes to other topics, trying to understand why something is the way it is, like with psychology and seeing how people act but wanting to know why someone may act a certain way.

Knowing the how and why of something is the key to understanding it. You can see and recognize that something exists and can deal with it without fully understanding it, but trying to understand it can not only help you learn more about what you are dealing with, but it can help you come up with an alternative and possibly better way to deal with it.

From the blog Jeffery Neal's Blog by jneal44 and used with permission of the author. All other rights reserved by the author.

Sprint 3 Retrospective

Our third sprint was definitely the toughest, and we ran into some issues throughout the sprint that really slowed us down. We started out at fixing problems for the project from the end of the previous sprint, then moved on to the last issues we put in the backlog. One issue in particular would take a lot of time to solve and prevented some of the other issues from being completed.

Starting with what worked well, we were doing better at communicating with each other and finished with enough weight for the review. When we were having problems with the issues, we were keeping in touch with each other, and most of us were working together on the main issue that was holding us back. Some of us were having more success than others, but it was eventually completed and the other issues that were relying on it were being finished too. We were also able to finish the presentation on time, and had a plan for putting the presentation together with slides and an outline that we put together.

Our main problem for this sprint wasn’t a problem with the team, but with one of the issues we were working on, which had to do with building the backend server and getting it working for everyone. Along with getting the server working, some of us had different issues that others weren’t getting. We spent a lot of time working on this issue, and had to rush through the last issues in the last week. Aside from that, we were still trying to improving on keeping up the merge requests up to date. We managed to get all the merge requests done in time, the requests would just build up over a few days. Aside from that we had some days where team members would not be there in person, but they would join online and were able to join in the in-person discussions through the discord chat.

I think I did well at continuing with the improvements I was making as a team member by communicating with the team when working on the project and the presentation, but there were a couple times when working on the presentation that I missed out on some discussion. I would later join in the discussions, catch up on what I missed, and do my part in recording for the presentation. When waiting on the backend server issue being completed, I had the idea of setting the api tests up with a template for the test files, so that they would be mostly done by the time we are able to use the api. That way, the issues could still be completed while dealing with the backend server. I got this idea from a template file that we had made in the previous sprint for the data files, and a template file for api testing that was created during this sprint, and figured we could have something similar for the api testing methods while waiting. In the endpoint api templates, the testing methods were set up for the api to accept sample valid and invalid calls that worked for samples we had, so when we would be able to use the api for the testing, we could just make new calls to put in those positions and then adjust based on testing results.

https://gitlab.com/LibreFoodPantry/common-services/foodkeeper/foodkeeper-newbackend/-/merge_requests/28

Resolving the problems with the category test file so all tests passed.

https://gitlab.com/LibreFoodPantry/common-services/foodkeeper/foodkeeper-newbackend/-/merge_requests/33

Template for the category api testing that was created while waiting for the backend server.

https://gitlab.com/LibreFoodPantry/common-services/foodkeeper/foodkeeper-newbackend/-/merge_requests/36

Template for the product api testing that was created while waiting for the backend server.

From the blog Jeffery Neal's Blog by jneal44 and used with permission of the author. All other rights reserved by the author.

CS 448 Post #7

I continued through chapter 5 and wanted my next post to be about the pattern Share What You Learn before moving on to chapter 6 because it interested me most out of the other patterns. The previous patterns and chapters have mainly been about our own growth and journey, so it was interesting to read about how we can help others grow. While some patterns partially touched on this by talking about teamwork, this pattern isn’t about working with others and improving yourself and them, instead it is about you becoming one of the sources of research for others to learn from. Overtime as you grow and learn more, you will have more that you can share and pass along to others who want to learn from you. This can be done by starting a blog, making a book, or some other way that you can share your experiences and work. The blogs that I and other students have been writing is an example of that too. I like that it was also mentioned that even the people sharing with and teaching others also learn from those experiences, similar to teamwork. It was also important for the book to mention that some things should either not be shared, or should be shared by someone other than you depending on what it is, like personal information or secrets.

One experience that this reminds me of is when one of my teachers in school would ask about my work, specifically math in this case. The journal I worked in for that class would sometimes have messy work when I was going through the math problems, and I wasn’t thinking much about how the work looked. The teacher for that class mentioned to me that others may want to see my work and learn from it, whether it be other students in the class, or even other people who may come across it after I’m done, so I should try to make the work more easy to understand. At the time, I didn’t think anyone would want to look through my work or think that it would help. Part of that was doubt in what I was doing. I’ve been considering it more in recent years, especially after reading through this book, that others will want to see my work and that some people may learn from it.

From the blog Jeffery Neal's Blog by jneal44 and used with permission of the author. All other rights reserved by the author.

CS 448 Post #6

I finished the patterns I wanted to write about from chapter 4 and moved on to chapter 5, Perpetual Learning. Like the last few chapters, I to post about the first pattern of the chapter and then one of the last ones, so this post will be about Expand your Bandwidth. The focus of the chapter is on the topic of the lifelong journey of learning that is taken when you are an apprentice transitioning into a journeyman, which is a concept that was brought up in the first chapter.

The first pattern is an effective start to the chapter, as it is about how you can move on from lower level problems to higher level ones, and how you can expand your learning ability. The solution given to the problem is to find different ways to learn more than you may not have been using before, such as blogs, books, and other online resources. Because of how much technology there is in the world today, there are plenty of ways to find information online, and use different avenues of learning. I have found a lot of information online by either looking things up when I had questions or issues, or just by reading blogs and articles. I have looked online plenty of times when I needed help on something, especially computer science projects. I would search based on the error codes I was getting and try different sites to see if I could find a solution that worked for me. Using online resources have been very helpful to me for my work related to computer science, along with some other courses and activities.

I agree with the last paragraph of the solution that talks about deciding when you should start expanding, because while it is good to have all this information to learn from, you still want time to put that learning to use at software craftsmanship. You want to make time to continue working and improving yourself so that everything you are reading about and learning is beneficial to your work. I like that this problem brought more attention to the topic of this being a lifelong journey with continuous learning and development, while pointing out potential problems with obsessing over learning.

From the blog Jeffery Neal's Blog by jneal44 and used with permission of the author. All other rights reserved by the author.

CS 448 Post 5

My next post is on the problem Sweep the Floor from chapter 4, which has to do with when you are getting started on a group project and want to be able to contribute to the team and grow your own skills. This problem got my interest the most in the chapter because it is a problem that I have when I am in anything that needs a group effort, usually projects, and I think this is a common problem for people. Whether it be a project for school or work, a team based sport, or other activities that involve teams, contributing to the activity and earning trust from your team are the main concerns.

I tend to worry about not doing well and holding the team back, and the solution offered matches what I usually do to prove myself. The recommended solution is to start with the “simple, unglamorous, yet necessary, tasks” and work your way through your tasks to show what you’re capable of. When it comes to contributing and earning your teams trust, the two concerns usually go together because it will be your contributions that help you earn trust, and you can improve yourself as you work and do your share of the workload. The type of tasks you do are also important because what you complete can show your capabilities, and you will want to do some of them that you may not enjoy but are necessary for the project to show you are willing to do them.

While it is important for you to contribute to the team, you want to avoid getting to the point where you end up doing more work than others, or are the only one working on the “simple” tasks that the others do not want to do. Either you are the one stuck with those tasks, or those are the only tasks you are doing and are not doing any of the higher level tasks and can’t improve yourself. It can be difficult to contribute that way, and you won’t learn that much. Team projects can be beneficial to the members working together and improving them all at a higher rate than working alone, but it can also be difficult to divide the work and for new members to the team to contribute.

From the blog Jeffery Neal's Blog by jneal44 and used with permission of the author. All other rights reserved by the author.

Sprint 2 Retrospective

For the second sprint, we tried some of the changes we talked about from the first sprint retrospective and some things turned out better than before, but we still have some things we can work on.

Our main concern from the previous sprint was communication, especially on gitlab, and we believe that we have improved because we have been commenting more on issues and stuck to approving and completing merge requests outside of meetings. Up until the last meeting, we were caught up with merge requests and dealing with them before meetings. We made a rule to have merge requests get approved by at least two people before we make the merge. Only a couple issues had to get unapproved because of some problems that some of us who approved didn’t catch, but most of them went through normally. It is also good that we were able to adapt to new technologies that we started working with when it came to test classes and issues relating to automation. Half of us mainly focused on the backend data and test classes while the other half worked on other issues for the backend and API, along with one of the sets of data and test classes. Despite the gap between meetings from before spring break and after the two cancelled classes when we came back, we were able to finish most of the issues that we had for that sprint before the review and only a couple were moved to the product backlog for the last sprint.

The big thing that was a problem for us was the gap between meetings. We were doing some communicating online to stay caught up with issues, but we can improve on that. While we were able to finish most of the issues and got credit for the weight of work, we were rushing near the end to get everything done and had those couple issues we had to push back to the backlog, and there was some disorganization because some of the issues were not being assigned to epics. We have cleaned up the boards and they are all organized now. We wanted to work more on giving better names and descriptions to some of the issues, not just for consistency, but also because some of them were vague or unclear. Lastly, we want to continue our plan with approving merge requests and then merging them outside of class, but want to stay caught up with them because the merge requests filled up for the last meeting of the second sprint and we had to go through each one like how we did before, which was using up time that could be used for other things. We want to improve upon this sprint and have the last sprint be the best one.

As for me and how I did with the sprint and team, I would say I improved from before because I was communicating more online than the first sprint, which was my main focus of improvement. I was more involved in discussions on discord about planning and issues, and I stayed the same for in person discussions because I already getting involved in person. Going forward, I want to try and comment more on gitlab issues if I have any questions.

https://gitlab.com/LibreFoodPantry/common-services/foodkeeper/foodkeeper-newbackend/-/merge_requests/13?

Making the data file for the category object that has the methods used in the category endpoints.

https://gitlab.com/LibreFoodPantry/common-services/foodkeeper/foodkeeper-newbackend/-/merge_requests/15

Making the test file for category to test the methods I made in the data file.

https://gitlab.com/LibreFoodPantry/common-services/foodkeeper/foodkeeper-newbackend/-/merge_requests/16

The endpoint name changes for the backend to maintain consistency.

https://gitlab.com/LibreFoodPantry/common-services/foodkeeper/foodkeeperapi/-/merge_requests/46

The changes for the endpoint names where they appear in the API to match the changes in the backend.

From the blog Jeffery Neal's Blog by jneal44 and used with permission of the author. All other rights reserved by the author.

CS 448 Post #4

I moved on to chapter 4 for this post and wanted to start with the first problem for it, Be the Worst. The problem is here when you learned all you can about a certain skill or skillset and cannot grow any more at your current position, with the solution to this problem being to move on to another position and group where you are the worst at what is being worked on. That way, you will have plenty of room to grow and you have help for when you make mistakes. It’s a case of starting from the bottom and working your way to the top. I can see how effective this can be and it has been successful for others, but I also agree with the possible risks that may come from this tactic, such as bringing the team down, not catching up, and possible self esteem issues. It can lead to problems not just for you, but for your team. However, you can deal with these risks by joining teams that are open to this mindset, and/or checking in with the team on your progress to make sure you are not falling behind.

Some people prefer working with others and can improve faster than they would if they were alone. I usually work with other people that I have similar skill levels with, so I don’t have that many examples of teams that I have been in where I or someone else was the “worst”. I do have examples where I was having some trouble and was worried about falling behind, and I would talk with the other members for tips or to get help on what I was working on. However, I do usually try to figure things out on my own because I sometimes think I may be bothering my teammates. This has led to some issues where I came close to falling behind, but I was able to deal with it before it became a problem.

Collaborating with others is a very effective way at working and improving yourself, and the idea of being the worst in a group and working your way up over time is a successful path, but does come with risks that you will need to be able handle.

From the blog Jeffery Neal's Blog by jneal44 and used with permission of the author. All other rights reserved by the author.

CS 448 Post #3

For my next post, I wanted to write about a problem later in chapter 3 titled Draw Your Own Map, which was referenced in the first problem of the chapter, The Long Road. This problem is about when you do not fit career paths given to you by an employer, and this problem could be applied to any possible employer. It can be a concern that your skillset may not match what your current or potential employer is asking for and you will either have trouble with the work, or have to move on to a different job. This problem stuck out to me because it is also a concern that I have for when I go into the workforce, that I may not be fit for some jobs that I thought I was. I feel comfortable with most of what I have worked on in computer science and think that I can handle it at an official job, but there are some things I am unsure about, or new things that I may have trouble with.

Going into the solution and action, I like the idea of making a roadmap for jobs that start with jobs that you’re first looking at, then jotting down branching jobs that can stem from it, and repeating a few more times until you want to stop and look at the jobs and how to get to that point. Considering other possibilities and keeping in mind that this is your path to choose will also be helpful. I also like the idea of starting with small steps in your planning and working your way to the bigger goals.

The constant idea to focus on this being your path is especially effective for this problem because the main thing to keep in mind is that this is your skillset and it not fitting some jobs is not a bad thing. I also agree that while you can get help or tips from others on how to decide on your path, it is your path to take and your future to decide on. It will also take time to make your map, and it is expected to be changed and updated over time as you continue on your journey.

From the blog Jeffery Neal's Blog by jneal44 and used with permission of the author. All other rights reserved by the author.

CS 448 Post 2

For my next post, I wanted to move on to the first problem in chapter 3, The Long Road. I liked this problem because it deals with a situation where you are stuck between wanting to continue learning more about computer science and improving your skill at it, and moving on to “the highest-paying job and the first promotion you can get your hands on”. It comes down to this because it can take many years to master your skills, and you may never fully master them because technology continues to advance and that there is so much to learn.

The quotes at the beginning of the problem, and the problem itself support the idea that improving yourself at and even mastering something will likely take your whole life. Apprenticeships, such as computer science in this case, are journeys that are based on long term growth, and improving yourself is meant to be the main purpose of what you do. I can see that specifically with computer science, trying to completely master it may never be possible because not only is there already a huge amount of technology in the world to learn and work with, advances are constantly being made. While this means that there will be plenty of jobs and responsibilities for computer scientists, there may also never be some kind of finish line in terms of mastering computer science and technology. However, the same could be said for other fields of learning because advances are also being made in those fields that may or may not be linked to technology, and we always have our and other people’s experiences to learn from. There is always more to learn from, and computer science is just one example of that.

One more thing I want to mention and that I liked is that it is reinforced multiple times going over this problem that the path of focusing on mastering skills over your whole life is not the only path. Other paths for computer scientists such as settling in on a job like tester or project manager, entering jobs early in your life, or even leaving the field and going into other fields are also valid. These paths are not the focus of this book, but there are not wrong paths to take either.

From the blog Jeffery Neal's Blog by jneal44 and used with permission of the author. All other rights reserved by the author.

Sprint 1 Retrospective

My group for this sprint was team 3, and we worked on the FoodKeeper for LibreFoodPantry, and at the end of our first sprint, we have made a pretty good amount of progress. A lot of work has been done to the API for its schemas, paths, and responses, and we have done some work on the backend too with its endpoints.

We have worked well as a team so far by staying communicated with each other and everyone had a roughly even amount of weight and work. We were assigning issues to different people and learned quickly not to have multiple issues assigned to a person at a time because the work would be unbalanced and/or other people would be left without things to do. Each person had an issue either done or mostly done by the next meeting, and they had their next issue assigned after resolving any problems. Everyone was involved in the in person discussions.

Our main area of improvement is communication on gitlab, because for our first sprint, the majority of our discussions were in person or on discord. Because of this, there was not much discussion on gitlab in the comments of epics, issues, and merge requests. This can make it look like we are not having these discussions when people look at the project and go through the work done for it because they can’t see our discussions on discord or in person, so we will using gitlab for our discussions and questions more often. The two other areas that were talked about were how we handled our standup meetings and merge requests. Our stand up meetings would go a little longer than intended because we would have minor discussions when talking about what was worked on, and we agreed to wait until everyone talked about what they did, what they plan to do, and what is stopping them, before we go into our questions and discussion. With our merge requests, we thought it would be a good idea for a few people to check and approve requests before the meetings, so less time is used on reviewing the requests.

As an individual, I think I was doing a good job on the issues I worked on, and I was involved in the in person discussions. However, I was not talking that much on discord because I wanted to wait until I was in person with the group to ask any questions I had. We are focusing more on having discussions on gitlab instead of discord, so I want to be more involved on there than I was on discord for the next sprint.

Gitlab links :

https://gitlab.com/LibreFoodPantry/common-services/foodkeeper/foodkeeperapi/-/merge_requests/13

The schema for modelandview, I originally made it as a .js file and had to change it to a .yaml file.

https://gitlab.com/LibreFoodPantry/common-services/foodkeeper/foodkeeperapi/-/merge_requests/28

The paths for the category object that includes getAllCategories.yaml and getCategoryID.yaml.

https://gitlab.com/LibreFoodPantry/common-services/foodkeeper/foodkeeper-newbackend/-/merge_requests/3

The endpoints for the category object that include getAllCategories.js and getCategoryID.yaml.

https://gitlab.com/LibreFoodPantry/common-services/foodkeeper/foodkeeper-newbackend/-/merge_requests/5

The product endpoints that includes getAllProducts.js, getProductWithID.js, getProductIDName.js, and getProductCategoryID.js.

https://gitlab.com/LibreFoodPantry/common-services/foodkeeper/foodkeeperapi/-/merge_requests/33

https://gitlab.com/LibreFoodPantry/common-services/foodkeeper/foodkeeperapi/-/blob/main/src/paths/index.yaml

The index.yaml file that covers the paths for the api, the put methods from the first request were meant to be get methods, which has been fixed in the file itself.

From the blog Jeffery Neal's Blog by jneal44 and used with permission of the author. All other rights reserved by the author.