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.

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.