Record What You Learn

For this week’s blog I decided to write about the chapter “Record What You Learn” from our textbook of software apprenticeship patterns. The context of this pattern is that you learn the same lessons/ideas/things over and over and over again but you never seem to retain the information or you retain it for a short period of time and then forget it. I personally find this to happen to me every so often. Sometimes in class we will learn a lesson and I will not retain the information and when it comes time to use the information we learned or to prove our knowledge of the subject on a test or examination or project (some form of graded material) I will draw a blank. This is extremely frustrating because most of the time I know that we have learned this topic and that I was in that lecture but somehow someway I have forgotten what that thing we learned is. The problem being set up by the book is this; You don’t learn from history or historical mistakes and you are doomed to this repetition of failure due to your lack of discipline to take notes or record what you learn in a way that you wont forget it. The solution to this problem is rather simple; record what you have learned. Do it in some way that sticks with you – a way that makes sense for you. Two different people might have two different ways of remembering information. Maybe I can write notes down in a journal from lecture and be all set whereas my classmate (let’s call him Jim for the sake of conversation) can’t retain information from reviewing basic lecture notes. Maybe in order for the information to stick with Jim he needs to do it hands-on a few times. Once he does it himself physically he will remember how to do it because he knows he’s done it before and has the confidence he’s done it correct in the past. I hope to improve my retention of knowledge by finding more avenues to retain my information as opposed to just relying on lecture notes.

From the blog CS@Worcester – The Average CS Student by Nathan Posterro and used with permission of the author. All other rights reserved by the author.

Sweep the Floor

A good amount of the Apprenticeship Patterns that I see when choosing one to write my blog post about have contexts, situations, and descriptions of people who are confident in their programming abilities, have a defined role on a development team, and are eager to get in the meat of the problem.

However, this context does not describe me very well. I am not confident in my abilities as a programmer yet, I do have an apprenticeship opportunity, but I have no defined role or job title, and I am nervous to tackle important complex tasks because of my inexperience. Thankfully I came across a pattern which describes my situation pretty well.

The “Sweep the Floor” pattern is for people like me who are unsure of the team and vice versa. People who want to contribute to the meaningful work in order to grow their skills and find a defined place on the team, but have only just began their position in the group. This context really spoke to me and pretty much read my mind without my thinking it.

The solution they provide is so remarkably simple that I’m surprised I didn’t think about it before to put my mind at ease. The authors suggest that in order to gain trust and find your place in the team is to in the beginning “volunteer for simple, unglamorous, yet necessary, tasks.” Hence the pattern’s title sweep the floor. If I can’t contribute to the main problem yet, then I can demonstrate my usefulness by handling tasks that are either tedious, not fun, or otherwise that the team does not want to do.

“Typically, you’ll want to focus on the edges of the system where there is less risk, rather than the core where there are usually many dependencies and lots of complexity”. This quote from the authors gave me a lot of clarity about what steps I can take in my internship to make myself known and actually be useful to the company.

However, they do highlight a risk about applying this pattern which I know all too well from other jobs I’ve had in the past; if you constantly are taking the ugly tasks nobody wants to do, there is a risk the group will want to keep you doing the boring, menial tasks. I have had this happen to me to the point where my coworkers would jokingly call me what translates to “Cinderella boy”. To mitigate this risk, the authors suggest to advocate for yourself and look for every opportunity to prove that you can produce quality work on a higher level.

From the blog CS@Worcester – Bit by Bit by rdentremont58 and used with permission of the author. All other rights reserved by the author.

Craft Over Art || S.S. 8

Sams Ships (10)As we have a few weeks left in the semester, I wanted to discuss the more creative apprenticeship patterns. This time I’m going to describe Craft Over Art, which is basically when a solution to a client’s problem can be solved with something that could work…or we could take it and go above and beyond. It’s being more innovative than just settling for a solution just to have something.

I found that the pattern is interesting because it emphasized the importance of how the things built for customers can still be beautiful but must always be useful. If it strays away from being useful, then it no longer counts as the craft.

