Monthly Archives: January 2018

Apprenticeship Patterns Chapter 1

“Apprenticeship makes a difference because it instills a lifelong passion to master the craft. It instills a passion for perpetual learning and, in the process, enables the apprentice to become a great developer.” – Pete McBreen

I do agree with this statement that was at the beginning of the chapter. As an individual, whenever I hear the word “Apprentice”, I always wonder and think about the “Master” because that is who the apprentice learns from. After reading through this chapter, I tried to tie all the concepts back to the title of the book Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman. An apprentice should always try to learn and understand the concepts that the master is trying to teach. Understanding and learning the concepts is one thing. Learning how to implement and use the concepts is another. The techniques that you learn from a master can sometimes, if not most times, be found found in textbooks or they can’t be basically self-taught. Every master can have different styles, which is why a “master” is very valuable and special in a sense. To me, that is an Apprentice and Master relationship. When the apprentice is trying to perfect their craft with the aid of their master, it instills something very special within the apprentice’s work and makes them have the desire to want to learn and create more. This quote by McBreen is very important to me and makes sense to me the most. To relate it to myself, I feel that the Master is the contents of which I am trying to learn, and the Apprentice or Journeyman is myself.

There is a quote that also sparked my interest because it is a statement that I fully acknowledge. “One of the lessons we’ve learned from the Agile development movement is that just telling people to do things doesn’t create lasting or sustainable change. When the people you’ve advised encounter a situation that isn’t covered by the rules, they’re lost. However, if those same people have imbibed the values that underpin the rules, they can come up with new rules to fit any situation. Our goal here is not simply to hand people a rule book, but to give them the ability to create new practices for new contexts, which in turn drives the discipline of software development forward.” This supports the thought of critical thinking in a sense that thinking outside of the rules in order to create new ones is the foundation of continuing the evolution of software development. If developers encounter a situation that certain rules do not cover and they become lost, software development cannot progress forward.

As I am currently aspiring to become a future video game developer, I expect that there are going to be new rules that are going to be created constantly. I know that I am going to learn and to develop certain “crafts” to be very efficient in that environment of work because there will be many things to adapt to. As Pete McBreen points out, there are many developers out there today in the field. The important question is are there enough “good” ones? When I head out there in the field, I would want to be recognized as one of those “good” developers.

 

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

Apprenticeship Patterns Chapter 1

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

Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman – Chapter 1

At first, while reading this chapter of Apprenticeship Patterns I was a little skeptical of how software development could be thought of as a “craft” with some kind of software guild made up of apprentices, journeymen and masters. However, after reading the authors’ own definition of what they believe “software craftsmanship” is I started to agree with what they had to say. I actually found their interpretation of apprentices, journeymen and masters, in the context of software craftsmanship, to be pretty interesting. I think that if all developers took on this way of thinking about software development the software engineering community could benefit immensely. By adhering to an apprentice mindset, software development newcomers might be able to avoid making the same mistakes that past generations of software developers have made.

Another thing I liked about this chapter was the values in which the authors believed every programmer should adopt. I think that adopting these values and committing to the idea that the only way to become a true “master” is through continuous learning though trial and error is the best way to progress your skills and career in the software development field. Among the values laid out by the authors’, I saw a common theme in that they think it is important to be open and transparent when it comes to software development techniques. I feel that competition can sometimes discourage companies and individuals from sharing their ideas and innovations, but this is can be detrimental to the software development community.  If all developers shared their work and development experiences, then software in general could possibly become more reliable and efficient.

This reading definitely made me change the way I think about software development as a whole. One thing it has made me consider is my overall career goals. The book talks about how one of the most important parts of becoming a better developer is finding a position that provides good mentors rather than finding the position that simply has the highest paying salary. This is something I didn’t really think about before and it has made me realize that if I want to enjoy what I do for the rest of my working days I should definitely try to find a place that encourages learning and provides many opportunities for mentors to give me feedback and ideas. Also, I think this reading will change how I work in the sense that I will look at failure in a new light. Instead of being mad that I can’t get something to work the first try I will remember that even the best developer out there has made countless mistakes to get where they currently are.

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

Thoughts on “Apprenticeship Patterns, Chapter 1”

In this blog post, I want to go through Hoover and Oshineye’s values of software craftsmanship, and how I can apply them to my work and my development as a developer.  To summarize quickly, they are:

  • Talent derives from effort and practice.
  • Adapt and change.
  • Embrace pragmatism.
  • Share knowledge.
  • Experiment, and be willing to fail.
  • Take control of own destiny.
  • Focus on individuals.
  • Include the best ideas from everyone.
  • Focus on skills over processes.
  • Find like-minded people to learn with and from.

I don’t necessarily agree that all talent comes from practice and effort, but practice and effort are the cornerstones of ability; talent certainly languishes without use.  I also don’t think that it’s enough to just do my work for classes or my job.  Improvement requires practice on new things and dedication of time outside of the minimum needed to put food on the table.

Like any machine learning system, we can improve via feedback.  Unfortunately, it’s not always so easy as minimizing a loss function and backpropogating information.  I agree with the authors wholeheartedly on the need to find solutions to my inadequacies.

