Apprenticeship Patterns Chapter 1 and Chapter 2-6 Introductions

The introduction of the book set the tone for the rest of the reading, everything that was being said came from a place of experience. The listed values to define software craftsmanship were really insightful, some of which can be applied to other aspects of life as well. I found Dave’s story encouraging because it hit a bit close to home. I sometimes feel like I am at a spot where I can’t fully apply my knowledge. It is inspiring to read about his journey as a software developer and how he put his mind towards the things he wanted. I commend him for being able to read through books on topics that he wanted to learn more about. Personally, I find myself absorbing information better when I am working alongside someone that is proficient in the topic, which is something that Dave brings up. Other than that, the chapter does a good job of introducing the topic of apprenticeship and it guides readers away from the clichéd image of a blacksmith and their apprentice.

The introduction to chapter 2 was a fun read and the lesson of “emptying your cup” is something that I will remember. In order to be successful in the field, I should keep in mind that there is a lot of room to grow. One of the main ideas of apprenticeship is allowing yourself to take in the knowledge of experienced colleagues. Even in general, opening yourself up to other ways of doing things can prove beneficial and it allows you to grow.

The introduction of chapter 6 somewhat ties in with my take on Dave’s story. What I gathered from it was that I would eventually have to push myself to learn and gain experience. One way of doing so is reading books written by experienced practitioners as opposed to blogs on the internet. I am guilty of not utilizing the plethora of free resources available to me. But at the same time, a textbook worth of information is a bit overwhelming. That being said, I can’t argue with the fact that at the end of the day, the only person that can motivate you, is you. Nobody is going to force you to read and learn, but it is only beneficial to read what experts in the field have to share.

From the blog CS@Worcester – Null Pointer by vrotimmy and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Relfection

The author aligns software development with a craft rather than strictly a science. A craft is an art or skill where tools, methods, and knowledge are required to be an expert. He gives various examples that show how craftsmanship is needed to create well-designed software, and I agree with this point of view. I believe software development should be approached as more of a craft, especially when it comes to how programming is learned through apprenticeship.

Rather than traditional school-based education, programmers would learn from experienced people. Not from books and assignments where one’s ability is determined from the accumulation of grades.

There should not be the target for an education system that creates a class of ‘programmers’ who know general knowledge about computer science and the basics of programming, but an environment that helps each student master their software development craft. We shouldn’t focus only on code but should focus on improving how we approach programming.

An area where I see this approach put to practice is in coding boot camps. These are usually fast-paced programming courses that last less than one year. The classes are taught by individuals who have deep knowledge of the field and years of experience as professional programmers. Instructors have worked in corporations directly with the tools and technologies they teach their students. It is also an environment where learning programming is more hands-on. Creating projects is the center point of a coding bootcamp. The curriculum is much more comprehensive on practical knowledge than what is taught in the traditional college environment; relating to what students will be working on in a future job. I find less use in the existing 4-year college degree model of education. I am not the only one, as the rates of college enrollment are dropping year after year. Ultimately, a college degree acts as a form of accreditation, but the value of a degree is losing value with time.

To me, the most relevant chapter was 4, “Accurate Self-Assessment.” It is common to learn just enough to accomplish what is needed to be done and not extend your knowledge any further. Learning something new takes effort, and it is much easier to remain complacent with the technologies we already understand. The author also suggests comparing yourself to whom you were yesterday and avoiding comparisons to someone else. The benefit of this methodology is you identify your growth over time. And once you realize the distance between who you were yesterday and who you are today, changes can be made to reach levels of improvement of where you want to be.

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

Apprenticeship Patterns Chap 1, 2-6 Intro

There were a lot of memorable parts in the sections of the book. I really liked Dave’s story about him slowly finding his thirst for learning. I especially liked part where the book described his pile of certifications and accomplishments slowly fading over time and slowly gets replaced by new books and tutorials. I liked that bit of imagery. However, the story that stuck with me the most was Dave’s story in Chapter 1. I think that story was the most relatable to me because I can understand how he felt when he talked about learning Java and wanted to give up because everything seemed difficult. I started programming in high school and the first language I picked up was C++. At the time, I found it very difficult, and I felt like I wasn’t very good at programming and there were a lot of times when I wanted to give up while I was in the class. It got to the point where I did not even consider picking up another programming language until I got to college. I can also relate to his feelings of not having built anything meaningful with his programming because that is how I feel sometimes about my programming. I think what I like best about this story is the fact it is about a person who was not all that great at programming but kept at it until he got better (even though it was at different points in his life). I find this aspect of the story to be endearing.

