Category Archives: CS-448

expose your ignorance (apprenticeship patterns)

Essentially, be willing to admit that you have gaps in your knowledge when you do, and be able to ask those around you for help when you really need it. The authors make a point to mention that this is relatively difficult for many people because of the self-imposed expectation of being omni-competent (that is, always competent) and when you aren’t competent, considering it a failure. This is definitely a difficult mindset to get past, but it is necessary for growth. Otherwise you remain stagnant in the things that you know and never challenge yourself.

This pattern is good. It’s true that in order to learn things, we often have to turn to those who have more experience and learn from them. It also gives a good way of asking productive questions rather than the common (and not very useful at all) “how do I make this work?” I find that in order to really understand what’s going on, you have to go to the root of the thing you’re having an issue with and work up from there. Otherwise, for example, you’re just writing code and you don’t even know what it really does, just that it works. This is one of the main reasons I get bothered whenever anyone has asked me to just show them my code in the past, not only does it not really help them learn anything most of them time, there’s a good chance the code I wrote ends up being copied directly. I don’t really care about getting credit for the stuff I wrote all that much, but it’s moreso about the precedent it sets.

Another interesting thing about this pattern is the idea of being willing to step out of your comfort zone to other fields and technology to better your versatiliy. I think this is truly important, especially when working in the tech sphere. Things change very quickly, and to not adapt means to remain with legacy components which are less efficient and less secure as a whole. This stagnation spreads to everything in the ‘system’ so to speak, and the results affect everyone who holds a stake in what your group does.

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

Apprenticeship Patterns Introductions

  The introduction chapter for the Apprenticeship patterns book gives a definition and understanding of not only the term ‘software craftsmanship’ but it also explains the stages of ones development within the software development career path. These stages can be attributed too many other careers but the apprenticeship patterns contained in this text are meant to help guide an apprentice software engineer to become a journeyman and later a master.

  Chapter Two ‘Emptying the Cup’ contains apprenticeship patterns which are meant to help when initially taking on an apprenticeship and the learning curve you will face when having to “relearn” how to do a task that you may already do in one way in order to learn another way to complete the task. This is very important as you must be open to learning different ways to do things even if a different way may be less efficient.

  Chapter Three ‘Walking The long Road’ refers to the everlasting cycle of learning that is ahead of an apprentice and the importance of learning new techniques and strategies continuously in order to increase your skill and understanding which will remain important even after exiting the apprentice ‘phase’ of your career.

  Chapter Four ‘Accurate Self-Assessment’ is meant to make you realize that you have not finished your “walk on the long road” and encourage you to realize and learn from flaws in your own work or seek mentorship from your more experienced counterparts.

  Chapter Five ‘Perpetual Learning’ contains patterns that you are meant to use for your entire career regarding both learning an communication but they are vital to success early in your journey due to the emphasis on expanding upon your own abilities and your knowledge in order to expand your career.

  Chapter Six ‘Construct Your Curriculum’ refers to the necessity of continued learning once again and the need for an apprentice to be responsible and dedicate some of their own time to the expansion of knowledge even though the reading and research required will not be ‘assigned’ but it is still important and necessary when it comes to your own development and success.

  All Six of the chapters included in the Apprenticeship Patterns book are very important for your own development and the development of your career. Many of these patterns are things that can be disregarded by people while learning but it is important to remember you started somewhere and it is up to you to ensure you develop well professionally and you utilize your counterparts as mentors and examples.

  My thoughts on the reading are that I believe many people including myself forget the significance of looking as different perspectives. The different patterns in this reading provide a whole new perspective in which I agree with the majority of the content and find it rather though provoking. In my opinion chapters four and six would be the most important because truly nobody can assess you more accurately than yourself in order too better yourself and constructing a curriculum is something that can in a sense guarantee your continued learning throughout your life as you assign things to yourself and hold yourself accountable.

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

The Deep End

The Deep End pattern is about growing your skills and boosting your confidence. It’s also about challenging yourself with bigger things. Growth is significant, it’s about taking big risks and doing things you don’t usually reach out for. Taking risks may be scary but playing it safe doesn’t help you improve or leave you unsatisfied. The Deep End pattern means that people should take on big projects or high-profile roles even when they don’t feel ready to. The importance of finding mentors, building feedback loops, and seeking help when needed. People should want to take on challenges, even if there’s a chance of failure, can open up doors and opportunities that playing it safe never will.That pattern knows that there are risks involved but those risks can cause growth by being in a scary situation and getting passed your comfort zone.

