Monthly Archives: February 2021

Apprenticeship Patterns

We are at the point of life that in a few years we all be fully working adults. It is crazy to think that 4 years of college just flew by so fast. This semester the software capstone class will be the most interesting and challenging I believe. When it comes to reading a book, I have no patience at all, but after reading the introduction, something about this book: Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman is making me want to read it appropriately. It is possible to be that I can relate to this book on so many levels and it is relevant to me. After just reading the introduction I feel like it changed the way I think and view my profession.

All the patterns in the book are interesting and powerful in a way that we can adapt and combine these patterns in many ways and situations. One of the patterns that stood out to me the most was “Be the worst” from chapter four. The author has explained the concept very well in which it states that “Surround yourself with developers who are better than you. Find a stronger team where you are the weakest member and have room to grow” This statement Is very interesting and when I think deep into it, I believe that being worst in a team at least for me is a motivation to work hard and grow to improve. The goal is not to stay the weakest but instead work my way from the bottom to the top.

The author also talked about the risk factor that associates with being worst in the team including dragging the team down, good teams do not tolerate you, and the risk of being fired. Although I do agree that in situations all these scenarios could be possible but on the positive side this can motivate a person to improve and build a mindset that helps the individual. I do not think I disagree with any aspects of the pattern but, these patterns and the whole book have certainly changed the way I think about a certain aspect of software development. I realized that I need to work even harder and push myself to the limits for me to get where I want in life.

 

 

 

From the blog Derin's CS Journey by and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Chapter 1 and 2-6 Introductions

The introduction to the Apprenticeship Patterns book really opened my eyes to the reality of software development, and how it is a constant learning process. In the beginning of my journey of computer science and programming, I have always felt that I have no clue what I’m doing and there is so much that people already know. I just started and wondered how is everyone already so ahead. It feels like I will never be able to catch up and there is just so much to learn. However, over the years I have realized that more often than not, most of us are in the same boat. We look at people around us and think that everyone else except me has everything figured out, but this is not the case. Everyone has their own different skillset level and has different things to learn on and improve. The main message the chapter had me reflecting on was that we should compare ourselves with our version from yesterday and how we can improve from that. It is with this growth mindset and getting things done we can improve our skills, while also enjoying the journey.

I think the chapters that were highly relevant to me was chapter 3, walking the long road, and chapter 6 which was construct your curriculum. Chapter 3 talked about how Dave in his earlier career had piled up various certificates to show he was able to do the work, but while interacting with more advanced developers, realized there was a farther road to go. What stood with me the most is that although some may be farther down the road, we all walking the same road. Chapter 6 essentially stated that any one person can decide what they want to learn due to the vast amount of information available on the web. Keep in mind this book was written in 2009, and the world is astronomically even more ahead with technology as it plays a role on a global scale. The information available now is too large to even contemplate so there is no excuse not to be able to learn anything. I need to take a lot more advantage of this and find useful information that will increase my skills, as opposed to mindless activities.

Overall, the reading impacted me in a very positive way and gave me a more broader perspective on the world of software development. Keeping an open mind and always learning to adapt is essential in the technological field.. Just look at how far we have come in the last 2 decades as technological advancements have been moving at an exponential rate and things are always changing. I would say for anyone reading that no matter where you are in your journey, don’t be discouraged by the overwhelming amount of things that can be learned, but focus on what you can learn in the moment. Too much thinking will limit action and action is what drives a person to move forward.

From the blog CS@Worcester – Roller Coaster Coding Journey by fbaig34 and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns

I want to start this blog with something very interesting that I read in the book; Surround yourself with developers who are better than you. Find a stronger team where you are the weakest member and have room to grow. Being in a strong team can make you feel as if you are performing better. The other members of that team will often prevent you from making mistakes, and help you recover from mistakes so smoothly that you will not realize that you may not be learning as much as you think. It is interesting and true but also, we have to be careful because there are risks. You can end up feeling bad about yourself and your skills or there is more than you can handle so is good and bad being in strong group.

This semester I’m learning something new in software development capstone. This means that I have to read new information and trying to understand it. Expanding your ability to take in new information is a critical, though sometimes overwhelming, step for apprentices. This book help explains that you must develop the discipline and techniques necessary to efficiently absorb new information, as well as to understand it, retain it, and apply it. I feel this chapter is so relevant to me because sometimes I feel lost with all that reading and new information. While Expanding Your Bandwidth can be fun and is an interesting skill in and of itself, for the apprentice it is a means to an end.