I think the reading has changed my opinion about the field of software development a lot because usually when I ask some of my other classmates in the field, a lot of them reply that it was something that they wanted to get into, or they are in the field because it is a lucrative field. The fact the reading tells us to stop and think about how to better our skills rather than how to advance our career really surprised me. It was not what I was expecting heading into the reading. Overall, I really enjoyed this week’s reading and I look forward to reading the rest.

From the blog CS@Worcester – Just a Guy Passing By by Eric Nguyen and used with permission of the author. All other rights reserved by the author.

Chapter 1, 2-6 Introductions

After reading the first chapter and the introductions of the next few chapters, I really liked how the book went into focusing on the idea of apprenticeship with computer science and tying the concept back to other forms of apprenticeship to get the idea of what the purpose of the book is. The two main sections I wanted to focus on were the first chapter and the second chapter’s introduction, because not only were they interesting to read about, but they also did a good job at setting up what to expect for the rest of the book.

The first chapter was the introduction to the whole book and talked a lot about apprenticeship and how other models of it can show us what we are looking to accomplish. For example, they draw parallels to Medical Europe with how guilds operated with masters and journeymen, and fitting in the apprentice stage that we are currently working as with those two as later stages of craftsmanship. The other part of the first chapter that I really liked was going over the many values of software craftsmanship, and there I realized as I was reading just how much more there was to this concept that I originally thought prior to reading.

The other section I wanted to talk about was the second chapter’s introduction because I thought it was a really effective way of following up the first chapter and used to set up the rest of the chapters. While the other chapters start going more into the steps of apprenticeship, this one was a great way to start that journey with the story told about the cup of tea and how it relates to readers. The lesson of the story and the goal of this chapter was to show how we should go into this book by being open to different ideas and concepts and not being stuck on what we previously learned. The quote at the end of the story, “if you come to me with a cup that is already full, how can you expect me to give you something to drink?”, really fits with the book and as an overall good lesson to learn. The first big step in apprenticeship is keeping an open mind, and I think it was important to learn that before going into the later chapters and seeing what more we will be learning and practicing with.

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

Apprenticeship Patterns Chapter 1-6 introductions

The authors use the introduction of this book to instill the passion of programming into the reader. From my reading, I believe the authors convey that as an active participant in the field, one should carry themselves with a sense of pride for their work, to become immersed with it, and constantly blooming over the span of their career.

One particular part in the introduction peaked my interest by sharing how Agile development changed the way the authors think about software development. When developers come across a situation that isn’t “covered by the rules, they’re lost”. There have been many cases in my own journey of becoming a software developer where I have been lost because a solution I was told would work didn’t (Ok, maybe because I was a novice and didn’t implement the solution properly was the reason the solution didn’t work). Solutions do not come in a one size fits all category, and that’s no different in the realm of computing. But as the authors continue to explain, they mention that if developers hold values that undermine the rules that have been set forth, they can create new rules that apply to any situation they find themselves in. For me, these words gave me the permission I’ve been seeking for to be as creative as I desire in this field.

In the “What Does It Mean To Be An Apprentice” section, so many gems resonated with me that this is my favorite part of the entire introduction. The beginning phases of the journey to becoming anything you want to be good at, requires that you take a good look inward and figure out exactly what works for you and how you learn. Allowing you to focus on yourself and your needs to grow is crucial in how well your journey goes.

While these were my main takeaways from the entire first chapter, the introductions to the other patterns I should begin practicing all also seemed to me like things I’ve already thought about doing (I just needed to be reassured to do them).

The second chapter encourages you to forget what you know when learning something new. While, I understand the intent here, I feel it can be more helpful to make connections with how aspects of a new programming language is similar to what you already know.

The fourth chapter seems like it is going to be a stark reminder to be humble in your journey as a software craftsman. While it is good to be proud of your accomplishments along the way, you should not become too full of yourself that your growth becomes stunted because you feel you have reached your peak.

Never. Stop. Learning. These are the words that rang throughout my head as I read the fifth chapter’s introduction. No matter what you’ll be doing as a software craftsman the field will always be moving forward. You do not know everything and you never will, but you can always try.

