Apprenticeship Patterns

Wow, wow, wow. Apprenticeship Patterns what is a book? Software Craftmanship? to be an Apprentice? to Be a Journeyman? to Be a Master?  Apprenticeship? an Apprenticeship Pattern? Where do Patterns Come From? all in this chapter create a simple mechanism for the development and basic understanding about how to be a good craftmanship and eventually become a good programmer.

Dave’s story resonated with my past. I have struggled in the past a lot when I first tried to learn to program. I am quoting Dave here in this paragraph when he said this as I am paraphrasing his word “Perl was my first programming language, but only after two failed attempts at learning how to program. After seeing the movie Tron and being inspired by the idea of an entire world existing inside my computer, I attempted to teach myself BASIC on my Apple IIe when I was 12 years old. I acquired an Apple-published BASIC manual, but I couldn’t figure out how to use it in a fascinating way. I soon gave up when I realized I wouldn’t be able to make anything other than text-based games.”

what I found the most interesting in this reading is the way they have separated all the concepts about craftsmanship. Everything seems to build around it. After reading through the rest of the chapters, I found there is a lot of great information that is available and relevant today. In Chapter2 through 6 there are talking about it.

Emptying the Cup Your First Language, Confront Your IgnoranceThe Deep End, Retreat into Competence, Wrapping Up, Walking the Long Road, Accurate Self-Assessment, Perpetual Learning, Construct Your Curriculum.

Walking the Long RoadThe Long Road, Craft over Art, Sustainable Motivations, Nurture Your Passion, Draw Your Own Map, Use Your Title, stay in the Trenches, A Different Road, Wrapping Up.

Accurate Self-Assessment, Be the Worst, Find Mentors, Kindred Spirits, Rubbing Elbows, Sweep the Floor, Wrapping Up

Perpetual LearningExpand Your Bandwidth, Practice, Practice, Practice, Breakable Toys, Use the Source, Reflect as You Work, Record What You Learn, Share What You Learn, Create Feedback Loops, Learn How You Fail, Wrapping Up

Construct Your CurriculumReading List

Read Constantly, Study the Classics, Dig Deeper, Familiar Tools, Wrapping Up

After reading through this book, I wonder how we should approach the idea of craftsmanship and the basic principles that need to be allowed.

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

Apprenticeship Patterns Chapter 1 and introduction of 2-6 chapters

Chapter 1 apprenticeship pattern was an interesting chapter to read. I really liked Dave’s story because it felt similar to mine, especially when he said “I ended up truly feeling like a dummy, and gave up because everything seemed so difficult”. Also, I really liked the definition of what it means to be an apprentice by Marten Gustafson, he said that it means having the attitude that there is always a better/smarter/faster way to do what I just did and what I am currently doing. As everything is evolving in our world, if we look at 2000 and now, the difference is huge, and the same thing people did in 2000 it’s done better and smarter way. Apprenticeship is the state or process of evolving. Apprenticeship pattern means to offer a guidance to someone who is currently working with the crafts model on the ways in which they can improve the progress of their career. Overall in chapter 1, I really liked the way the author put the other people’s thoughts on what it means to be an apprentice, the definition, and the apprenticeship pattern.

On to the other chapters’ introduction, chapter 2’s introduction was an odd reading because I was clueless about what was happening and what was coming in next but the meaning behind the emptying your cup was really deep and meaningful which was to get rid of your price and bad habits to open yourself to more experienced colleagues. I learned 1 thing from chapter 3’s introduction, and it is that there will always be someone better than you, and there is no limit to the knowledge we can acquire. Chapter 4 introduction is nothing new because I think everyone knows that the goal is to be better than yesterday’s you. Chapter 5, I really liked the information provided at the end of the introduction. Reflect as I work, which leans to recording and sharing, then I need to learn how I failed. Chapter 6 introduction is all about constructing my own curriculum and which I think is one of the most important thing if we want to make progress in our career.

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

Apprenticeship patterns chap 1 and chap 2-6 introductions.

Apprenticeship is the beginning of our long road journey as a software craftsman. We discover more about ourselves and use it to become better at with we learn and at what we do.  Chapter two has a great way of explaining what we, simply as humans, find difficult to do in our daily lives: “Be open minded” to new rules, new experiences, new patterns, and new ways of thinking. We are born in a society where history is written, spend our lives living the same way our ancestors lived, and following the same patterns. And that applies to knowledge as well. Putting aside what we know or have known to be the way and embrace something new and different is a huge challenge. However, it is important for our self-development and of others around us.