I always try to hide my ignorance when I don’t know something about a topic. This book helped me understand that it fine to not know or understand it. It helped me to work with my problems and allow yourself to Expose Your Ignorance in a specific technology in order to focus your attention on what you need to learn next. Then Confront Your Ignorance and let your team and your customers watch you flex your knowledge-acquisition muscles. When all this new information and mind-stretching becomes overwhelming, it’s important to Retreat into Competence, remember how far you’ve come and the skills you’ve developed, and gather yourself to ascend to the next plateau.

Source: Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hoover and Adewale Oshineye, Chapter 1 and Chapter 2- 6 Introduction.

From the blog CS@Worcester – Tech, Guaranteed by mshkurti and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Post #1

Coming into my final semester of college I was filled with an impending sense of doom. At the end of high school, I knew where I was going. Now I suddenly am thrust into the world of working adults; four years squandered trying to meet deadlines and maintain a GPA instead of earnestly absorbing my professors’ efforts. A four-year hiatus from asking myself the real questions: Do I really want to be a software developer and if so, what am I doing to get there?

Amid this crisis of self-realization, I was presented with a reading and blog assignment. I regretfully confess that it’s been years since I’ve read an actual book – a byproduct of instant information (thanks Google!). For some reason I thought it best to not just skim Chapter 1, but to read it actively, and as I did so I felt validated. As the author referenced a student with a college degree from a prestigious program and a self-taught developer, I recognized that I too am a software apprentice, and this is one I should probably read fully, regardless of it being assigned.

While I can see all the chapters applying to me, the most relevant are Chapter 3 – Walking the Long Road, and Chapter 4 – Accurate Self-Assessment. Reading the introduction of chapter 3, I could see a lot of myself in the author as he described feeling discouraged by the skill of others; the same often happens to me. I must recognize that no one got to where they are from day 1, especially in the field of software development. It takes time and I have definitely not put in enough yet.  

The relevance of Chapter 4 is probably apparent throughout this blog post, though it’s not quite in the way the author describes. Instead of being satisfied with my level of ability, it’s clear I am hard on myself, much more than is necessary. There’s a difference between humility and beating yourself down. I must learn the difference if I ever want to get to somewhere where I am happy with my ability.

From the blog CS@Worcester – Half-Cooked Coding by alexmle1999 and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Chapter 1 and Chapter 2-6 Introductions

While there were certainly many important concepts presented in the first chapter of Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman and the subsequent chapter introductions, I felt that the increasing level of conceptual involvement made the earliest sections far more fruitful in regards to spurring introspection. It cannot be overstated how well the logical flow of concept presentation is and how the breakdown into sections (Context, Problem, Solution, and Action) allows the reader to take the somewhat abstract elegant concepts and ground them in personal and actionable terms.

An example of how this played out: as I read the introduction to Chapter 2 – Emptying the Cup – I found myself having just digested a well-crafted opening but somewhat hazy about how the previous material would be of substantial use to me. To my pleasant surprise the authors had anticipated this and conveniently delivered me a whole section titled, “Context”. The section read:

“You are just starting out and have only a shallow understanding of how one or two programming languages.”

Indeed, it was so! The “Problem” section then provided what occupational or educational stumbling block I may be facing, followed by a tremendous helping of sagely advice to overcome the aforementioned problem, peppered with technical examples and some relatable anecdotes from the authors themselves. It concluded with a section appropriately titled. “Action,” which provided the hard-hitting actionable steps that, deep down, every person facing a self-improvement regimen knows will create an amount of existential friction surpassed only by its constructive value. Due to all of the above I found myself absolutely loving this book and can imagine it becoming a staple source of wisdom and motivation to come.

Speaking of existential friction, my favorite quote from the assigned reading was actually not in the assigned content but rather the “Audience” section before it. The quote reads, “[E]ven people with a decade or more of experience—particularly those who may be struggling to navigate their careers—will find inspiration and perspective to counter the siren call of promotion to management,” spoke to me because at my last job I spent many a night fighting with inept management only to open my phone on my lunch break and gaze in despair at my Quora feed littered with horror stories of talented principal engineers being given the axe because they had become too expensive to employ, wondering if they should have relinquished their craft and made the jump to management instead. For full disclosure this not some Marxist indictment of the labor aristocracy; I have been both the employee and the manager in my life and may one day find myself on the managerial side of the coin because I genuinely do believe that I am a strong mediator and leader. But the introverted tinkerer within me grasps firmly at any notion that it is possible to succeed largely based on the merit of my toiling and not the bureaucracy of corporate telephone; if this book is to be believed then it seems the inner tinkerer may have a leg to stand on.

