Individual Apprenticeship Patterns

https://www.oreilly.com/library/view/apprenticeship-patterns/9780596806842/apa.html

Of the list provided above, I will go into detail summarizing specific patterns I find to be interesting or relevant.

I will begin with the pattern titled “Be the Worst.” The title is somewhat misleading, since the objective is actually to improve yourself at every opportunity. If you find yourself as the biggest fish in the software development pond, this pattern encourages you to find work in a bigger pond with bigger fish. Now, you can learn more from them and work your way up to being the biggest fish again, then repeat the process. From the standpoint of prioritizing knowledge above all else, this pattern makes sense, however, I don’t think I have the courage to follow it.

I can relate this to my current job at Best Buy. When I was first hired, I knew nothing about TVs, security cameras, and appliances also I didn’t know as much as I needed to about routers, car improvements, and drones. I struggled for the first few months as I awkwardly tried to give customers the answers I thought of on the top of my head. That period of employment sucked and I knew as I learned and practiced talking, I would get much better at it. As a result, my sales would improve, my job gets easier, and the customer buys something they actually need.

This pattern would encourage me to quit my job and go work at staples or another retailer where I knew nothing about the products, so that I may learn them all over again. This comes with great awkwardness, and the customers can always tell when I don’t know what I am talking about. This move seems absurd, certainly not worth it unless it came with a higher pay, to which I’d talk to my manager at Best Buy for a raise first. If this experience is like dealing with a new group of software developers, it would be a very difficult decision for me to leave my current group.

Another relatable pattern the article mentions is “Expose Your Ignorance.” This is about humbly accepting that you need help and actively seeking it despite looking stupid. It is very easy to feel ashamed for not having knowledge, based on the fear that it is very easy for people with knowledge to look down on those that don’t. Nobody really wants to raise their hand in class, a setting designed for answering questions, in fear of their question indicating they are ignorant. This is very destructive, very common behavior and overcoming it is necessary to learn more efficiently.

From the blog CS@Worcester – CS Mikes Way by CSmikesway and used with permission of the author. All other rights reserved by the author.

Practice, Practice, Practice

Practice pattern:
You will learn by making mistakes and it is inevitable. How would you purposely make mistakes while on the job? This pattern suggests in order to do so you must find a mentor and have them hand you a task you are not comfortable with and move forward from there. Practice your skills and make improvements each time.

George Leonard 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.” I couldn’t agree with this quote more. Over the years we have completed numerous projects and learned many methods on solving problems we encounter while completing these projects. Over time we developed the skills of analyzing the way we go about writing code and fixing bugs without even realizing it.

10,000 hours. That is the amount of time it takes an individual to truly ‘master’ something. Now will that be the case for us? I wouldn’t say so to an extent due to the changes in technology but basic skills like planning, designing, problem solving and debugging would definitely improve given we put hours into working on these skills. The author also makes a very good point when he says practice does not make perfect if you are practicing the wrong skill over and over. There must be changes to improve on that skill each time one practices it.

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

Apprenticeship Patterns Overview

https://www.oreilly.com/library/view/apprenticeship-patterns/9780596806842/#toc-start

I have been assigned to read the first chapter, and the introductions of the subsequent chapters two through six. My first take-away line from the first chapter is that this book was written for me, not for my boss or professor. I find this ironic, since I wouldn’t even know about this book if not for my professor assigning it to me. I understand the meaning is to read it for my own benefit above all else, which I agree with.

Martin Gustavson summarizes apprenticeship as having the attitude that there is always a better way to do things than what you produce. Does this mean that as soon as I believe I have produced something that I believe is perfection, I am now a journeyman? I feel like this definition is not very accurate.

The outcome of an apprenticeship depends on how much effort one wants to put into it, it is more my responsibility to succeed than my master’s/teacher’s. I’d like to add that having a good or bad teacher directly effects how much I am going to learn. In high school, I barely passed algebra 2 with a D, whereas in college, I got an A in calculus. Obviously there is a huge leap in difficultly of the two subjects, so why did I preform much better in the harder class? The main difference between the two classes (and the two outcomes) was based on the crappy high school teacher I had versus the professional college professor. That concept will repeat in an apprenticeship setting.