Chapter three reminds me of how often I want to take the “short road” thinking it would be easier and faster, only to realize that the long road is not always pleasant, but it is as Dave described it: discouraging or inspiring. Thinking that we must complete 120 credits, pick a concentration, meet specifications for four years minimum to obtain a piece of paper that you might end up not even using because you are not even sure if that is the career you want? Or being inspired during those four years by how hard work pays off and the reward and satisfaction of long nights working on projects or crying with classmates after failing a test only to rejoice later after you made it till the end is unmatchable.

Practicing self-assessment is very crucial. I believe in order to self-assess ourselves, we need to know ourselves, our strengths and weaknesses, our goals and where we stand on the “long road”. Once we know where we come from, we will know where we are going. Having others around us should not arise competition with them, but instead inspire us and motivate us to check ourselves and be the better version of ourselves everyday along the road. “Repetition is the mother of learning, the father of action, which makes it the architect of accomplishment” – Zig Ziglar. We are never done learning; we learn until the very last moment of our lives. This chapter teaches us the power of learning – not only for ourselves but as well for others. Perpetual learning shows us that we should always be willing to learn, put aside what we know and learn some more. That is how we do better. Each chapter of this book brings us to the deeper discovery of ourselves and on a journey that helps us find out that we are all on the same road.

From the blog CS@Worcester – Software Intellect by rkitenge91 and used with permission of the author. All other rights reserved by the author.

Craftsmanship Log #0 – Apprentiship Patterns Ch. 1, Ch. 2-6 Introductions

            In the earlier years of my studying Software Development, there have been times during which I began to question myself regarding how I tend to approach the process of learning and software development. During such times, my approach to learning software development was essentially the same as my approach to learning Mathematics; when presented with a problem, understand what needs to be addressed and utilize the tools that may help in creating a solution. While at first this may seem fine by freshman student standards, there is a slight danger of complacency if such approach persists when I transition from being a student that codes for a grade to being a professional developer whose career is defined by coding.

            As I am reading through Hoover and Oshineye’s book called “Apprentiship Patterns”, I am oftentimes taken aback by certain points and approaches to learning that the authors bring up as such points clashed with my own idea of what it means to develop software, notably in chapter 3. Personally, though I was interested in the scientific approach to software development, I always believed that there was some artistic merit to programming. Such belief is, in a way, contested in the reading as a pattern which emphasizes the importance of understanding and working towards making something usefulrather than focusing on delivering art. Granted, my original belief stemmed from my own definition of “art” in the sciences, such pattern actually made me reconsider my current approach to problem solving through developing software. Though I am still, by no means, “just a software developer”, I still need to embrace the fact that I am learning to create things that function.

            One point that has been brought up around chapter 5, which point I find myself in agreement, is that learning never truly ends, not for software development. However, things may not always stick, and it is easy to forget certain techniques and conventions and what have you. It is important to write down and archive, as well as practice many times, what you learn because it is possible that this knowledge will be important in the future, regardless of what one’s pride may say. Such approach to learning is not exclusive to the field of Computer Science. In fact, I can speak from experience that writing down and practicing on points that I know I am weak at has been a better learning experience overall than simply reading and memorizing any new knowledge that will inevitably be long forgotten.

            Though I have found myself often agreeing with several other points that have been brought up across the chapters, there have been many points where I had to face certain convictions that I have and consider which may or may not be detrimental to my learning. Though it is never too late to reconsider my approaches, it would be a good thing to get a head start in changing some of my ways.

From the blog CS@Worcester – CompSci Log by sohoda and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Chapter 1 and Chapter 2-6 Introductions

As I progressed in Computer Science, there was a lot of pressure when it came to thinking computationally. Many of the tests we have faced included problems where you would have to be correct on all aspects or you are simply wrong. There is no close answer only an exact. Which is very fair to a degree. Obviously if there is a mistake in the math, a mistake in the code, or some kind of error, the entire system can fail. When thinking in this way, it can feel very intimidating when beginning your work with a team of Software Developers. You don’t want to be the one who messes something up for everyone else.

That is where the 1st Chapter comes in handy. You will learn quick that this is not the case when working in a team with this format of Apprentice, Journeyman, and Master. You should have no fear whatsoever when it comes to potentially messing the project up for the entire group. I really do hope my classmates catch this part. This format encourages mistakes, encourages risk, and encourages you to give it your best shot no matter what. This will be beneficial for every single programmer involved. What will be detrimental is if someone is tied to this fear. If they are afraid to even attempt anything, it will be negligent for everyone.

