Category Archives: CS@Worcester

Reflections on Apprenticeship Patterns

While reading parts of the book “Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman” by Dave Hoover and Adewale Oshineye, there were a couple points that stood out to me when reading and comparing to my own experiences and knowledge.

An important point brought up by the book in the first chapter is how understanding the logic behind why things are done allows people to adapt to unfamiliar problems. Knowing the “spirit of the rule” allows for people to create new rules as needed. This is a point I personally feel strongly about. Knowing what to do is, really, only an issue of understanding instructions. Having a knowledge of the reasoning behind different practices allows you to apply that understanding to other problems.

Programming is a great example of this. It’s easy enough to follow a guide on writing code to follow some specific function, however, good developers will put effort into understanding how the code works, and will be able to replicate what they know later, or apply it to different situations. Someone who only knows the specific steps to writing the code doesn’t understand how it works, and most likely won’t be able to apply their experience outside of that specific use-case.

Another interesting point that I personally hadn’t considered was that apprenticeship in software development is much better approached as a mindset, rather than a formal form of schooling. The book describes that newcomers will have to “create their own opportunities for learning” in the working environments they find themselves in. I’ve understood that it’s important to have a desire to learn more than what may be expected, but the perspective of creating your own learning experiences, outside of more standardized curriculums but within the same environment was interesting.

This point also carries over into the beginning of chapter 3, where one of the authors describes how after connecting with other Perl developers, he was impressed not just by their knowledge, but by the speed at which they were still learning. Symbolically, the stacks of certificates and qualifications would become buried under book printouts and notes; the desire to learn more taking precedence over hard skills and qualifications that one can accumulate.

Both points culminate in the idea that being a great developer doesn’t mean having countless certifications or even being able to write code well. This is a good foundation, and great software developers usually fall into this category, but what makes them great is the understanding that there is more to learn and the desire to expand their knowledge and experience that sets them apart from the pack.

References:

Hoover, Dave H., and Adewale Oshineye. Apprenticeship Patterns Guidance for the Aspiring Software Craftsman Dave H. Hoover Aut; Adewale Oshineye Aut. O’Reilly, 2014.

From the blog Griffin Butler Computer Science Blog by Griffin Butler and used with permission of the author. All other rights reserved by the author.

Software Craftsmanship

 Hello!

 I’ve had a bit of assigned reading to do for my capstone course, ans as such, I thought it would go the way of most readings of that ilk; incredibly dry and ungodly boring. But surprisingly I had a pretty good time with Apprenticeship Patterns by Dave Hoover and Adewale Oshineye. 


The text captures something that I find to be incredibly important to the process of becoming a career programmer, the ability to be flexible. Much of my time spent learning to program has consisted of how to do things, but never why or when we should do them. Sometimes it feels like I have a fairly full toolbox, but I don’t have the required knowledge to apply my tools in ways they weren’t explained to me in. I’ll admit, this is more of a personal failing I feel, but the point still stands. 


Chapter 1 and the introductory paragraphs to Chapter 4 really stood out to me the most, as Chapter 1 goes into detail about what it means to be a craftsman, and an apprentice. It highlights the experiences one might go through, and what one might expect to get out of an apprenticeship, but the most compelling out of that chapter was the focus on the need to continue learning. In order to be a good apprentice, and get anything meaningful out of the experience, it takes a want to learn how to become a master, and the willingness to continue to developing your craft, and focusing on how you can improve your mindset and workflow. Chapter 4 stood out to me with it’s anecdote about Dave’s experience with certifications, and his discarding of them as he learned from a group of Perl hackers. Not only was it quite amusing, it highlights ths importance of a flexible mindset. None of us are ever done learning, and in order to ever become a master, you cannot be satisfied with jist maintaining the status quo.

 

Overall I found the selected chapters to be genuinely pretty inspiring, and it put into perspective where my head is at in terms of my software development journey, and how I might go about improving them. This might be optimistic, but this book might end up being one I read in my off time, a rare feat for an assigned reading of this nature.

 

 

 

From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.

Software Craftsmanship

 Hello!

 I’ve had a bit of assigned reading to do for my capstone course, ans as such, I thought it would go the way of most readings of that ilk; incredibly dry and ungodly boring. But surprisingly I had a pretty good time with Apprenticeship Patterns by Dave Hoover and Adewale Oshineye. 


The text captures something that I find to be incredibly important to the process of becoming a career programmer, the ability to be flexible. Much of my time spent learning to program has consisted of how to do things, but never why or when we should do them. Sometimes it feels like I have a fairly full toolbox, but I don’t have the required knowledge to apply my tools in ways they weren’t explained to me in. I’ll admit, this is more of a personal failing I feel, but the point still stands. 