From the blog CS@Worcester – You have reached the upper bound by cloudtech360 and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Chapter 1 and Chapter 2-6 Introductions

            From reading chapter one and the introductions of the rest of the chapters, I get a true sense of what it takes to become a craftsman in the world of software engineering. Getting better at this craft is all about one’s mentality and how they deal with being able to learn and having a growth mentality. We need to always be adapting and changing, and if we come in with our cup half full then there’s always room to grow. After graduating we are looking to become apprentices and learn what we can from those around us who have been coding for years. Once we have taken all we can at some point is when we can then change jobs or get promoted to learn more. The journeyman part is really where I believe that a lot of us will be for most of our lives. We’ll always be trying to grow in new and different technologies as software engineers. We want to be able to take what we’ve learned from one place to another to be able to compare what works and what doesn’t as well as just learning as much as we can. Here we want to begin building a bigger portfolio that is diverse and pushes us to someday to become masters at our craft. What is also important to know is that we will never know everything about certain languages and coding; there will always be something to learn and most likely someone to learn from. We should never be satisfied about where we stand as software engineers, for example, we have strictly been using java in class and may have gotten good with is, but it doesn’t mean that we should just stick with it because we’re good at it. We should branch out and try learning new things or even try exceling in more advanced java that you haven’t even thought about learning. There is always room to grow, and it is up to us to take the time and put in effort to learn. There are plenty of books such as this one for us to grow as software engineers, from books to blogs, to other online sources, information is at the touch of our fingertips, and it is up to us to better ourselves at our craft.

From the blog CS@Worcester – Life as a CS Student by Dylan Nguyen and used with permission of the author. All other rights reserved by the author.

Software as a Craft

Over the next few months, I’m going to be taking a look at the book “Apprenticeship Patterns” by Dave Hoover and Adewale Oshineye. Here are my initial thoughts based on skimming through it a little.

I found the authors’ idea of applying the “medieval craft model” to software interesting. It seems on the surface like there is no common ground there, but writing software is as much a craft as a science. I don’t think this is due to some kind of correlation between programming and something like blacksmithing; rather I think it’s because the way of thinking this book is trying to outline has more to do with simply learning and working in general rather than specific technical details. I also like the attitude the authors take towards the individual – everyone has something to contribute, but to contribute something the most important thing for you to focus on is yourself.

I found the idea of a “growth mindset” as it was laid out in the book useful. To the authors, effort is is the key to success while failure is merely an incentive to try something different. I already more or less believed this, but I like the way it was articulated here. Other ideas I found useful from the first chapter were choosing to be pragmatic over dogmatic, adapting to feedback from one’s environment, and a focus on skills over process, as processes and tools will not necessarily make you or your work better.

One idea that stood out to me was the idea that it’s better to share what we know rather than hoard knowledge to ourselves. While it seems pretty straightforward on the surface, it’s counter-intuitive to the way I’ve slowly become accustomed to thinking, personally. It’s easy to feel like the only value I really add is various bits of arcane knowledge I’ve picked up over the years, and it’s tempting to not let them go so easily.

I haven’t really come up with any major disagreements with the book or things I want to change about how I work yet, but I suspect this may change as I keep reading. Most of the chapters feel relevant to me. In particular, chapter six, which is about constructing a curriculum for yourself, and five, which is about staying motivated to learn and grow in the absence of ideal conditions (which I think is very good general life advice as well).

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

Introduction to Apprenticeship Patterns

Christian Shadis

As a young developer soon graduating from University, it is essential to remain dissatisfied with the skills and knowledge I have already acquired. Dave Hoover and Adewale Oshineye explore this process in Apprenticeship Patterns, guiding those relatively new to the field to become a ‘master’ of their craft.

In the introduction to the book and each subsequent chapter’s introduction, the authors discuss several major themes such as continuous learning, humility, and dedication. Independent study has been the largest component of my development education so far, and upon completion of my degree I fully intend to continue teaching myself new languages and technologies. Practicing humility is essential to keep an open mind to the vast amount of information that I have yet to discover. No matter how many years I spend as a software craftsman, there will always be an overwhelming, ever-growing amount of information to learn. Remaining dedicated to learning this new information regardless of my experience level will be vital to continue to grow as a craftsman.

Hoover and Oshineye particularly grabbed my attention when they discussed their definition of ‘Software Craftsmanship’ and ‘Software Apprenticeship’. They are careful not to refer to programmers as “developers” or “engineers” in favor of a more inclusive term that illustrates the blurred edges between the disciplines. I found this distinction both surprising and refreshing; I had found myself concerned about the prospect of finding a job as an engineer given my development degree, but the choice of terminology used in the book implies that any programmer can venture into development or engineering regardless of background if they are willing to work to learn the technologies or techniques needed.