Chapter two’s introduction starts with an interesting story about a philosopher and a zen master. I found this passage particularly interesting. Every time the master tries to explain something, the philosopher excitedly interrupts him by expressing what he has learned or studied elsewhere. By interrupting the lesson, the philosopher misses out on information. The phrase “empty your cup” refers to the concept that you must come to new experiences with an empty mind in order to fill it with as much knowledge as possible. New learners especially have this problem where they rudely can’t listen and learn. I may be guilty of this, but at least now I am conscious of it.

Chapter three is all about the “long road” in reference to the endless journey of knowledge. It bothered me particularly when the chapter states the importance of long term goals over things like salary and leadership. If I understand this correctly, long term goals in this context only means more knowledgeable in a specific field, with the trade off being you wont make as much money. My long-term goal is solely to make as much money as possible.

I would rather rich and dumb than smart and poor, depending on your definition of “dumb.” The book seems to define “dumb” in this context as “not knowing as much about programming as you could” which I can live with. As long as I am smart enough to be a good person, I would rather make more money. Overall, I think this book prioritizes knowledge too much, knowledge is the means to wealth and power, not the other way around.

Chapter four is about not becoming comfortable as the smartest person in your development group. If that happens, the book encourages leaving that group and becoming the dumbest person in a different group, then working your way up again, which makes sense and is agreeable.

Chapter five reiterates that perpetual learning is important no matter what your skill level. It covers prioritizing a reading list and continuously learning as much as possible.

Chapter six is related to five in that you must maintain your own learning. Once you graduate, you don’t have assignments or due dates to keep you on track. Beneficially, this means you also don’t have to learn anything you don’t think is relevant/interesting.

From the blog CS@Worcester – CS Mikes Way by CSmikesway and used with permission of the author. All other rights reserved by the author.

Apprenticeship

Throughout our undergraduate studies we were taught how to read, write, test, debug and understand code. Data structures were drilled into our heads and knowing basic time complexity of methods were almost second nature to us. One thing we were never taught was the transition stage going from student to working in the industry that we have been preparing for. What is expected of new graduates and how much of the skills carry over from school? Countless questions to be answered but after reading the first chapter of ‘Apprenticeship Patterns’ it gave me a reassuring feeling that everything will work out eventually; if not ctrl+alt+del.

Right off the bat a read a sentence that intrigued me, ” Far too often, it ends with a promotion to middle management…just a few years later…”. It made me wonder if this is what the software industry is truly like. Do that many software developers crave the idea of ending their software development career so soon? For me, the feeling of being able to come up with a solution to a problem that has created a roadblock in one of my projects has got to be one of the best feelings ever so I was not quite sure why so many individuals choose to accept this management role. Was it because of a pay raise? Tired of thinking on days end? I guess I will find out in the near future.

When learning what it means to be an apprentice, I was able to put myself in the definition given, “Having the attitude that there’s always a better/smarter/faster way to do what you just did and what you’re currently doing.” This definition is true to this day because learning is part of the life of a developer no matter if you’ve just started programming or have been programming all your life; technology will always be changing and you must change with it. What I took away from this passage was that there is always an apprentice side of a developer even though the author suggest that apprenticeship is the beginning of your journey as a software craftsman. I guess in some ways our apprenticeship has already started, learning from our professors and seeking their guidance to fulfill our thirst for knowledge they could provide us.

Chapter 2:
The patterns in this chapter describes how many students graduate and go into their first job believing they know everything and how things should be done but that is not the case. One must go in with an open mind and absorb as much knowledge we can in the first few years.

Chapter 3:
This chapter teaches us to not be too caught up on the things we achieved in the past but to be able to move forward and learn new material. It also teaches us that by communicating with our team we may be able to unravel the things we don’t know even exists.

Chapter 4:
“If you are the smartest person in the room, you are in the wrong room” – Some guy. On our journey we will come to this point eventually. We have learned mostly everything our company can teach us but becoming comfortable or not is up to us. We must desire to continually grow and in order to do so sometimes we must seek different organizations.

Chapter 5:
Learning a new skill is always hard at first but learning how to learn may seem even more daunting. This chapter teaches you the methods on how to learn new information and apply it to whatever you’re trying to do.

Chapter 6:
Simply seek knowledge in books for a book is worth decades of knowledge by the author.

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

Journey into Drawing Your Own Map (A Individual Apprenticeship Pattern)

