Monthly Archives: January 2018

Apprenticeship Patterns Chapter 1

Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hoover and Adewale Oshineye opens up with a really great hook that makes you want to dive deeper. The book, so far is extremely simple and easy to read. The authors do not overwhelm you with too much information. It feels like they are talking to you rather than telling you something. I like the medieval inspiration of guilds, masters, and apprentices. It brings me back to the days where I wanted to be a blacksmith apprentice (in 5th grade we went to Old Sturbridge Village which sparked my interest in blacksmithing). I never became one, obviously because there are no blacksmith masters around. Anyways, just the word apprenticeship gives me a feeling of being useful (or at least learning to be useful) and I enjoy the thought of having a master to teach me the crafts.

My favorite line from this chapter was “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 is important because even the most skilled of teachers can learn things from students that think differently. Giving us the tools to make our own decisions is what we need to continue developing new and better technology.

The authors include a bulleted list of values that describes the phrase software craftsmanship. Some of the most important values being:

-Growth mindset. The author accurately explains that failure is just momentum to try again. Keep learning and growing from your mistakes an you will become very powerful.

-Adaptability. Recognize that the world is changing around you and just because you think it is right, doesn’t mean it is.

-Open source sharing. Share what you know rather than hoarding it. This will help progress software development as a whole.

-Manifest Destiny. Go out and create your own opportunities rather than waiting for someone to give them to you.

-Learn form your environment. Swallow your pride and ask for help from people around you. They have the knowledge and skills to advance your skills.

The authors go on to explain what it means to be a journeyman, master and an apprentice.  As an apprentice you should always have the attitude that there is a better and faster way to do things. You should continuously absorb information from the people around you and use that information to your advantage. A journeyman is an apprentice that might switch between masters and relay ideas off each other. They are focused on enlarging their portfolio and working to become a master. A Master is the all powerful leader of the three. A Master retains all responsibilities from his journeymanship, with the added responsibility of furthering software development as a whole. He/she does this by teaching and continually learning.

The phrase apprenticeship pattern does not mean that this book will teach you how to become a software designer. The patterns are simply a guide to bring you to the next level and get you better at what you want to do.

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

And So It Begins…

Despite the ominous title, this is an introductory post for my Software Development Capstone course for my last semester of University. Let’s do this!

From the blog CS@Worcester – Fu's Faulty Functions by fymeri and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman

We’ve been assigned to read Chapter 1 of the textbook with the same name as this blog post, but I couldn’t stop there. I read the whole book during this past week or so, and I did this for two primary reasons. First, I thought the book was very interesting and couldn’t bring myself to stop at Chapter 1. I could not find myself disagreeing with anything the authors asserted within this chapter. Second, I’ll be writing blog posts reflecting on various “apprenticeship patterns” discussed in the textbook throughout the next several weeks. I thought it would be particularly useful to have a general idea of each pattern. This makes it easier for me to pick and choose which “currently relative” patterns would be most useful to practice and reflect upon in future blog entries. That being said, this blog entry in particular will focus solely on the first chapter.

So what is an apprenticeship pattern? Dave and Ade, the primary authors of this textbook, describe it as something that we as entry level software developers can use to further our careers. The aim these authors seem to have is not on how to develop software itself, but rather how, as apprentices, to approach software development as a whole. Rather than explicitly teach us how to write software, I feel that the authors’ ultimate goal is to teach newcomers in the field how to accumulate and apply knowledge as effectively as possible.

What I found most insightful regarding this chapter is the comparison of modern software craftsmanship with the traditional model of the idea. I feel that the authors of this textbook are suggesting that the modern software craftsman ought to embrace this traditional overview of craftsmanship. In medieval times, the primary responsibility of an apprentice was to further their knowledge in their craft. This cannot be done by mastering just one aspect of the field. It seems to me that an apprentice should strive for at least an abstract understanding of every aspect of their trade, no matter how remote it may seem.

Attributes such as cross training whenever possible can help improve production and advancement of the apprentice. I feel this also helps advance the field of Software Development as a whole. I find this particularly thought provoking because sometimes today’s expectations of society may pressure us to focus solely on whatever narrow tasks we are expected to perform in a given job position. If we follow that path, we may become experts in that particular area, but what happens if that position becomes obsolete?

The goals of this textbook’s authors seem to focus on preparing us for the inevitable constant change and advancement of Software Development and Computer Science as a whole. Since our field is constantly changing, we must remain flexible with the ability to consistently adapt to this inevitable advancement and change. I feel this can only be done by expanding the knowledge of our craft. We should accept that our primary job position today may be obsolete tomorrow, and focus on expanding our knowledge in computer science as a whole. It seems to me that this textbooks’ authors assert this should be our primary goal. I believe the apprenticeship patterns discussed in the upcoming chapters give us that insight on how to flexibly advance in such a technologically advanced career as Software Development. I look forward to blogging about many of these patterns in the near future!

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

Introductory Blog Post for CS-448

This is the blog I will be using for Dr. Wurst’s CS-448 Software Development Capstone.

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.

Software Craftsmen, chapter 1, week-1