Chapters I am most interested in exploring are Emptying the Cup and Walking the Long Road. I expect to obtain valuable insight from these chapters specifically because of my perfectionistic tendencies and my impatience when it comes to learning new things. Setting aside what I already know in favor of learning new technologies and embracing my ignorance rather than expecting instant success (another main theme in the book) will ensure I never stop learning.

As a young developer wholly unsure of his place in the software world, I will use the strategies provided in this book to make myself a better learner, teammate, and craftsman to prepare for my imminent career in software.

Hoover, D. H., & Oshineye, A. (2010). Apprenticeship patterns: Guidance for the aspiring software craftsman. O’Reilly.

From the blog CS@Worcester – Christian Shadis' Blog by ctshadis and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Chapter 1 and Chapter 2-6 Introductions

Throughout the first chapter and the introductions of chapters two through six, there are many things that I found interesting and thought provoking. The introduction of chapter five for instance discusses the necessity of continuous learning and to never be content. This, combined with the introduction of chapter three has given me perspective on the future of my career and what I need to do to better myself and expand my knowledge and skills.

While all chapters were, in one way or another, relevant to me, chapter one was the most relevant. Chapter one provided a general overview of the journey of someone in my position; from apprenticeship to journeyman to master. It describes what it means to be an apprentice, a journeyman, and a master. By doing so, it relates to me still being an apprentice, referencing its definition here as “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 sentence describes my position.

Chapter three (along with chapter one) helped change my opinion on what it means to be a “master”. My naive programming language is C++, and I’ve practiced it for years more than any other programming language that I know. I feel comfortable in my abilities to program and design in the language, and if I don’t know something about it that I need for a job, I feel as though I could learn pretty quickly. The introduction to chapter three gave the perspective of someone who had a “master” certification in Perl and in others, however he met people who had expertise far greater than he had, and are even still learning. The most enlightening statement in the introduction to chapter three is in the last paragraph. The more I learn, the more I realize how much more there is to learn. This is inspiring to me, since the field is so open and therefore always interesting.

I don’t recall disagreeing with any part of the reading. This may be due to the fact that I’m still an apprentice, i.e. learning about the field, hence I don’t have much context to compare to the reading.

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

Introduction to Apprenticeship Patterns

When I read Chapter 1 of Apprenticeship Patterns I found myself wishing that I had read it Sophmore year instead of senior year. Not that I don’t appreciate having that perspective now, but as this book is geared towards novice software craftsmen, I feel the earlier I had read it the more impactful it would’ve been. The introduction section called “Dave’s Story,” covers his journey from learning his first language to far later in his career, and I feel like I would’ve appreciated this as I was first beginning my study of computer science. However, I think that the content that they talk about is really geared towards people of any level, and I think that it is still useful, as in the grand scheme of things this really is still the beginning.

I found this method of viewing your software development career as a journey and the comparison to a medieval apprenticeship to be quite interesting. The idea of having many different mentors and looking to those who have been in the field for a long time for knowledge and experience is quite poignant. As a relatively recent innovation in the history of human society, the study of computers has come such a long way, and many pioneers of the industry are still alive today, allowing us the opportunity to learn from true masters of the craft in order to become masters ourselves. In this line of thinking, the idea posited in the book about constantly learning and picking up new techniques resonates with me a lot. In school, we have been assigned things and had projects and workspaces made for us, but in order to really become craftsmen, we need to learn to do that for ourselves. Specifically, in the introduction to chapter 6, there is a heavy focus on “Creating Your Own Curriculum”, and I think that will be a vital skill moving forward.

Just these introductory pages, without even delving into the actual patterns themselves have given me a much better perspective on how to move forward and reinvigorated my will to learn more and work harder on developing my craft. I think that given this, Chapters 5 and 6 seem to me to be the most relevant to me and what I want to do going forward. I also really appreciate the focus of the introductions on enforcing the idea that it is okay to sink or swim, at the beginning of your career more than ever.

Overall, I think diving further into these chapters and the patterns within will give me a little more guidance on where to focus my energy moving forward, and how to do so productively.

One side note, not a disagreement with the text, but I do think it is a little odd why there is so much zen-Buddhist comparison in computer science literature, I’m not sure how to feel about it, but just something curious I thought I’d note.

From the blog CS@Worcester – Kurt Maiser's Coding Blog by kmaiser and used with permission of the author. All other rights reserved by the author.