I also found it to be thought-provoking because it brought up how people are truly in charge of how a problem gets solved. No one can force you to code something a certain way if they do not know a way to solve it on their own, which is why your role exists in the first place.

The pattern has caused me to change the way I think about my intended profession because your work can still reflect you in terms of creativity. As a person, I think I am more on the creative side and incorporating more ideas into creating something for people sounds pretty cool. If I had to follow a super rigorous structure, I may feel limited in what I can do to produce work that makes me happier.

The one thing I have to disagree with in the pattern is the part where it mentions that someone is suddenly no longer “part of the craft” if they deviate a little further. Who sets these boundaries? I do not want people to feel like they are not “enough” to be considered a real craftsman or whichever term it is referred it as just because they were being extra.

Overall, I appreciated the action section which encouraged people to reflect on what projects they worked on or situations they may have found themselves in where they chose creativity over usefulness. At the moments where I have personally done so, I had felt more proud of my work, because I knew it was uniquely mine.

From the blog CS@Worcester by samanthatran and used with permission of the author. All other rights reserved by the author.

Retreat into Competence

For this week’s blog, I am going to be talking about “Retreat into Competence” pattern from the Apprenticeship Pattern book. This pattern is about realizing how little you know, or when the new challenges that you have taken are not working out so well.  As you work, there are going to be many projects and challenges that are gonna be assigned or you are going to take. Sometimes, these challenges can be something you have never done before, or it might be a roadblock that you are gonna have to clear and these challenges are making you realize how little you know.

The book’s solution to this pattern is to “Pull back, then launch forward like a stone from a catapult.” They said that you should retreat briefly into what your confident on doing and regain composure. Take some time to build something that you know how then use that experience to see how far you’ve really come and measure what else you are capable of. Being an apprentice there is going to be a lot of ups and downs. You will experience learning new technologies and use it to leverage your knowledge that would deliver value to your customers. But you will also experience terror, roadblocks that seem impossible to pass through. These challenges can be overwhelming at times but it is to be expected if you want to progress.

I totally agree with this pattern. There are going to be times when you will encounter problems that seem to be unsolvable or problems that will show you just how much you actually know. In life there are going to be problems that seem impossible to solve, we get overwhelmed and try to forget about it, which becomes a bigger problem. I like how the pattern suggests that you look back on what you know how to do first.  It will show you how far you’ve really come. This process might give you hope that no challenge is impossible, you just gotta go through all the learning again.

From the blog CS@Worcester – Computer Science by csrenz and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns – Sweep the Floor

For this week, i read on “sweep the floor”. I found it very interesting. As a programmer, there are a whole lot of unfinished project you eventually will not complete on time or not will not complete it at all and will abandon it. As  i was reading i saw some of the things why developers forget, why they decide not to complete a project or why they think this particular project is not a that necessary.

From the readings to my understanding, having finished projects demonstrates to potential employers or employers that you can deliver what you set out to deliver, but it depends on what you mean by “project”.

If you are doing the project with a view to having a complete product that showcases all of your skills and may be something you want to make money out of eventually then yes you should finish it, or at least show that it is actively being worked on.

If you are doing the project to learn specific things (how to stream video, password encryption, what ever) then once you have that aspect working it’s less vital to have a fully functional product as you have effectively completed the project. What you should have is something that can you can show prospective employers to demonstrate your skills.

For example, this might just be a web site that says “Welcome back, Derek odam” after successfully logging in and nothing else – but that’s fine as you are showing off the code behind the website that demonstrates you understand password encryption and secure connections etc.

Sometimes because of a code statement or situation that can not be solved, a project is left unsolved. Which most of the time from the beginning of the project all the information given were to make the project a successful one or even sometimes the better one of the new project. In my small knowledge or opinion i think checking for all unsolved situation will be very helpful in a very long run.

I actually enjoyed reading this part of the pattern because, it makes my know that without the love for the work you are doing, you will always be procrastinating leading to unsolved issues. Which is very bad. Sometimes not very  bad since maybe you are a deadline to which a project has to be completed. In that case skipping a small problem will be a wise decision to take.