I found the pattern useful because it’s supposed to not only build your skills but also build your confidence. Boosting your confidence is a skill that some people don’t think is necessary but it can open up so many opportunities. Just by being brave, taking risks, and learning from failures taking those experiences can help people shape a successful future. I would say that pattern has changed my way of working because usually, I want to take the safe side and not take any risks doing that would just keep me from fulfilling my full potential. Challenging my self will only better myself and the way I work. I don’t disagree with The Deep End pattern because it has the right idea of doing something risky so you can grow instead of being comfortable with where you are now. This pattern is about bettering yourself, learn from any failures you had in the past, and grow from them. Don’t let anything hold you back from shaping your future keep trying to succeed. This is a pattern I will use moving forward so it can not only help me become more successful by taking risks but also build my confidence so i’m not scared to take any opportunities ahead of me.

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

Apprenticeship Patterns

As I read through the first chapter of Apprenticeship Patterns by Dave Hoover, Adewale Oshineye the idea of treating software development as a craft makes a lot of sense. I, myself, feel like an apprentice in college seeking to learn from both my professors and peers. Learning won’t stop at graduation as the more knowledge I gain in this field, the more knowledge I realize I am lacking. 

The world of software development is vast and ever-growing, requiring developers to be agile and never be complacent with their level of skills and knowledge. This is something I have always believed.  I however, rarely practice this in my spare time, but now I seek to improve this skill. Chapter 5 relates to apprenticeship patterns for perpetual learning and the notion that you should never be complacent with their level of skill. As I am well aware that my level of skill and knowledge is nowhere near a level where I could even consider being complacent, it is important to start these patterns early so that I remain in the same mindset later down my career. 

The book suggests these patterns should “strike you as unoriginal” and therefore be familiar to us, either by seeing others following these patterns or by us doing it ourselves. Some of these patterns are immediately familiar to me, such as breakable toys, the white belt and your first language, as they are patterns I follow regularly. Other patterns, such as find mentors, read constantly, concrete skills, and many others, are patterns that are familiar but practiced less. 

I think the most interesting concept this book has to offer is simple, yet typically overrated and overlooked; the first thing anyone needs to learn is how to learn. In doing so we discover these patterns, even without knowing it. The more patterns we are able to identify and apply in our work, the more efficient we can learn and grow.

 While there was nothing I disagreed with in the reading, there are patterns that I immediately know I will have a hard time with. Chapter 6 focuses on the importance of reading and curriculum, which is something I personally have never been strong at. Hopefully, with the help of these patterns I will be able to tackle the challenge of learning through reading.

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

Apprenticeship Patterns Introductions

After reading the apprenticeship pattern introduction and each of the chapter introductions, I found myself intrigued by the advice offered to newcomers entering the software industry. It fascinated me how the medieval craftsman model can be applied, and the concept of “seasons” of expertise can aptly describe the stages of one’s software development journey. I had never viewed the different stages of an individual’s career in the software industry as distinguished apprentices, journeymen, and masters. However, after reading the explanation for each stage/season, it makes a lot of sense and appears more applicable to the field than I had previously thought.

While not being identical to say a blacksmithing apprentice, individuals who are educated or have little experience within the industry are still apprentices with much to learn in the ever-expanding and diversifying field of computing. Understanding and recognizing this could potentially go a long way in aiding one’s development into becoming a journeyman and, eventually, a master craftsman.

I also found it interesting how Pete McBreen offers a specific distinction, he views being a Software Craftsman or Engineer as two mutually exclusive things when, from my perspective (and pointed out later in the introduction), the line between engineer and craftsman remains quite blurred. It is difficult to dictate exactly where being a software engineer or craftsman starts and/or ends.

While briefly looking over each chapter and reading their introductions, I felt reassured since I had encountered some of the advice I was reading before, reinforcing that previous mentors were knowledgeable in what they taught me. I was also struck with a feeling of my eyes being opened to new ideas or practices that I could employ to further my journey and hopefully help others in the future who may view me as a mentor, aiding them in their learning journey.

A particular part of the introduction (chapter 1) resonated with me deeply. Carol Dweck is quoted stating “effort is what makes you smart or talented,” a value I hold dear. I maintain the belief that anyone has the potential to excel in anything, but only those who put a lot of effort into learning and building their expertise are considered “smart” or “talented” in any field/profession.

Overall, I am looking forward to delving deeper into the good practices that will aid in furthering my learning and personal development, as well as contributing to the development of my peers, by being equipped with tools to help everyone succeed.

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

Embracing a Beginner’s Mindset in Software Development: The White Belt Pattern

In the journey of continuous growth as a software developer, encountering plateaus is inevitable. It’s at these moments we must embrace “The White Belt” pattern from “Apprenticeship Patterns” by Dave Hoover and Adewale Oshineye. This pattern advises us to approach new learning opportunities with a beginner’s mindset, setting aside our deep-seated knowledge and expertise to foster new growth. I feel this applies to my current situation as I approach the end of school, I see an overwhelming amount on info and techniques to learn and need guidance on how to best absorb that.

