Category Archives: CS-448

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.

Discovering the Core: “Your First Language” Week-1

A Dive into Mastery:

“Your First Language,” a pattern from “Apprenticeship Patterns” by Dave Hoover and Adewale Oshineye, champions the concept of mastering one programming language thoroughly at the start of a software development career. This pattern isn’t just about learning to code; it’s about immersing oneself deeply in the language’s syntax, idioms, and, importantly, its community and culture. Mastery of one language is posited as a stepping stone to understanding broader programming concepts, making it easier to adapt to other languages in the future.

Personal Resonance:

When I first encountered this pattern, it felt like a lightbulb moment. The tech world often feels like a race to learn as many languages as possible. “Your First Language” counters this, advocating depth over breadth. This approach aligns with my belief in building a strong foundation before branching out. It’s like learning to play one musical instrument well before learning another; the skills and disciplines you acquire often translate seamlessly.

The Intriguing Depth:

What captivated me most was the pattern’s emphasis on engaging with the language’s community. Programming is often seen as a solitary activity, but this pattern reminds us of the collaborative and communal aspects of coding. Participating in forums, contributing to open-source projects, or attending language-specific meetups can offer insights that go beyond syntax and function.

Redefining My Professional Approach:

This pattern has subtly shifted how I view my career development. Instead of being a jack-of-all-trades, I now aspire to be a master of one (at least initially). This doesn’t mean I’ll shun other languages, but it does mean I’ll commit myself fully to one language before moving to the next. This depth-first approach, I believe, will make me a more competent and confident developer in the long run.

A Balanced Perspective:

While I align with the core message of the pattern, I also recognize the importance of having a basic understanding of multiple languages, especially in a field as diverse as software development. Thus, while I advocate for depth, I also see the value in breadth. Being well-versed in one language shouldn’t mean being oblivious to others.

In conclusion, “Your First Language” is more than just a learning strategy; it’s a philosophy of growth and mastery. By embedding myself deeply in one language, I’m not just learning to code; I’m learning to think and solve problems like a seasoned developer. This pattern, I believe, is essential for anyone beginning their journey in software development.

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

Apprenticeship Patterns Introductions

I enjoyed how the reading introduced the values of software craftsmanship. The bullet point that caught my interest was from Atul Gawande. It mentioned how you always need to adapt and change based on the feedback you get. I thought that the fact that Gawande refers to this as a willingness to “recognize the inadequacies in what you do and to seek out solutions” (Better, p. 257) was interesting. I think I tend to get caught up in my inadequacies and don’t think about finding solutions right away. I think that quote encapsulates what it means to be an apprentice, as described in the text. I think having bullet points like these in the beginning was very useful in aiding in understanding.

One of the chapters that I found to be more relevant is the second chapter. It not only discussed the beginning of your journey and why you should start out learning one language very well but it also touched on patterns that happen later in your journey. I enjoyed reading the section that mentioned why you should find a master in your target language to help you learn because the nuances of different languages are best taught through oral tradition. I also found the part about why you should find an opportunity to unlearn something. The example of taking a program you have written in one programming paradigm and then implementing it in a different language that uses a different one was great. However, I don’t agree with phrasing it as “unlearning” what you know. It just seems like learning another language to me.  While learning Java and C I had to do research to find solutions to problems at times. I ended up finding solutions to the problems in languages I didn’t know and worked to translate them. It gave me exposure to a new language and opened my eyes to how the same issue could be solved in a different way. 

Another chapter that I found to be relevant is the fourth chapter. I think you have to constantly be honest with yourself about your own capabilities and surround yourself with people who you can learn from in order to progress toward your goal. There is always room to grow especially when you’re in an industry that is changing frequently. Chapter four touches on striving to surround yourself with people whom you can learn from and touches on what to do if you can’t find a mentor. These are very real issues that many software engineers will face. I never thought about trying to be the weakest person on my team to help myself learn but after reading this chapter I would like to put it into practice when I can.

From the blog CS@Worcester – Live Laugh Code by Shamarah Ramirez and used with permission of the author. All other rights reserved by the author.