Apprenticeship Patterns – Introduction

My first impression with reading the first chapter and introductions of  Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman  left me eager to learn. Although I only read the first chapter and the subsequent introductions, I could tell immediately that this book contains a wealth of knowledge born of experience from talented software craftsmen that will greatly help me hone my skills over my career. Chapter 1 introduces us to the book by giving us insight into what types of character traits are the most beneficial for a budding software developer, as well as providing a background of the historical craft model and how that model applies and differs from the one that is used today.

In the first section of Chapter 1, the authors describe character qualities that are fundamental in a true craftsman. They demonstrate how important being self motivating is to mastering the skills of software development. We are in an industry that is constantly evolving, so being motivated to learn and improve on our skill continuously is essential to being a software craftsman.

Another aspect of the authors’ perspectives I enjoy is how they explore the traditional medieval guild model and how that applies to software development today. The concept of a progression from apprenticeship, to journeyman, and finally master is still used in many trades today, and I definitely agree with the authors’ suggestion that the model applies to our industry as well.

I also find it very interesting how the authors define apprenticeship patterns and how they go about deciding which ones work. They describe “extracting the framework from working systems”; the knowledge that comes from analyzing past successes and figuring out common patterns that aided in their success is extremely valuable knowledge that can be applied throughout our career.

I feel as though reading the introductory excerpts from the beginning of chapters 2-6 gave me a basic understanding for the tone and themes of the book. What I took away from reading them is each excerpt is a story or general example that relates to the topic of the chapter, and often the story illuminates a need for a fresh perspective, and emphasis is placed heavily on disciplining oneself to have an open mind, taking any opportunities to learn from those with more experience, as well as being able to learn for yourself, and be responsible for your own education.

I was at first a little bit surprised at how heuristic the book is, but I saw right away how this unique outlook offers valuable knowledge that will help all of us in our journey to becoming skilled developers. I’m excited to learn the apprenticeship process from this book, because I believe that if I can apply this knowledge early on in my career, I will be in great shape for being a skilled software craftsman for my entire career.

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

Software Capstone: “Emptying the Cup”

In the book we are reading, chapter two is based off the concept of emptying ones cup (essentially if you have a lot of experience coding and are approaching a new project, you need to empty your mind of flawed coding practices, patterns and ideas, and focus on what will work for your project and what will help move you forward.)

 

The first section of this chapter has to do with your first programming language. In this stage, you have only a moderate amount of experience with no more than two or three languages at best. The issue one must face at this stage is reaching the standards your job or your teammates have put forth. The way the book tells us to solve this problem is by honing our skills on one programming language, such that we can seamlessly solve many problems with just that one language. When you just have to use a different language (due to requirements or what have you,) you will have a new opportunity to learn about this seemingly foreign coding language. You can always approach your senior developers or other developers more in tune with that way of programming, as long as you don’t require your colleagues to solve it all for you.

 

How do you go about accomplishing this first pattern? You need to read up on the programming language you’ve chosen to study deeply. There typically are books or websites available for you to learn more about your language. Another avenue for learning is asking for help or talking with your colleagues about how they accomplished what they have with the language. In ending, try and solve some basic problems with your programming language and move up to more intensive projects and issues.

Work slowly at first and you will understand better the in’s and out’s of your language.

 

-SMR

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

Hello! I am back with CS-448..

Hello dear readers. Welcome back to my blog. This post is an introductory post about my CS-448 class (Software Dev Capstone). This is my last semester and I am really looking forward to my graduation. I will see you soon..

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

Task 1: Blog Set-up

CS 448 setup blog post

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

Software Capstone: Apprenticeship Patterns Post 1

Hello again readers.

So, what is a pattern as is described in the book Apprenticeship Patterns by Adewale Oshineye and Dave Hoover? Patterns are ways in which we program or otherwise do our work/solve problems repeatedly. When applied correctly, patterns allow us to easily overcome many problems/obstacles we face in our jobs and personal hobbies.

The patterns in the book make their approach based on the context, problems, and possible solutions. “The context sets the mood… problem statement identifies the problem being solved by the entirety of the pattern. The solution usually begins with a one sentence resolution for the problem…” (Pattern Form, Apprenticeship Patterns)