The White Belt in Practice

The essence of the White Belt pattern is about humility and openness to learning. It challenges us to step back from our comfort zones, where we are recognized for our expertise, and dive into unfamiliar territories with the eagerness of a novice. This could mean learning a new programming language, adopting a different development methodology, or exploring a new technology stack.

Personal Reflection

What intrigued me about the White Belt pattern is its universal applicability. It’s a reminder that in the fast-paced tech industry, being comfortable with discomfort is a virtue. The pattern has reshaped my perspective on professional development, emphasizing that the journey is as significant as the destination.

Learning to unlearn has been a thought-provoking concept. It suggests that to truly master new skills or technologies, one must be willing to set aside preconceptions and past experiences. This approach not only accelerates learning but also fosters innovation and creativity.

Conclusion

The White Belt pattern has reinforced my belief in the importance of maintaining a learner’s mindset throughout my career. It’s a powerful reminder that to advance and innovate, we must be willing to embrace the fundamentals again, viewing each learning opportunity as a fresh start.

As I continue my journey in software development, I’m inspired to apply this pattern, seeking out challenges that force me out of my comfort zone, and approaching them with curiosity and openness. The freedom to be ‘foolish’ in the pursuit of knowledge is, paradoxically, a wise path to mastery and innovation. This applies very well to my current personal projects where I am working hard to learn new things like Flask app’s, Nginx, web databases, and API calls.

From the blog CS@Worcester – Abe's Programming Blog by Abraham Passmore and used with permission of the author. All other rights reserved by the author.

Nurture Your Passion

In this week’s blog post, I will be discussing the “Nurture Your Passion” pattern discussed in chapter 3 of “Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman” by Dave Hoover and Adewale Oshineye. This week, I chose this topic for my blog post because I often worry about losing my passion for software development. This pattern discussed in the book has helped a lot with this particular anxiety.

The first part of this pattern mentions some everyday work environment issues that can break down your passion for your work. “You might be faced with demoralizing corporate hierarchies, project death marches, abusive managers, or cynical colleagues.” While I have worried about the inevitability of dealing with corporate hierarchies and toxic coworkers, I haven’t considered a work environment called a “project death march.” This initial part of the section did not alleviate my anxieties. However, as this section continues, my concerns are inflamed and relieved.

The authors described project death marches as the most damaging of the hostile conditions mentioned, and as they go into detail as to what a project death march entails, I agree with them. “It saps your time and energy, preventing you from taking any significant actions to protect your passion as more important issues like personal health and strained relations at home demand your attention.” This isn’t very good, mainly because it affects your passion, health, and relationships with your loved ones. Thankfully, the authors mention some ways to mitigate the harm done by this and other toxic traits a work environment may suffer from.

One of these examples is setting boundaries for what you are willing to put up with in a work environment. “This might mean you leave work while the rest of the team stays late, that you walk out of a meeting that has become abusive, steer a cynical conversation toward constructive topics, or refuse to distribute code that doesn’t meet your minimum standards.” While I certainly don’t have the confidence to stand up and leave a meeting or not stay late with my coworkers, I feel that I can steer conversations to a more positive topic and only distribute code that meets my standards. Reading this section also made me realize that I need to work on my confidence in standing up for myself and not be afraid to take a break and come back to something with fresh eyes.

From the blog CS@Worcester – P. McManus Worcester State CS Blog by patrickmcmanus1 and used with permission of the author. All other rights reserved by the author.

Indiv. Apprenticeship Pattern : The White Belt

In CS448, we’ve begun independently reading Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hoover and Adewale Oshineye and looking deeper into the patterns discussed in the first six chapters. The first Apprenticeship Pattern I focused on was the first described in Chapter 2 – the “White Belt”. This pattern suggests taking a beginner’s mindset with an emphasis on humility and open-mindedness when learning new things or otherwise addressing professional development. 

This pattern’s Context statement grabbed my attention because it felt very relatable as a senior with a strong understanding of Java who is looking at delving deeper into other languages like C++ and JavaScript. While I have a solid grasp on Java and general programming concepts, I have a lot to learn and really at a beginner level in other languages as I need to relearn basics like proper syntax as well as other concepts like memory management. To this point, one aspect of the White Belt pattern involves admitting ignorance – there’s much more than I don’t even know I don’t know yet. But, I also find this to be encouraging – I also don’t know how much I can possibly learn and gain professionally by taking this perspective in picking up skills.

Another concept that’s brought up and discussed with the White Belt pattern is the notion that particularly when learning and strengthening new skills, it is going to take more time to do tasks that would otherwise be simple to us in our first language – but that is okay and to be expected. This can be a point of frustration for me personally, so it was nice to see this acknowledged and helpful as I can address these tasks in a more patient headspace prepared for slower speed. Furthermore, the long-term benefit to struggling through this slow period usually pays off – the authors eloquently put it as “losing some productivity in the short term in order to take a leap forward once you master the new approach.”