From the blog CS@worcester – Site Title by Derek Odame and used with permission of the author. All other rights reserved by the author.

B9: Rubbing Elbows

          The “Rubbing Elbows” pattern is described as a way be able to branch out and meet other developers instead of working alone. The book talks about how productivity and learning can understandable plateau if you constantly work alone. The best learning experiences come from balancing private learning with team learning whether that be in a large team or simply coding with another person. It allows you to learn things that can only be understood when you and another person have a shared goal in mind. There are little quirks that you can pick up when working with someone that a mentor may leave out or find trivial to teach due to the small scope of learning it provides but over time these quirks can add up. This being said, there are also negative effects of this pattern to watch out for. An example would be to not pick up bad habits that your partner may develop or have. Another example is to make sure to not fall behind on your part of the work because it then hinders your partners learning progress as well if he has to pick up the pieces behind you.

          I found this pattern to be understanding of solo programmers and shows them a way to learn more through working in teams. It showed that working in groups and teams can build communication skills and increases exposure to several coding styles. I found that when the book mentioned pair programming as an example, I got much more interested in the topic. The idea of switching off coding seems very interesting to me and makes me want to learn more for an experience programmer. I want to incorporate this mindset in my work environment to learn better from my peers. The pattern did a good job on the negatives as well by going into subconsciously learning habits that aren’t good for you. This can be helpful to keep me mindful that some habits should be avoided or corrected to increase proficiency at the language. I agree with this pattern very much as it has taught me to value pair programming much more and has instilled a new interest to find a coding buddy to learn off of.

From the blog CS@Worcester – Student To Scholar by kumarcomputerscience and used with permission of the author. All other rights reserved by the author.

Pattern “Kindred Spirits”

This week, I will be discussing “Kindred Spirits” from Apprenticeship Patterns by Adewale Oshineye and Dave Hoover. It is intuitive to surround yourself with people that are likeminded, trying to achieve the same goal. I wanted to read this section to know if I was going around it the right way.

I went into this wondering if they meant having good relationships with coworkers and classmates. It is always valuable to have a friend to ask for help, but it is not the whole picture. It is something that needs to be actively pursued.

The authors recommends joining or creating a group to foster your interests.  It seems that I am somewhat on the right track. I feel that I am pursuing this in my extracurricular activities. Currently, the only computer science group that I am actively engaged in is the Worcester State Computer Science Club (Re:coded, I think the official name is).

It encouraged me that the club they mentioned, Extreme Tuesday Club, boasts hundreds of members but usually has only a dozen or so people that will show up to a meeting. It seems that we have about the same ratio of members showing up to an event, with a few dozen members and a handful of “irregular regulars,” as the authors calls them.

Going forward, I would like to play a bigger role in leading our workshops. I have helped come up with some of the ideas for the last few, but I have largely been learning as I have been going along. This may not be the worst thing, as one of the apprenticeship patterns that I have read (but have not written about) is “be the worst.”

There was one quote that stuck out to me, which was, “If your group becomes large enough and energetic enough, it will sustain itself even when you are not there. That’s when you know you have a community.” I really hope that I will help it grow enough to this point so it will continue after the leaders and I graduate soon.

The thing that stood out to most was the advice to always continue to ask questions that shock the community. Something that I did not think about was what the tendency that group-think might develop. I think I do a good job of not allowing this, but I sometimes feel guilty when I don’t feel like a “team player.” This gives me permission to continue to do this, but less apologetically so.

From the blog Sam Bryan by and used with permission of the author. All other rights reserved by the author.

Sprint Retrospective 3