Chapter 1 and the introductory paragraphs to Chapter 4 really stood out to me the most, as Chapter 1 goes into detail about what it means to be a craftsman, and an apprentice. It highlights the experiences one might go through, and what one might expect to get out of an apprenticeship, but the most compelling out of that chapter was the focus on the need to continue learning. In order to be a good apprentice, and get anything meaningful out of the experience, it takes a want to learn how to become a master, and the willingness to continue to developing your craft, and focusing on how you can improve your mindset and workflow. Chapter 4 stood out to me with it’s anecdote about Dave’s experience with certifications, and his discarding of them as he learned from a group of Perl hackers. Not only was it quite amusing, it highlights ths importance of a flexible mindset. None of us are ever done learning, and in order to ever become a master, you cannot be satisfied with jist maintaining the status quo.

 

Overall I found the selected chapters to be genuinely pretty inspiring, and it put into perspective where my head is at in terms of my software development journey, and how I might go about improving them. This might be optimistic, but this book might end up being one I read in my off time, a rare feat for an assigned reading of this nature.

 

 

 

From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.

Software Craftsmanship

 Hello!

 I’ve had a bit of assigned reading to do for my capstone course, ans as such, I thought it would go the way of most readings of that ilk; incredibly dry and ungodly boring. But surprisingly I had a pretty good time with Apprenticeship Patterns by Dave Hoover and Adewale Oshineye. 


The text captures something that I find to be incredibly important to the process of becoming a career programmer, the ability to be flexible. Much of my time spent learning to program has consisted of how to do things, but never why or when we should do them. Sometimes it feels like I have a fairly full toolbox, but I don’t have the required knowledge to apply my tools in ways they weren’t explained to me in. I’ll admit, this is more of a personal failing I feel, but the point still stands. 


Chapter 1 and the introductory paragraphs to Chapter 4 really stood out to me the most, as Chapter 1 goes into detail about what it means to be a craftsman, and an apprentice. It highlights the experiences one might go through, and what one might expect to get out of an apprenticeship, but the most compelling out of that chapter was the focus on the need to continue learning. In order to be a good apprentice, and get anything meaningful out of the experience, it takes a want to learn how to become a master, and the willingness to continue to developing your craft, and focusing on how you can improve your mindset and workflow. Chapter 4 stood out to me with it’s anecdote about Dave’s experience with certifications, and his discarding of them as he learned from a group of Perl hackers. Not only was it quite amusing, it highlights ths importance of a flexible mindset. None of us are ever done learning, and in order to ever become a master, you cannot be satisfied with jist maintaining the status quo.

 

Overall I found the selected chapters to be genuinely pretty inspiring, and it put into perspective where my head is at in terms of my software development journey, and how I might go about improving them. This might be optimistic, but this book might end up being one I read in my off time, a rare feat for an assigned reading of this nature.

 

 

 

From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.

Test Test Test Redux

 Hello!

 

I’m still Camille and this is still my blog, I guess!

 

CS443

From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.

Test Test Test Redux

 Hello!

 

I’m still Camille and this is still my blog, I guess!

 

CS443

From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.

Test Test Test Redux

 Hello!

 

I’m still Camille and this is still my blog, I guess!

 

CS443

From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.

Always Improving Software

In this post, I’ll be discussing my thoughts primarily on Chapter 1 of Apprenticeship Patterns, a book I had to read parts of for another class. I really like the idea of being a “Software Apprentice,” as I think it is a good representation of the attitude I have adopted over the years. I’ve always viewed myself as someone who is constantly learning and evolving in this field, and the apprenticeship model seems to align perfectly with that. It’s not about arriving at some endpoint but about growing, making mistakes, and improving.

What stood out to me the most was the idea of viewing the development process as a journey, not a destination. Chapter 1 introduces the concept of “Software Craftsmanship” as more than just technical skill, but also as a mindset of continuous learning. This was particularly thought-provoking because I think there’s a tendency, especially early in our careers, to think of coding as a task to be completed or a skill to be mastered and then moved beyond while in pursuit of some computer science career. However, the idea that becoming a Software Craftsman is an ongoing process—a commitment to constant improvement and a mindset that thrives on learning—is something that I think is a better description. It shifted my perspective on what it means to be good at coding- it’s not enough to know how to do something today, it’s about always finding a way to improve your code in the future.

In the past, specifically in my career, I’ve often gotten caught up in the day-to-day rush of just getting whatever piece of code done. I’ve rushed to get things coded, with the focus being on completing projects rather than developing deeper expertise or refining my approach to coding. After reading this chapter, I think I’m more likely to focus on the long-term value of writing quality code and the importance of standards. It’s not just about writing code that works; it’s about writing code that lasts, is readable, and contributes to a more sustainable project. I’m going to start to approach my coding tasks with a deeper goal, rather than rushing through them for the sake of completion.