On this Software Development Capstone journey part of my assignment is to choose 10 Individual Apprenticeship Patterns out of 35 patterns among Chapters 2-6 from the book Apprenticeship Patterns: Guidance for the Aspiring Software Craftsmanby Dave Hoover and Adewale Oshineye. For my second individual Apprenticeship pattern I have chosen “Draw Your Own Map”. I will first summarize the pattern and then I will state my reaction of this pattern.

Draw Your Own Map summarized

An employer might not have career path that fits you best. You should also, “Understand that it’s not up to your employer, your career counselor, or your professors to give you a hand up. Arriving at your next step and charting the course to ultimately arrive at your ideal destination is your responsibility.” It is important for you to draw you own path. That way you will be able to follow the path you want to be on and be in control of your own future. This pattern first suggest you to start out simple when drawing your map by first writing small achievable goals. These small step are important because they help you build your confidence and even allow you to be able to tweak your map. As you follow the map you have drawn up you should know that when needed it is okay to consistently modify your map to fit your mindset as you grow and change. The map you draw is for you and sometimes it might seem like your on the same path with everyone else around you or your on a lonely path either way it okay. As long as you are following your goal and remain motivated  in the long road it will lead you to great success.

My Reaction

This pattern guides you with the ability to draw up a map to your own goal. It also, reminds you that you are solely responsible for your own future and the path you take is ultimately up to you. I agree with this idea. I found that this idea is not just interesting but also useful and thought-provoking. This pattern has definitely changed the way I think about my profession and the way I think I will work because it has made me realize that I am in control of my destiny because as a software craftsman I will have a set of quality that will last me a life time.

Thank you for your time. This has been YessyMer in the World Of Computer Science, until next time.

From the blog cs@Worcester – YessyMer In the world of Computer Science by yesmercedes and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns and my Reactions

Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hoover and Adewale Oshineye, is an interesting read. The beginning really focuses in on the Craftsmanship of programming. Dictionary.com defines craftsmanship as, a person who practices or is highly skilled in a craft; artisan. Hoovers adapted definition for this word is where the main focus lies. It is still a craft, or art piece, where… Continue Reading →

From the blog CS@Worcester – Computing Finn by computingfinn and used with permission of the author. All other rights reserved by the author.

Be the Worst (week-2)

This pattern, “be the worst” to my understanding means, we should surround ourselves with people who are very clever or know more about the subject or field you are in.

From the readings under “be the worst ” which says “what do i do when my rate of learning has leveled off?” You have taken the time to learn something new, immersed yourself in the subject matter, practiced diligently for a period of time and look up and see that you are ahead of those around you. Now what? There are only so many books, blogs, and other resources you can learn from until you reach a point where you must learn new skills from other humans. We are social creatures, by nature. We rely on each other to survive and part of that survival involves learning from each other. It’s difficult to imagine a world where we all had to learn everything on our own and couldn’t benefit from the knowledge and insight of those around us. So for us be connected with the world we need to learn from others. And also the is a saying not everything that we know, we learn from each other and by that we grow. So the more we learn from other developers, there more we grow as a developer. We can look for people who know more than we do and learn from them. We can also be in a team were you a the least among them. Knowing you are the least, you tend to work harder to keep up with them and also you get to learn new skill from them too.

From the readings “weakest member of the team, you should be working harder than anyone else”. There are risks associated with this strategy. You will be the least effective developer or person around the team. This also means your contributions will not be sufficient whereby dragging the team down. Because of this situation, team members may not put up with you very long. So not putting all these risks into consideration, if you are really determined to learn, you will have to strive harder. In other sense, the only choice for you to stay in the team is to learn harder. That also means extra work for you.

Apart from all the risk involve, being the worst is a great way to improve your effectiveness in a given subject area quickly

Reading this pattern has made me know that in my own world i may feel i know everything till it get out of my world to see i really know everything or not. which knowing everything will never be the case. We all learn from each other. And knowing this idea, I will have to surround with people who are more challenging or better that me. Through that i get to learn new skill and better my self.

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

CS-448 Introduction

I am Joshua Farrar and I am taking CS-448 during the Spring 2019 semester at Worcester State University.

From the blog CS@Worcester – Joshua Farrar's Blog by jmfarrar1 and used with permission of the author. All other rights reserved by the author.

Journey into A Different Road (A Individual Apprenticeship Patterns)