Embracing humility, admitting ignorance, and actively seeking to understand challenges are key components of this pattern that I also try to live life by. So, the “White Belt” individual apprenticeship pattern was very insightful and impactful to read about and a great introductory pattern to more soon to come. It seems most applicable to situations where I/my team will be learning or enhancing skills, particularly when working with others and in environments with more experience to learn from. As a soon-to-be graduate, I look forward to keeping this pattern in mind as I enter the professional field.

Sources:
Hoover, Dave, and Adewale Oshineye. “Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman.” O’Reilly Media, 2009.

From the blog CS@Worcester – Tech. Worth Talking About by jelbirt and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns

I thought being open-minded when you’re learning something new was useful from the reading. I thought it was interesting because a lot of people don’t like change and would prefer to stick with what they already know but when it comes to being an apprentice you need to have an open mind when learning new things so you can broaden your experiences and learn not to get too comfortable with certain skills. I know some people would disagree about not getting comfortable with one skill because they probably believe that one skill is more important than any skill but those other skills could not only improve the skill that they mastered but also teach them something new. Chapter 4 is a great example of being really good at something and then realizing that there’s always more to discover. This reading has caused me to change the way I learn things. I don’t need to learn and master one skill set I should expand my horizons and not get comfortable with one skill. The reading also talks about overcoming challenges and learning from them, that’s how you improve your skills instead of just getting upset and giving up. If you are too comfortable with what you’re working on you won’t have any motivation to push yourself to learn more. 

I don’t disagree with anything from the reading because it’s only telling people to stay curious, don’t be afraid of any challenges, and keep trying to improve their skills. Those things are important when being a new apprentice, they help you become more successful and not limit yourself. The chapters that stood out to me were chapters 2 and 3 because it was very detailed about learning new skills and being confused as part of the journey as well as being good at one skill doesn’t mean you shouldn’t stop learning new things. Those chapters are about pushing yourself and not staying in just one lane, I think that is why I like those two chapters so much because I’m used to just learning one thing and sticking with it but being open-minded can do so much more for me.

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

Software Craftsmanship Odyssey: A Dive into “Apprenticeship Patterns”

Today, let’s chat about a riveting adventure I recently embarked on within the pages of “Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman” by Dave Hoover and Adewale Oshineye, Chapter 1 sets the stage for a profound exploration into the world of software craftsmanship. The chapter introduces the concept of being a Software Craftsman and outlines the three pivotal stages of becoming one: The Breakthrough, The Apprenticeship, and The Mastery.

What struck me most in Chapter 1 was the authors’ emphasis on the continuous learning aspect of software development. It’s not merely a job but a craft that demands dedication, deliberate practice, and a commitment to constant improvement. The concept of transitioning from a novice to a master craftsman resonated with me, reinforcing the idea that the journey is ongoing, and mastery is a perpetual pursuit.

Moving forward into the introductions of Chapters 2-6, each chapter offers a glimpse into the patterns that follow, providing insights into various aspects of software craftsmanship. Chapter 2 shares a thought-provoking story about a Zen master and a young philosopher, emphasizing the importance of approaching learning with humility and an open mind. This resonated deeply with me, challenging my tendency to rush into learning without acknowledging my own ignorance. It prompted a change in my perspective, encouraging me to embrace the learning journey with a more receptive mindset.

The subsequent chapters further delve into the multifaceted nature of software development. Chapters 3 to 6 touch on topics like constructing a personalized curriculum, practicing deliberately, recording what you learn, and sharing knowledge with the community. Chapter 3, “Walking The Long Road,” caught my attention, advocating for viewing software development as a journey rather than a destination. It prompted reflection on setting meaningful goals and overcoming challenges in the ongoing learning process.

The reading has reinforced my belief in the importance of humility in learning and the dynamic, ever-evolving nature of the software development field. It has encouraged me to adopt a more deliberate and open-minded approach to my learning journey. While I don’t necessarily disagree with any aspects of the reading, it has sparked a shift in how I perceive the learning process, urging me to appreciate the journey as much as the destination.

As I progress in this course, the chapters on constructing a curriculum, deliberate practice, and sharing knowledge with the community seem particularly relevant to my growth as a software developer. They align with my aspirations to continuously improve, contribute meaningfully to the community, and approach learning with an open and humble mindset. The insights gained from these readings will undoubtedly shape my approach to software development, guiding me on the path to becoming a Software Craftsman.

From the blog CS@Worcester – Hieu Tran Blog by Trung Hiếu and used with permission of the author. All other rights reserved by the author.