The more I read, I really do become passionate about this idea of not being afraid. If you are completely so far off, there is nothing to be ashamed of. The team will take notice, and they will help you get to speed. It’s important to help those behind to get up to speed. But that is not even the main point. Being incorrect will help those who are correct or those who are close to being correct. It is extremely advantageous to see a different perspective on a problem. Even if that perspective is incorrect, it most certainly can lead to good ideas.

 Which leads me to the next topic I found very informative and thought-provoking. Ch. 5 “Share What you Learn”. Sharing what you learn will help you go from apprentice to journeyman sure. You are teaching your teammates new things. But, what really takes me away here is how sharing what you learn and trying to teach it to someone else will only cement your findings deeper for yourself. Bridging the gap between your knowledge and someone else’s understanding is not always easy. It may take some time. That being said, this extra use of your knowledge will only make you stronger with the concepts. I see a large importance in this, especially when it comes to our future in this class.

From the blog CS@Worcester – Andrew Sychtysz Software Developer by Andrew Sychtysz and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns: Chapter 1 and Introductions from Chapter 2-6

Generally, I haven’t learned much more than I already know from the first chapter and the introductions from the next five. Not to say that I didn’t learn from them but rather the concepts they covered kind of seem like common sense in terms of how to approach learning and getting better at your trade.

I did enjoy the parable about the master and the apprentice in chapter two, although the ending I found a bit lacking. While yes, the point stands around learning to keep your mind open and not let your previous experiences hinder your learning, I find that the foundation of what I have learned is what I use to stand on in order to walk into a new subject. The focus of the parable being that at every introduction to a new line of thinking from the master, the philosopher projects what he knows rather than waiting to see if there is something more to gain, thus his cup being already full. While I get the meaning of the story, I feel like it’s ignoring the side of the philosopher even though he is at all turns preventing himself from learning more.

I did enjoy a quote from George Leonard in the introduction to The Long Road. It does make quite a bit of sense that regardless of mastering something there is always more to learn, and that your journey is never over.

Chapter six did in a sense reaffirm the need to create my own pathway to learn. I’ve tried before hoping that I can kind of just find my way around the internet to learn programming and developing software, but I always meander about and never really develop anything really concrete. Unlinked lessons that show you how to begin rather than how to fulfill that journey are abundant online and most times are the first results of any search. Some reading material I have enjoyed, but most books seem incapable of passing on actual experience from the concepts they describe. Kind of like learning algebra in school only to ask yourself at the end of the day what can I even use this for and not being able to come up with an answer.

I think this book focuses on an essential process of really learning anything. To approach each subject with a clear mind and not boxing it into the same category as “something you already know”. To remember that there is always more to learn even if you end of being the “big fish in the pond”. That just learning alone isn’t enough, sharing and learning from others is paramount and the idea behind the concept of being an apprentice. I kind of feel like this book shouldn’t even mention the idea of becoming a master when it focuses so much on continuously learning. I’ll probably get a clearer picture on the intended lessons to learn when I read more from the book.

From the blog CS@Worcester – A Boolean Not An Or by Julion DeVincentis and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Chapter 1 and Chapter 2-6 Introductions

Reading chapter one of Apprenticeship patterns was an interesting experience as the authors give an interesting history lesson on the overall origins and initial hierarchy of master craftsman all the way down to the apprentices. It was really interesting to see the authors apply software development to this idea of masters and apprentices, and especially the idea that one of the best ways for a newbie programmer to perfect their craft is to place themselves in the roll of an apprentice. Ive always been told to surround yourself with smarter people if you want to improve, and this book seems to agree on that front. I found the list of values included in the introduction to chapter one to be a useful summary and overview of the basic principals that make someone a good apprentice, and in turn will allow them to greatly improve in the art of software development and apply these improvements in their careers.

The introduction to chapter two, emptying the cup introduced me to an idea I wasn’t too familiar with. I never really considered that even though I may be coming into this field as a newbie, that I may still have developed bad habits that I will need to break. As I learn more and progress I will need to learn how to “empty my cup” and clear my mind of existing bad habits and replace them with better, more productive habits. Chapter 3 introduces the idea that there is always much more to learn. Even if you have plenty of certificates or degrees, there will always be someone who knows more. I’m in a stage in my education and career where it often dawns on me how little I know. Often times I feel like everyone is better than me and that I may have picked the wrong career path, even though I enjoy what I do. But I have slowly learned to overcome this feeling. Similarly chapter four emphasizes this even more by stating that its easy to be slightly better than everyone else, but becoming complacent in this position is counterproductive if you ever truly want to be great at your craft. I definitely resonate with this idea, and I know that I have been guilty of becoming complacent in the past. Ego is a strong emotion, and I know I need to be able to understand that I always have more to learn. Finally chapters five and six both seem to cover a similar idea, and frankly it ties back to all of the previous chapters as well. The idea that you are always in a state of learning. While right now I may be in school and my curriculum is laid out for me, that wont always be the case. Reading these introductions gave me a heads up that if I truly want to be considered great at software development someday, I will need to continuously learn and improve myself.

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