Pragmatism is great, but I don’t agree that it’s the end-all, be-all; I do appreciate, however, that it’s more important in the context of apprenticeship than it might be later in my life.  I recognize the tendency within myself to become paralyzed by attempts to force “theoretical purity” or “future perfection” from the start, and then never start at all.  This is something I very much want to change, or at least to recognize when it is useful versus times it gets in the way.

One of the things I enjoy most about being a part of a learning community is the ability to share what I know, and learn from my peers.  I will miss that after I graduate, so I may try to bring that kind of sharing to wherever I end up next.

I absolutely agree that progress in any form requires experimentation and failure.  From my experience playing various games, I know that it’s important to take something away from each loss, and also to acknowledge the room for improvement in each win.

I think that many of Hoover’s and Oshineye’s points follow from taking control of one’s destiny.  I agree that conscious choice and involvement in learning and life are key to the improvement of self.

I like the idea of a community of like-minded individuals rather than a blind reliance on hierarchy.  In my gaming life, I’ve found that (sometimes somewhat heated) debate is an excellent way to grow myself and to learn.

Inclusiveness goes hand-in-hand with pragmatism.  If an idea is useful or productive, adopt it.  If a person has value to contribute or simply wishes to share in the learning and information, include them.

My earlier education was heavily focused on skills over memorization, and that different processes may work better or worse for different individuals.  I agree that it’s important to recognize these things, as well as acknowledge that skill is not always equitable.

Learning is communual, and this last value of “situated learning” seems to follow naturally from many of the earlier ones.  I want to continue to align myself with like-minded individuals, even if that requires more effort than just showing up to class.

There is more to unpack in this chapter than what I have covered here, far more than what I could digest and boil down for a single blog post.  I believe that commitment to the values Hoover and Oshineye lay out will help me improve as a software craftsman.

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

CS-448 First Post

This is my first post for the dev capstone

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

Apprenticeship patterns – chapter 1

On a lay man point of view, craftsman is a person with a defined knowledge of doing something at its very best level. In this case the skills he or she posses and the ability to do well in his trade are very important to his clients. For instance, a building craftsman will be aiming at providing his client with the best and attractive finish building. To some extent, I am beginning to see how wrong I used to think about the term craftsman. If I was asked to define a craftsman without the knowledge after reading this chapter, I would not have think of software as a craft. I will describe craftsman as a highly skilled person who owned a workshop and have people called apprentice who are in the process of acquiring knowledge to enable them set up their own businesses. One may be surprised to see or hear that those practice in the 1900s where apprentices watch and imitate their master still exit. Only a few trades will allow or give the apprentice the chance to learn by doing it themselves. Doing it yourself will enabled you to learn and improve from your mistakes in the past. However, in the perspective of software the term craftsmanship have a deeper meaning attached to it that might affect the meaning. Even though term like craftsman, master, journeyman and apprentice are not new to many, they have difference meaning in difference field of study. In the light of software, many factors have to be taken in consideration; a professional developer who have been earning meet from his work for years will soon realize he or she is yet to undergo an apprenticeship process in his trade. One have to be prepared to learn or work hard for earn credit to his work. In this field, there is bound to be failure as in other trade and as a craftsman, you need to accept those failures as a motivation to improve in your next task rather than seeing them as mere failure or something discouraging. Again, to be successful, one need to be able to adjust to a changing situation and also able to accept criticism as a lesson for improvement.

besides, apprenticeship in this modern day is quit difference from the past where the apprentice just watch their master work for years and at some point learn by imitating what the master does. As an apprentice, you are given the chance to learn by trying it yourself then using your failures as a routine of mastery and improving your skills. In this modern world, even though an apprentice might be in small teams working under the supervision of the master, the outcome of their apprenticeship is solely their responsibility.

Also, a journeyman in this contest is a person with a knowledge in between the master and the apprentice and is able to lead the in the absent of the master. The journey man ideas in this chapter are something new to me and I am yet to see it practically.

Master in the other hand is the person with adequate knowledge of doing all the work of an apprentice or the journeyman and also keeping the trade alive. As a master, you should be very skillful and creative. A master as software craftsman, need to be able to create and share superior skills with his or her apprentice. In the other hand, apprenticeship is a process where new comers in the industry are trying to learn the requirement skills and knowledge that will make them function as developers and to earn living from it. These new comers need someone called the software craftsmen (Masters) or mentor to guide them through this process.

In conclusion, this chapter has been an interesting one I have read so far in this semester because I have drawn a lot of ideas from it and it will help me to take my destiny upon myself to explore the available resource and my professor as a mentor to achieve the necessary knowledge needed to survive in the software industry.

 

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

CS448 Intro blog

Hi everybody, I’m Buvan, and I’m enrolled in CS448 with Karl Wurst, Ph.D.

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

Introduction

This is the introduction post for class CS-448

From the blog CS@Worcester – The Road of CS by Henry_Tang_blog and used with permission of the author. All other rights reserved by the author.

First Blog For CS-348

This is my first blog for CS-348 for this spring semester 2018

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

First blog post for CS- 448

This is my first blog post for CS-448

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