I think this is particularly applicable to Software Quality Assurance and Testing because QA is, in essence, a form of ensuring that our code is always improving. Not only do we need to find a balance between constantly improving before release and actually releasing, but even after releases, we still need to be looking for future requirements and improvements. There is no end in sight for software testing, ever. I think this constant forward motion, driven by constantly increasing requirements, is inseparable from the idea of being a software apprentice.

From the blog Mr. Lancer 987's Blog by Mr. Lancer 987 and used with permission of the author. All other rights reserved by the author.

Always Improving Software

In this post, I’ll be discussing my thoughts primarily on Chapter 1 of Apprenticeship Patterns, a book I had to read parts of for another class. I really like the idea of being a “Software Apprentice,” as I think it is a good representation of the attitude I have adopted over the years. I’ve always viewed myself as someone who is constantly learning and evolving in this field, and the apprenticeship model seems to align perfectly with that. It’s not about arriving at some endpoint but about growing, making mistakes, and improving.

What stood out to me the most was the idea of viewing the development process as a journey, not a destination. Chapter 1 introduces the concept of “Software Craftsmanship” as more than just technical skill, but also as a mindset of continuous learning. This was particularly thought-provoking because I think there’s a tendency, especially early in our careers, to think of coding as a task to be completed or a skill to be mastered and then moved beyond while in pursuit of some computer science career. However, the idea that becoming a Software Craftsman is an ongoing process—a commitment to constant improvement and a mindset that thrives on learning—is something that I think is a better description. It shifted my perspective on what it means to be good at coding- it’s not enough to know how to do something today, it’s about always finding a way to improve your code in the future.

In the past, specifically in my career, I’ve often gotten caught up in the day-to-day rush of just getting whatever piece of code done. I’ve rushed to get things coded, with the focus being on completing projects rather than developing deeper expertise or refining my approach to coding. After reading this chapter, I think I’m more likely to focus on the long-term value of writing quality code and the importance of standards. It’s not just about writing code that works; it’s about writing code that lasts, is readable, and contributes to a more sustainable project. I’m going to start to approach my coding tasks with a deeper goal, rather than rushing through them for the sake of completion.

I think this is particularly applicable to Software Quality Assurance and Testing because QA is, in essence, a form of ensuring that our code is always improving. Not only do we need to find a balance between constantly improving before release and actually releasing, but even after releases, we still need to be looking for future requirements and improvements. There is no end in sight for software testing, ever. I think this constant forward motion, driven by constantly increasing requirements, is inseparable from the idea of being a software apprentice.

From the blog Mr. Lancer 987's Blog by Mr. Lancer 987 and used with permission of the author. All other rights reserved by the author.

Always Improving Software

In this post, I’ll be discussing my thoughts primarily on Chapter 1 of Apprenticeship Patterns, a book I had to read parts of for another class. I really like the idea of being a “Software Apprentice,” as I think it is a good representation of the attitude I have adopted over the years. I’ve always viewed myself as someone who is constantly learning and evolving in this field, and the apprenticeship model seems to align perfectly with that. It’s not about arriving at some endpoint but about growing, making mistakes, and improving.

What stood out to me the most was the idea of viewing the development process as a journey, not a destination. Chapter 1 introduces the concept of “Software Craftsmanship” as more than just technical skill, but also as a mindset of continuous learning. This was particularly thought-provoking because I think there’s a tendency, especially early in our careers, to think of coding as a task to be completed or a skill to be mastered and then moved beyond while in pursuit of some computer science career. However, the idea that becoming a Software Craftsman is an ongoing process—a commitment to constant improvement and a mindset that thrives on learning—is something that I think is a better description. It shifted my perspective on what it means to be good at coding- it’s not enough to know how to do something today, it’s about always finding a way to improve your code in the future.

In the past, specifically in my career, I’ve often gotten caught up in the day-to-day rush of just getting whatever piece of code done. I’ve rushed to get things coded, with the focus being on completing projects rather than developing deeper expertise or refining my approach to coding. After reading this chapter, I think I’m more likely to focus on the long-term value of writing quality code and the importance of standards. It’s not just about writing code that works; it’s about writing code that lasts, is readable, and contributes to a more sustainable project. I’m going to start to approach my coding tasks with a deeper goal, rather than rushing through them for the sake of completion.

I think this is particularly applicable to Software Quality Assurance and Testing because QA is, in essence, a form of ensuring that our code is always improving. Not only do we need to find a balance between constantly improving before release and actually releasing, but even after releases, we still need to be looking for future requirements and improvements. There is no end in sight for software testing, ever. I think this constant forward motion, driven by constantly increasing requirements, is inseparable from the idea of being a software apprentice.

From the blog Mr. Lancer 987's Blog by Mr. Lancer 987 and used with permission of the author. All other rights reserved by the author.