On this Software Development Capstone journey part of my assignment is to choose 10 Individual Apprenticeship Patterns out of 35 patterns among Chapters 2-6 from the book Apprenticeship Patterns: Guidance for the Aspiring Software Craftsmanby Dave Hoover and Adewale Oshineye. For my first individual Apprenticeship pattern I have chosen A different road. I will first summarize the pattern and then I will state my reaction of this pattern.

A Different Road summarized

After using Draw Your Own Map pattern and creating the map which you been following. You come to realized that the map you drew has led you away from the long road or the road your on is no longer the one for you. Even if you decide to take a detour and do something different from software development your software craftsmanship will always benefit you no matter what. Also, if you do leave and then decide to come back you will be bringing back with you new set of skills that will be beneficial because it will be a fresh new set of eyes with a new prospective. Although sometimes when you take a break some software organization might make you jump over a few hoops and ask you over 21 question seeking justification from you for leaving for a while and then deciding to come back.  The key is to no worry because you are a software craftsmen and everything you have learned will always be with you. An action you should take whenever you no longer want to be a software developer or you’re wondering what would/should you do? This pattern suggestion for you is to list the kind of jobs you would like to do and then find people who matches your jobs list and who also loves their job. Once you found that person you are to “Ask them what they love about it and compare that to the things you love about software development.”

My Reaction

This pattern helps you not worry and be confident that the road although different is not entirely different. It also, reassure you that its okay to take a different road. I agree with this idea. I found that this idea is not just interesting but also useful and thought-provoking. This pattern has definitely changed the way I think about my profession and the way I think I will work because it has made me less worry and more confident in knowing that I should not be afraid to go on different roads because as a software craftsman I will have a set of quality that will last a life time.

Thank you for your time. This has been YessyMer in the World Of Computer Science, until next time.

 

 

 

 

 

 

From the blog cs@Worcester – YessyMer In the world of Computer Science by yesmercedes and used with permission of the author. All other rights reserved by the author.

Reflecting on “Apprenticeship Patterns” – Chapter 1, and Chapters 2-6 Introductions

Over the next several weeks, I will be posting my reflections on different sections from the book, “Apprenticeship Patterns,” by Adewale Oshineye and Dave Hoover. This book is a great resource for soon-to-be computer science graduates, like me, who are preparing to transition into the field of software development.

The first chapter explains what it means to be an apprentice in the context of a software development career, as well as the specifications that each step along the journey to becoming a software craftsman would entail. As I was reading this chapter, I enjoyed the imagery of a medieval setting that the authors created. This certainly helped me better understand the expectations of someone in each role, especially the apprentice. The descriptions of higher-level roles (the journeyman and the master) were also very well done, because they gave me a vivid picture of what I am aspiring to work my way up to.

The concept from the chapter that took me the longest to understand was that these tiers not only reflect my growth in position while in the software development field (like receiving more tasks from a boss or just having more responsibility in the workplace), but also the growth in mindset. I was initially confused because I was under the impression that the book would describe the type of work that I would be expected to complete as a new graduate and later. However, I feel that explanations of the attitudes and mindful habits that I should use are just as beneficial, if not more so, because each work environment isn’t the same!

With this new expectation of the book contents in mind, the introductions to the remaining chapters of the book made a lot more sense. Each of these brief sections made me more excited to learn more about how to solidify good apprentice practices.

While I intend on reading through the whole book, there is one chapter that I will need to spend more time going over. Chapter 3, titled “Walking the Long Road,” discusses how long our path to mastery really is. It also puts into perspective that all software developers travel on the same path, whether some are farther along than others. I tend to get easily discouraged when examining the work of others who have done more in the field. So, hopefully by spending more time on that chapter, I will become more focused on my own progress, rather than implicitly comparing myself to other developers.

There is also one chapter that I feel like I won’t have as much trouble working on. Chapter 5, titled “Perpetual Learning,” goes over the importance of keeping up with new knowledge in the field. This can be achieved by reading more on the subject or practicing skills, to name a couple of strategies. I love to learn new topics related to computer science; in fact, I have bought several online courses to go through when I have the time to get to them. So, I have some confidence that I will find the apprenticeship patterns described in that chapter easier to implement in my own life.

This book looks extremely informative and has been very well-written from what I’ve already read, so I’m excited to dive in further!

From the blog CS@Worcester – Hi, I'm Kat. by Kat Law and used with permission of the author. All other rights reserved by the author.