Reaction to Apprenticeship Patterns

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

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

Apprenticeship patterns- blog 1

After reading chapter 1 of the book Apprenticeship Patterns, I was impressed by many new definitions that I had never heard before. Those things opened my mind to think about what I should do to be able to achieve my dreams. After two years of studying computer science, I knew that I wanted to be a software developer, but I really did not know where to start and how to succeed in this field. Thank god, this book gave me suggestions about those questions.

As I understand from the reading, there are three stages to becoming a software craftsman, namely apprentice, journeyman and master. The later the stage, the greater the responsibility. Being clear about the three stages keeps me aware of where I am on my journey. Of course, I am in the first stage, but now I know what I should do to get ready for the next phase. Instead of studying aimlessly like before, I should focus on myself to invest my knowledge fully and build myself into a better version, who have appropriate behaviors for every situation. In addition, the book also recommends 10 values ​​of software craftsmanship to help craftsmen improve themselves every day. In my opinion, they are very enjoyable to read. In particular, the first value, “effort is what makes you smart or talented” (Mindset, p. 16), is the same as what my mom taught me when I was a kid. I used that value as a mantra to motivate myself whenever I failed at something or I felt like I was not good enough. I believe that effort is one of the most important factors in making my dreams come true. The sixth value in chapter 1, called the locus of internal control, is also something I strongly agree with. Your destiny is in your hands, no one else is responsible for it. Instead of waiting for someone else to help, try to do things yourself first. If we fail, we learn from our experience, we have nothing to lose.

Moreover, the book also suggests to readers 5 patterns that an apprentice or a software craftsman should have. I really love all five patterns, but to choose the ones that work best for me, I think they are “Emptying the Cup” and “Construct Your Curriculum”. I like to learn knowledge and experience from others, I believe everyone has at least one thing that you really want to learn, even other people’s mistakes can be a lesson for you. So, I hope the “Emptying the Cup” pattern could help me be always ready to learn new things every day. On the other hand, I think the willingness to learn new things is good, but if we do not have the appropriate learning ways to accumulate knowledge, emptying the cup seems like useless. So, I think “Construct Your Curriculum” is also an important pattern that I want to  learn.

From the blog CS@Worcester – T's CSblog by tyahhhh and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Chapter 1 and Chapter 2-6 Introductions 

For this post, I was assigned to read Chapter 1 of Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hoover and Adewale Oshineye, and the introduction portions of Chapters 2-6. I thought the portions I read were an interesting read and nothing like I’ve read before. It was an interesting take on the journey of programming and below are my first impressions of every chapter.

Chapter 1:

  • Interesting subject matter, introduces the concept of apprenticeship and the background behind the word apprenticeship and what it means
  • Wonder why they decided to make the idea of improving your skill as a programmer compared to medieval apprenticeship but it makes sense. You go from apprentice to journeyman to master which is kind of like beginner to proficient to expert (even though I’d argue expert is very hard to get to).
  • Apprenticeship is supposed to be a way of honing your craft of programming/coding and to become a software craftsman.
  • Focus on yourself and your need to grow as an apprentice to a journeyman seems to be the general goal of apprenticeship.
  • The quote from Pete McBreen stuck with me, I feel like beginner developers aren’t trained well and are taken for granted, that’s why there is a scarcity of good developers.

Chapter 2: Emptying The Cup

  • Good intro that had me hooked as I reading it because I had no clue what was happening
  • At the end I finally got what the story was about basically, I have to put aside my ego and learn to accept failure, which is hard for me admittedly since I have too much pride.

Chapter 3: Walking The Long Road

  • This intro could be described as the journey to master, the company gave the image that Dave was very qualified in his field but then he met hackers that knew more than him and that motivated him to learn more.
  • It’s a good reminder that we are all constantly learning and ‘walk the same road.’

Chapter 4: Accurate Self Assessment

  • The intro has the same message as chapter 3,I agree with the message though, to not be complacent with your programming skills and to always try to learn something new and become better than you were yesterday.

Chapter 5: Perpetual Learning

  • The intro is reinforcing the same idea again of staying on that ‘long road.’ also, a lot of these patterns are ways to break bad habits which are good considering I have too many bad habits when it comes to programming and learning.

Chapter 6: Construct Your Curriculum

  • The last intro tells me to make my own curriculum which I think is hard for me personally since I’m usually reliant on someone to guide me.
  • Also, mentions that books may hold some knowledge that can’t be found on the internet but man it is hard for me to sit down and read a book but I’m sure one of the patterns is to break that habit of not being able to sit down and read a book.

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