Category Archives: CS-448

Chapter 1-6 Reflection

As I dived into the narrative of the young philosopher and the Zen master, I found myself intrigued by the wise words. The metaphor of the overflowing cup resonated deeply, serving as an important reminder of the importance of humility and receptivity in the pursuit of knowledge. It prompted me to reflect on my own approach to learning, highlighting the need to set aside assumptions and take in new perspectives with an open mind.

The comparison of formal training certificates with the quest for genuine expertise struck a chord with me. Like the protagonist, Dave, I’ve often relied on certifications and accolades as markers of proficiency. However, the reading challenged me to reevaluate this mindset, showing the value of continuous learning and self-improvement over static credentials. It prompted me to shift my focus from external validation to internal growth, recognizing that true mastery is an ongoing journey rather than a destination.

There was a lot to agree on with the reading, but there was also some points that I disagreed with. The claim that small ponds and big fish can show the image of satisfaction seemed too simple to me. I believe that individual growth is complex, influenced by a a large amount of internal and external factors beyond the scope of pond size or fish scale. While exposure to diverse perspectives is undoubtedly valuable, it’s essential to recognize the inherent value of all learning environments, regardless of their perceived size or significance.

In terms of relevance, several chapters stood out to me. “Perpetual Learning” resonated with my desire to accelerate growth and deepen my understanding. The notion of embracing discomfort and seeking out new challenges spoke directly to my aspirations for professional development. Additionally, “Reflect as You Work” and “Create Feedback Loops” struck a chord with me, highlighting the importance of self-assessment and continuous improvement in my journey toward mastery.

In conclusion, the reading served as a step for introspection and growth by making me to reevaluate my approach to software apprenticeship. By embracing humility, fostering curiosity, and prioritizing continuous learning, I aim to navigate the complexities of the field with purpose and strength.

From the blog CS@Worcester – Site Title by rkaranja1002 and used with permission of the author. All other rights reserved by the author.

‘Your First Language’ Pattern

  The ‘Your First Language’ pattern from chapter two consists of the idea that you are just starting out and only have a basic understanding of one or maybe even two languages. The problem which is presented is that you as an apprentice believe that your job depends on being able to produce the same quality of work in a specific language that the others around you can even if they may have more experience using said language or that getting any job will depend on your knowledge of one particular language. Then the solution presented it to decide on a ‘first language’ which you will dedicate to familiarize yourself with and when trying to solve a problem you will use this language and further your understanding of its inner workings. Then if an employer requires you to use a specific language you approach it by taking small steps at first and then exponentially grow your steps as you gain more knowledge in order to efficiently learn another language. This pattern encourages you to seek help from experienced friends in order to quickly progress through a problem as long as you do not grow a reliance on them for all the answers. 

  I have a great appreciation for this pattern as I feel it is something that many students and or apprentices may struggle with. Initial thoughts on a first language can be intimidating and heavily influenced by the schooling you go through if any or even others opinions online if you do not pursue technical training initially. You put a lot of consideration into a choice like this and it is important but this pattern highlights the thought that many people may have that they must fully master a language in order to be ‘employable’ in that said language when realistically even people that are considered to be ‘masters’ of a specific language are still learning. What really matters is that you take the steps in your first language and learn from the experience so that you can adjust the steps to learn other languages in the future as your first language is basically your jumpstart in the world of programming languages.

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 White Belt – Ignorance and the Journey of Learning

In a nutshell, “The White Belt” encourages us to embrace our ignorance and adopt a beginner’s mindset. It’s like entering a martial arts dojo for the first time – a white belt symbolizes a blank canvas, ready to absorb the knowledge and skills the journey offers.

Summary of The White Belt:

  1. Ignorance is Okay: The pattern emphasizes that it’s perfectly fine not to know everything. Acknowledging our ignorance is the first step towards real learning.
  2. Focus on Learning: Instead of trying to be a jack-of-all-trades, the pattern advises us to focus on learning one thing well. Mastering a single concept or technology sets the foundation for broader expertise.
  3. Practice, Practice, Practice: Hands-on experience is key. Whether it’s coding exercises or real-world applications, practice is the bridge between theory and mastery.
  4. Seek Feedback: Actively seek feedback from experienced developers. Constructive criticism is the secret sauce for improvement.
  5. Expose Your Ignorance: Don’t be afraid to admit what you don’t know. Being open about your limitations opens the door to learning from others.