From the blog CS@Worcester – Cameron Boyle's Computer Science Blog by cboylecsblog and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Ch 1 and Ch 2-6 Introductions

The book Apprenticeship Patterns by Dave Hoover and Adewale Oshineye begins with its first chapter which centers on the concept and nature of apprenticeship. In it, the authors compare and contrast the apprenticeships of medieval Europe with the software apprenticeships of today. The following five chapters, of which I have read the introductions of each so far, focuses on individual concepts and attributes important to software apprenticeships. Chapter two focuses on “emptying the cup” or how an apprentice should set aside their existing knowledge in order to fully open themselves up to the different approaches of their colleagues and teachers. Chapter three reminds to not be too discouraged of the achievements of your peers as they’re still learning like the rest of us. Chapter four also reminds to not become too complacent or conceited and instead find ways to improve your weaknesses. Chapter five follows that up by advising that an apprentice should learn how to learn since software development is composed of two primary activities: learning and communication. Chapter six finishes off with the point that even though we live in an age where anyone can access limitless information through the internet, books still have some knowledge you can’t find online.

I mostly agree with the points made in the book save for the one in chapter six and even then, it’s mostly with the wording. The way the authors described their point made it seem that physical books have value outside of the internet in the information they have. This is despite the fairly likely chance that many of these books, such as Apprenticeship Patterns, already exist online in some form or another. I’m assuming that the authors only had sources exclusive to the internet like blogposts and websites in mind when comparing them to books. Outside of that, many of the topics and attitudes covered I feel are not only important for software apprenticeship but also for any skill that an individual decides to devote themselves to. Optimizing one’s learning skills, constantly learning, constantly improving one’s weaknesses, not getting discouraged by the accomplishments of one’s peers, and opening oneself to other viewpoints are all extremely important to cultivating a craft.

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

Apprenticeship Patterns: First Impressions (Chapter 1 and Chapters 2-6 Introductions)

Image result for apprenticeship patterns

For this course, we were introduced to the book Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman, by Dave Hoover and Adewale Oshineye as a resource and reference.

Immediately, I found this book to have an interesting approach to the way it presented information. Instead of being organized in a simple front-to-back kind of format, where content would be organized by order of foundational material followed by more advanced topics, this book is organized more similarly to a wiki, with the content presented in a relatively self contained manner for each chapter rather than as a series of introductions or tutorials followed by applications.

More specifically, I think the idea of apprenticeship discussed throughout the opening chapter and throughout this text is a genuinely useful idea relative to any kind of career or interest in software development. Rather than focusing on achievement and career progress for the sake of progression, the definition of apprenticeship is more concerned with learning and the acquisition of the knowledge with the goal of learning more and knowing more each day than the ones preceding it.

The definitions of “apprentice”, “journeyman”, and “master” used in this book are interesting because they discuss them as part of a system. Apprenticeship is presented as a step in a logical progression leading forward to being a Journeyman and eventually a Master with differing priorities and activities being attributed to each one, where the apprenticeship stage is primarily concerned with learning and self-development.

I like the idea of starting out with self development, because if you don’t develop yourself and understand how you want to work and the tools you want to use going forwards, then you proceed on unstable ground which won’t be very conducive to your future development or career.

Chapter 2, “Emptying the Cup” discusses the concept of remaining open to new ideas and knowledge, even after you feel you have learned a lot about a particular topic. It deals with the idea of acknowledging what you don’t know, and confronting those deficiencies while also maintaining a “beginner’s mind” while learning new things. While the chapter goes on to discuss how these ideas can be applied to something like learning a programming language, I think they can be relevant to learning just about anything. Activities such as cooking, painting, or even tying a knot all seem like places where it could be a good idea to approach them with a “beginner’s mindset” and not assume everything through prior knowledge.

Often going through things step-by-step as an absolute beginner might seems to produce some of the most lasting impact, in my experience. I think this chapter and the idea of keeping an open mind is very valuable, especially in a field like software development where you might be exposed to many different frameworks or languages throughout a project/development period, and might be tempted to apply knowledge from one to another (possibly leading to later difficulties).

Book Referenced: “Apprenticeship Patterns by David H. Hoover and Adewale Oshineye. Copyright 2010 David H. Hoover and Adewale Oshineye, 978-0-596-51838-7.”

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