Developing a pattern allows for the mass production of programs, buildings, and other structures, whether physical or metaphysical. It is intended to further the abilities of the novice to moderately advanced programmer. One model/pattern for programming is using a master node and slave nodes: the master node controls what slave nodes do (which instructions the slave nodes undergo.)

 

This book was written for “software apprentices” (as put forth by the author.)  The three tiers of the programmer go from apprentice, to journeyman, to a master craftsmen. The apprentice believe that there is always a better way to do what they are doing. The journeyman focuses inwardly as well as on teamwork and connecting with others. The master does this all as well as attempt to move the industry forward.

 

On to the review of this pattern. I find taking instructions from a singular source and running processes on many smaller sources of computing power to be interesting: you can get vastly more processing power by adding many slave or sub-nodes to a master or dominative node. I haven’t really found that it changes how I will approach programming in the future but I may look back on this way of programming for reference. Finally, I have no disagreements or other takeaways from the first chapter and pattern of this book.

I hope you’ve enjoyed my first post about Apprenticeship Patterns, I will see you next time.

 

-SMR

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

No hand holding

For the first week of apprenticeship pattern readings, I chose to read Draw Your Own Map. This pattern focuses on the career path that you chose for yourself based on your future or current employer. It tells a tale of how employers can only lead to a limited amount of career opportunities from your current job status. To work through this system, it is necessary to create a plan or road map for your future endeavors after moving forward from where you currently are. By lining up paths that can be available to you based on your current desires, knowledge, and expertise. It will be easier to find yourself in work that suits yourself the best instead of settling for less. These roadmaps should easily be updated to your current situation whenever you see fit. The overall idea behind this is that no one will be able to tell you how your career will end up, everything is up to you.

What I found interesting were the two short stories provided near the bottom of the pattern which clearly showed how reality will present itself. By providing evidence of how some apprentices feel about their current work experience, realizing what they actually wanted, and making a rather small but big step towards their dream career path is inspiring. It also goes to show that not all companies will have their interests aligned with their employees. Also, the action listed at the bottom is helpful to show that. By mapping out from each job choice and their potential benefits and paths that could open or give an overview of how you will end up later on. By not limiting your choices and have a willingness to redo the diagram until you are satisfied with the end result. There is a big possibility you will find happiness at the very end. Otherwise,  I enjoyed the fact that this pattern is straightforward with budding apprentices like myself. As quoted, “Understand that it’s not up to your employer, your career counselor, or your professors to give you a hand up.” Every decision lies in us, by having a plan, you can reduce the amount of roadblocks you will hit along the way and make more informed choices in your career path.

From the blog CS@Worcester – Progression through Computer Science and Beyond… by Johnny To and used with permission of the author. All other rights reserved by the author.

Introductory Blog Post CS-448

This will be my blog for CS-448.

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

Apprenticeship Patterns – Confront Your Ignorance

Confront Your Ignorance discusses how to begin mastering gaps in your skillset that are relevant to your daily work. It is important to fill these gaps in whichever ways work best for you. For example, some people like to read introductory material until they have a good understanding of the basics, while others like to dive right in and learn by breaking things. Working with peers who are trying to learn the same skills will help you make better progress. Once you have a decent understanding, you must decide whether it’s more useful to dig deeper or start filling other gaps in your knowledge. There can also be negative side effects created by this pattern. If you implement an extremely complex system just to learn how to do it you can burden your coworkers and introduce unnecessary costs. It is also important to not let your education get in the way of delivering a product. A software craftsman must be willing to put the wider interests of the community before personal benefit.

I think that this pattern is very relevant because everybody eventually runs into ideas or techniques that they know nothing about while everyone around them seems to have them mastered. Knowing how to pick which skills are worth learning and being able to learn effectively are important traits required for success. Being able to confront your ignorance is something that everybody (especially software developers) should be comfortable doing.

While I agree with everything written in this pattern, I don’t think there is anything exceptionally thought-provoking about it. It’s basically another way of saying that you should continue learning throughout your career. I believe that this is an important thing to do, but there was nothing written in this pattern that will change the way I work or think about the profession. Overall I think that the content in Confront Your Ignorance is agreeable but I did not take away any new ideas by reading it. I do look forward to reading some of the other patterns that were linked in this one as they seem like they have related ideas that expand on what was written about in this pattern.

 

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