My Reaction:

What struck me most about “The White Belt” is its emphasis on humility and curiosity. In a world where the pressure to know everything can be overwhelming, this pattern grants permission to be a novice. It made me reflect on how, as a student entering the vast field of software development, it’s okay not to have all the answers.

The call to focus on learning one thing well was a game-changer for me. In a world filled with shiny new technologies, I now appreciate the value of depth over breadth. It’s like building a strong foundation before constructing the skyscraper of knowledge.

This pattern has reshaped my perspective on learning. It’s not just about accumulating information but immersing oneself in the process. Admitting my ignorance, seeking feedback, and practicing relentlessly are now my guiding principles.

In conclusion, “The White Belt” is not just a pattern; it’s a mindset. It has ignited a spark within me, encouraging me to embrace the journey of learning with open arms and a white belt.

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.

CS-448 Week 1

This week I learned about one of several apprenticeship patterns from the “Apprenticeship Patterns” book by Dave Hoover and Adewale Oshineye, the White Belt. The purpose of this is to embrace the state of being a beginner, with no pressure of being an expert. It also states that every step should be embraced with an open mind and to set your previous knowledge aside when taking on new situations. The name “White Belt” comes from the prestige rankings of karate belts, with the white belt being for beginners. As a white belt, you do not carry any previous knowledge about the situation and are forced to learn the way, rather than black belts who know the way. As a programmer, learning a language and becoming proficient in that language is a great feeling. This can create a stubbornness in the person to be unwilling to go through the learning process again in hopes of not making a fool of themselves again when making a mistake.

While these principles are referenced in terms of computer science, they can be applied in general situations as well, especially the White Belt pattern. The well-known saying “you learn something new every day” applies to this pattern as it states that everyone still has room to improve/learn and no one knows everything, even if you feel like you do. This is important to remember when attacking new situations so that you do not limit yourself to possibilities you may not know about. It is something that people might not feel comfortable with at first due to the learning curve that comes with it, but there is always something to take away from failing the first time.

I believe this will be an important principle to follow when going into the professional world. As a software developer, there are a lot of different programming languages that can be learned with their own benefits. While some programming languages are similar, others can be harder to learn with syntax that may not align with each other. Knowing more languages allows for more opportunities when looking for a job. However, it is not easy to learn multiple languages especially when they look completely different. This is where, as a leaner, you must unlearn what you already learn.

2. Emptying the Cup | Apprenticeship Patterns (oreilly.com)

From the blog CS@Worcester – Jason Lee Computer Science Blog by jlee3811 and used with permission of the author. All other rights reserved by the author.

CS448 – LibreFoodPantry and Thea’s Pantry

It was cool to navigate the LibreFoodPantry website and get a better understanding of their company ahead of helping with website development. While exploring their page, I came across the agile values and principles and the Twelve Principles of Agile Software. One of the principles I found interesting was the embracement of changing requirements, even late in development. This is to provide continuous change and adaptations to the product for the customer’s competitive advantage. I chose to write about this because the typical thought process is to stay the course and follow the original plan. However, for an ever changing product market, it is more valuable to welcome the change of requirements rather than staying the course of the original plan.

Thea’s Pantry has a lot of valuable information that is organized in a simple manner that makes it easy for users to navigate. The “User Stories” was a helpful page as it gives insight as to how the process works for a specific cause. For example, they list the steps for when a guest visits the pantry and the different possible outcomes that can happen from it. I chose to write about this because I found it very valuable to get a full understanding of the different types of user interactions that will occur with the website. This will help in the development process as there will be more insight with the website and give a better grasp on the best way to fix the problems and enhance the user experience.

https://librefoodpantry.org/

Developer/UserStories.md · spring2024-updates · LibreFoodPantry / Client Solutions / Theas Pantry / Documentation · GitLab

From the blog CS@Worcester – Jason Lee Computer Science Blog by jlee3811 and used with permission of the author. All other rights reserved by the author.

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.