In this week’s sprint, we reviewed videos provided by Greg Schmidt, detailing what he wants from us to complete. From these we were able to see the possible directions, we as the team, could take to completing some of these story tasks. Our team, team Tapmah, was split between designing the bottom navigation bar or working on mocking the server for the project. Ultimately, we decided that we should focus on mocking a server that all groups could and would need to use to test that there aspects of the program are working. One utility that Andrew found that we have started to explore the use of is Nock, a mocking tool that is used for test modules which rely on http requests. When Andrew found that, I started looking into how this mocking works, finding several videos on Youtube which helped. It was through these videos that I found out about a feature of “mocha” called hooks, which is something that I had not seen previously. These hooks allow you to define code that will be run before or after each test suite, which is how we will be able to mock these servers. Learning about this mocking will definitely help me in the future with project, now having this knowledge. Knowing about this now and looking back at previous projects done with API’s I feel this knowledge would have helped me in testing some of the features I had tried. Also during the week I had looked at the video’s by Greg Schmidt about possible items the team may need to “mock” when other teams start requiring tests for their contributions. Some examples of things that will need to be mocked by the team will be the navigation points for the bottom bar, patient list, separate form selection, and multiple tabs. Each of these items will need to have a mock test to know that they are working as intended, without requiring an actual server to be getting replies from. Another bit of information that I found while doing all this research, as coding work has not really begun much yet, is that something like does have its downfalls with things like if the http response is complex.

From the blog CS@Worcester – Dcanton Blog by dcantonblog and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns – Sweep The Floor

Hi everyone and welcome to another CS 448 Software Development Capstone blog. Today blog topic is about one of the individual apprenticeship patterns which happen to record what you learn. I wanted to read more about this pattern because I can relate. Ever since last semester I been writing many blogs and didn’t fully understand why I was posting them. At first, I thought this method of recording what I learn was to help us research more information and writing them as blogs would help us understand the material better. After reading this, I realize that it’s just more than blogging once per week. I understand that recording our journey helps keep vital resources, makes our journey explicit, and can be helpful to many others. I feel like after reading this individual apprenticeship pattern I will change the way I work because all this time I was blogging, I didn’t really blog for purpose and just blog because it was assigned so I think I will be more efficient when I blog now. I also picked up a new idea from reading this pattern which is to have two journal that is private and public. I can use the public for sharing what I have learned and gaining feedback and the private one for me, to be honest with my status in programming. I do agree that it best to have both because of the perks that each offer. I like when the record what you learn pattern state that Dave was constantly posting his journey for years and eventually, he had tons of resources that he then later uses later in his career. The reason why I like this statement is that it makes me more motivated when posting these blog assignments because I know that eventually, it will come in handy one day in my career. All in all, I felt like this individual apprenticeship pattern, record what you learn is very informative. I learned that every apprentice should keep a journal for their journey and try to write every day as one day it will help others and even help themselves.

From the blog CS@Worcester – Dcanton Blog by dcantonblog and used with permission of the author. All other rights reserved by the author.

Breakable Toys

‘Breakable Toys’ was the title of the Apprenticeship Pattern I decided to write about today. This pattern in a summary is pretty much about success being built on failures. This idea is something that has taken a lot for me to fully understand and even now I still have a hard time understanding it. I have always been bad at school and it seemed like even when I was failing it seemed like it never went anywhere. I had just a bunch of failures stacked on top of each other with no successes. It really wasn’t until I started to do poorly in running that I finally started to realize what that quote meant. When I had failed in a race in Cross Country it only motivated me to do better and learn from my mistakes. The same can be said in the workforce. The first thing that they mention that I completely agree with is to find a safe spot to have those failures. If you are in an environment where you do not feel comfortable in failing and trying to work around those failures, you will never actually learn from them. Only when you are in a comfortable environment can you make true mistakes and really learn from them. Because I still view myself as a novice in programming I feel as though I’m making mistakes all the time. The problem is though, is that when I am with my friends and classmates who I feel are superior than me, I feel more shy and unable to express that I am not understanding something and make mistakes. When I am at home or with my father, I feel a lot more comfortable and able to mistakes without any judgment. This can also go the other way in things that I do excel at. Finding areas and times that you are not doing well, will only help you get better. This pattern is also very similar to wearing the white belt in my opinion. When you are wearing the white belt, you are more open to making mistakes and being yourself. Each mistake that you make, will be a reminder for the next time that are about to make that mistake.

From the blog mrogers4836 by mrogers4836 and used with permission of the author. All other rights reserved by the author.