Apprenticeship Patterns Chapter 1 and Chapter 2-6 Introductions

As a first assignment blog post for my Software Development Capstone course we are assign to read the Apprenticeship Patterns Chapter 1 and Chapter 2-6 Introduction with the purpose of understanding “what it means to be a Software Craftsman and the stages of becoming a Software Craftsman” and to also, “get a feel for what the patterns in each chapter cover” from Chapter 2-6. In this blog I will first cover my reaction to the reading and then I will do some Question and Answer format of my reading of Apprenticeship Pattern by Adewale Oshineye, Dave Hoover.

My Reaction

From what I have read from Apprenticeship Pattern Chapter 1 Introduction and the introduction of Chapter 2-6. So far, my reading has been insightful on what exactly I will be learning and what Software Craftsmanship is. I like that it explains when they are referring to words such as apprentices, journeyman, master, and craftsmanship it is different to those medieval terms. Although they slightly resemble, they are redefined differently in this book. Reading the introduction to each chapter was insightful because it helps clarified that the Apprenticeship Pattern are different to other patterns in particularly Design Pattern. That is because Apprenticeship Pattern are a set of patterns believe to be beneficial for individual beginning a career in Software Development as appose to Design Pattern which is a solution to common design patterns. Each Chapter from 2-6 breaks down the different Apprenticeship Patterns and each of their introduction gives you an idea of what you will be learning and how the pattern will help you in your journey from Software Developer Apprenticeship to becoming a Master Software Developer.

 

What did you find interesting, useful, thought-provoking about the reading?

I found the following paraphrase from Chapter 4 Accurate Self-Assessment interesting, useful, and thought-provoking… “You must be willing to let go of your perceived competence and allow yourself to recognize that you have traveled only a short distance on The Long Road. Your goal isn’t to become better than the “average developer.” Your goal is to measure your abilities and find ways to be better than you were yesterday. We’re all on the same journey, and comparing ourselves to others is useful only when it allows us to find ways to help each other improve.” Phrase from the book Apprenticeship Pattern by Adewale Oshineye, Dave Hoover. The reason this phrase caught my attention is because it helped me understand that being the best you can be each day growing new skills and new knowledge in order for you to be a better Software Developer on each present day. Which is something I will apply to my life.

Has the reading caused you to change your opinion, the way you think about the topic, or how you work?

This reading has not changed my opinion on what I think about the topic because it is pretty similar to my thinking except, I feel that once I read more it will help me with common problems new Software Developer face.

Do you disagree with something in the reading? And why?

I do not disagree with anything from the reading because there was nothing, I read that I didn’t like or understood.

Which chapters seem most relevant to you?

I will say that Chapter 4 Accurate Self-Assessment because it will help build my self-confidence through this journey as a rookie Software Developer.

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.

“The White Belt”

This is the first Apprenticeship Patterns Blog Posts, I choose “The White Belt” in the second chapter, it represents maintaining a beginner’s mind regardless of your expertise. This is the second chapter of book “Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman” by Dave Hoover and Adewale Oshineye. The young philosopher- “Can’t you see the cup is already full and overflowing?”. The more experience you already have, the more effort you will need to put into “emptying your cup,” meaning the more you learned the more you have to “emptying your cup”. We must be humble, to able to thrive and get to next level.

To able to have new mindset new skills, sometimes we must go back “The White Belt” to unlearn what we had learn. I thought this pattern is interesting, this help us how to learn new thing and our attitude go about it. Once we learned language, specially first language, we have pride in out skill. Although it is good for you have confident, if you want to learn new thing. In our mindset, we will try to relate to what we had learn. Sometimes that make we learn new thing much harder. To solve this, “The White Belt” suggest that we find an opportunity to unlearn something, like as we go back and wear white bell as beginner. You have to learn new language, with new structure as you first time learning the language. I have to agree on this pattern on this, we need to learn new language and new functional way of building. I need full attention into learn first, once I understand fully then I could compare what I have learn. Although I don’t have a large library of language, this technique will help me in my profession. This also would help me in career, it is good to know someone who do thing different than you. They will make you understand and learn from them.

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