Apprenticeship Patterns Blog Post #1

Throughout this semester, I will be reviewing several different apprenticeship patterns from the first six chapters of our in class textbook. For my very first post, I decided to review the first pattern covered which was “Your First Language.” For many of my friends and classmates (including myself), Java was the first language learned. When we are first starting out learning programming, the book tells us that it is incredibly valuable to master our first language or two rather than try to learn a bunch of different languages at once. I am a firm believer in this notion as well simply because, with my knowledge in Java, I am able to translate to other languages fairly easily. The book explains that trying to learn all the languages instead of one for when a programmer is just starting out is not ideal mainly because it will end up causing more confusion than learning. If I am great at my first language, it is generally not too difficult to solve a problem in that language and then translate it to a new language after the fact. A great quote the book uses to describe this is by Alfred North Whitehead, and it reads, “by relieving the brain of all unnecessary work, a good notation sets it free to concentrate on more advanced problems, and in effect increases the mental power of the race.” It definitely is a bit concerning to me when I see job applications stating I need to know certain languages or programs that use specific languages, but my original background in Java has proven to be extremely helpful in learning how to use those other languages. All the work I put into learning Java has helped me with my understanding of all languages, and for the most part, I just end up needing to teach myself the slight syntax differences between them all. This portion of the textbook spoke to me strongly because I have often thought about what would have happened if I had learned a different language for my first language. I see now that it most likely would not have changed anything, and that makes me happy!

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

An Introduction to Apprenticeship Patterns


For this blog post I will be discussing the entirety of the first chapter, and introductions to all other chapters of, Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hooper and Adewale Oshineye. As someone who is at the cusp of being released into the larger professional world, this book appears to be a useful resource. To clarify, I have been thinking about my future career as of late, and how exactly I can advance my own learning past what I do in class. Personally I have found this to be challenging, often finding myself having grand designs going into a personal project or online training program, but ultimately hitting a wall that abruptly kills progress. Within the first chapter of Apprenticeship Patterns, these troubles are acknowledged and addressed through establishing and discussing methods to approach learning new skills, these being the titular patterns. 

There were a few sections that I found particularly interesting. To specify, this section in the intro that redefines the definitions for apprentice, journeyman, and master was something I did not expect to find. I did not really ever put thought into redefining those terms to fit their more modernized roles. Additionally I enjoyed reading the introductions to chapters two and five. When learning new languages I feel as though I am always trying to program in as though I am using Java, as it is simply what I have always been comfortable with. I feel like this idea of “Emptying Your Cup” is of high importance when learning a new language, as it will most likely work differently than what you are comfortable with. You have to be willing to step out of the comfort zone to have a true grasp on this new language. 

The topic for chapter two goes hand in hand with this mindset. This chapter’s focus is on reinforcing a constant cycle of both learning new information or techniques, and subsequently sharing them. One important note is that this process should happen regardless of where you are in your programming career, apprentice or master, but it would be ideal to begin when your an apprentice. By establishing these practices early on you will habituated these processes of learning and sharing so that they will become second nature to you. Even just reading the introductions to this book has made me rethink these to aspects of how I program, which is a good sign for things to come.

This reading has already changed my mind on these two things, and much of what the other chapters discussed also sounded relevant, at the minimum. The only part that stuck out as odd to me were the introductions to chapters two and four. I am sure the content of both chapters differs, but they seem to be covering very similar topics, both stating that you need to let go of previous knowledge when tackling something new. This is not to say that I did not find these topics interesting, as I said above the topic of chapter two is something I am already thinking about doing, but I just found those chapter introductions to be strangely redundant. Overall thought this reading has been highly interesting and I am excited to dive even deeper into it!

From the blog CS@Worcester – My Bizarre Coding Adventures by Michael Mendes and used with permission of the author. All other rights reserved by the author.

Introduction

Hello everyone, my name is Jordan Tekelis and I am begining my blogging career today as a senior currently enrolled at Worcester State University. I am starting this blog as part of the opening token assignments for CS-443 and look forward to working on these throughout the semester. For starters, I would assume the majority of my posts will be school and assignment related, but as time goes by and depending how confortable this becomes, I will keep an open mind in continuing this through out my professional career as well. But as for now, this looks to be the end for my brief introduction post and good luck to everyone this semester.

From the blog CS@Worcester – The ways of the Computer: A Blog by JTekelis by jtekelis and used with permission of the author. All other rights reserved by the author.