Chapter 1. Introduction (Summary) The authors tell us that the concept of apprenticeship is one that encourages cooperation among the experts and novices. This cooperation results in the enrichment of the novice with respect to the expert’s know-hows. Apprentices eventually … Continue reading

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

Apprenticeship Patterns Chapter 1

The first chapter of Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman[AP] by Dave Hoover and Adewale Oshineye wasn’t really what I was expecting to be honest. Typically books for college classes are very factual and focus on learning new concepts, where they should be used, etc. This book, the first chapter at least, reads more like a career advice books. The authors are speaking from experience to try and provide insight and advice to people who are about to step into the field of software development (a.k.a. Computer Science seniors like us) or to those who are just getting started in it. I found the piece on Dave’s story to be particularly interesting. I always find it fascinating to see how people got to where they are in their careers, because the path taken is typically not what you would expect. In Dave’s case he got his foot in the door by essentially teaching himself Perl and proving to be he had what it took to be a programmer. He did that at age 26, so it wasn’t like he got a Computer Science degree, went right into the field, etc. It was an unusual path. He had to find another way to get his foot in the door. People who take the more difficult road often have the best advice, so I am particularly interested to see what he has to say throughout this book.

Now, more focus on what the purpose of this chapter was, which I feel was to provide an overview of what it takes and what it means to be a “software craftsman”. He goes on to provide a lengthy list of what “software craftsmanship” means, but I’ll point out a few that stood out to me:

  • “A willingness to experiment and be proven wrong” [AP] I feel this is very important. You simply won’t learn anything if you aren’t willing to try new things. This is applicable to all aspects of life, not just software development.
  • “A desire to be pragmatic rather than dogmatic” [AP] This is something I agree whole heartedly with. To have a program be absolutely perfect you will be working on it forever. Companies care far more about getting the job done in a timely and efficient manner than having it be perfect. If it gets the job done, they aren’t going to care how it got done in most cases.
  • “A need to always be adapting and changing based on the feedback you get from the world around you” [AP] Speaking from the experiences I’ve had at my software engineering internship, there are times where I’ll spend a week working on something and it will be scrapped because something changes late in the game. Or I’ll get halfway through writing a piece of code and realize there is a far better way to approach and I’ll have restart from scratch. You have to be willing to change and adapt to any situation at any point in time.

He then goes on to talk about three different stages of expertise in a craft: apprentice, journeyman, and master. I think it is safe to say most people taking CS448 are in the apprentice category. We all have so more to learn. Obviously, the goal is to eventually be a master at this craft, and hopefully this book along with the “apprenticeship patterns” it discusses will help get one step close to obtaining that goal.

 

Link to book: http://chimera.labs.oreilly.com/books/1234000001813/index.html

 

 

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

Intro – CS 448

Hello Everyone in Cs-448  !

My name is Kwame ofori and i am really looking forward to this class and getting some real world experiences. I believe experience is the best teacher so i am ready to learn !

 

 

From the blog CS@Worcester – Le Blog Spot by Abranti3 Dada Kay and used with permission of the author. All other rights reserved by the author.

CS@Worcester – Fun in Function 2018-01-18 12:13:19

This is the introductory post for the CS-448 course of Spring 2018.

From the blog CS@Worcester – Fun in Function by funinfunction and used with permission of the author. All other rights reserved by the author.

CS-448 Capstone Blog Intro

First Blog post for the capstone!

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

Apprenticeship Patterns – Chapter 1

My thoughts on the first chapter

The opening chapter of the book Apprenticeship Patterns serves as a brief introduction for what to expect throughout the rest of the book. There were a number of concepts that I am unfamiliar with and am looking forward to learning more about. I had previously heard of the terms apprentice; journeyman; and craftsman;  but never I had not thought of them in the context of software development. 

Once we wrap up all of these new concept applications, we arrive at the idea of the Software Craftsman. Within this moniker are suggestions on applicable mindsets that encourage pragmatism, information sharing, and surrounding oneself with those with better skills. Each of these taken individually seem obvious. But once you line then up under a single purpose, they highlight an approach to becoming an accomplished developer through community and experimentation. 

Breaking down the titles

The opening chapter offers us a loose definition of the hierarchies we can expect to encounter in this book: Craftsmen (or Master), journeymen, and apprentices. But beyond these archaic titles is a value system that should be imbued on the reader. This system lays the foundation for becoming a better software developer. 

The apprentice is probably what most of us in this class would classify themselves, yet this assumes a journeymen/master who is teaching us. The classroom model is our current vehicle, but soon it will branch out as we become journeymen and expand on our skill set. 

The master or craftsman designation seems to be reserved for those that can and are willing to further the zeitgeist of his or her craft. These are those who reach a point that they re-examine the methods and rules of his or her craft and attempt to better the tools and means of it. 

My takeaways

I am learning that there are pattern languages for just about any discipline one could imagine. I am not confident enough in mu understanding to say whether I agree or disagree with the material but am intrigued by the prospect of bettering my skill set and understanding of the development world. I am eager to dig into the material and begin to apply it to my career. 

From the blog Rick W Phillips - CS@Worcester by rickwphillips and used with permission of the author. All other rights reserved by the author.