Category Archives: CS-448

Expose Your Ignorance – Embracing Vulnerability in Learning

So, before we dive into this week’s pattern, I realized I forgot to mention something in my last blog post. I previously wrote about “Confront Your Ignorance” but totally forgot to touch upon its counterpart, “Expose Your Ignorance.”

Summary of Expose Your Ignorance:

“Expose Your Ignorance” is all about embracing vulnerability and being open about what you don’t know. Instead of trying to hide our lack of knowledge, this pattern encourages us to shine a light on it, seeking help and guidance from others.

Key points of the pattern include:

  1. Be Honest About Your Limitations: It’s okay not to know everything. By admitting our ignorance, we create opportunities for learning and growth.
  2. Ask Questions Freely: Don’t be afraid to ask questions, even if they seem basic or obvious. Asking questions is a sign of curiosity and a willingness to learn.
  3. Seek Feedback: Actively seek feedback from peers and mentors. Constructive criticism is essential for improvement, and it’s important to be open to receiving it.
  4. Share Your Journey: Don’t keep your learning journey to yourself. Share your experiences, challenges, and successes with others. Not only does this help you connect with fellow learners, but it also creates a supportive community.

My Reaction:

So, here’s the thing: “Expose Your Ignorance” hits home for me in a big way. As someone who’s always been a bit shy about asking questions or admitting when I don’t know something, this pattern really challenged me to step out of my comfort zone.

One aspect of the pattern that I found particularly thought-provoking is the idea of asking questions freely. It’s easy to feel self-conscious about asking questions, especially when you’re surrounded by people who seem to know it all. However, this pattern reminded me that asking questions is not a sign of weakness but rather a sign of strength – it shows that you’re engaged and eager to learn.

On the flip side, I do have a bit of a disagreement with the pattern when it comes to seeking feedback. While I agree that feedback is important, I think it’s equally important to be discerning about whose feedback you seek. Not all feedback is created equal, and it’s important to seek out mentors and peers whose opinions you trust and respect.

In conclusion, “Expose Your Ignorance” has really shifted my perspective on learning and vulnerability. By embracing my ignorance and being open about what I don’t know, I’m creating opportunities for growth and connection in my journey as 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.

Building Your Toolkit With Concrete Skills

The Concrete Skills pattern emphasizes the importance of acquiring practical, demonstrable, concrete skills in the Software Development field. By possessing the ability to complete simple tasks such as building files and having a familiarity with popular frameworks, can allow for an immediate contribution to any team. Additionally, this pattern highlights the need to go beyond theoretical knowledge and focus on building skills that can immediately be applied from day one on any team.

As I navigate through my path in the software development field, this pattern resonated with me as it aligns with my belief in the value of hands-on experience and practical application. What I found particularly interesting was the challenges that new developers come across when trying to join a new team. I feel as if every new developer goes through this as new teams may be uncertain of what knowledge you possess and what skills you can particularly contribute to the team. These teams may not want to take a chance on someone who is new in the field and may lack certain abilities. Therefore, highlighting the need for new developers to essentially bridge this gap by having concrete skills. This approach can not only enhance employability, but can also create a sense of confidence and credibility within the industry.

After learning more about this pattern, it has reinforced my belief in the value of continuous learning and skill development. It has motivated me to identify what skills are in demand for my desired position on a team, build those skills, and then directly apply them. From this, I can learn what skills I may lack, enhance my knowledge, and then contribute to my team in a positive way. Instead of relying solely on academic credentials or generic experiences, I now understand the importance of creating a portfolio of achievements or accomplishments that can effectively showcase my capabilities to potential employers.

While I completely agree with the message of the pattern, I believe that we should balance concrete skills with other soft skills like communication and adaptability. With that being said, I believe by having an approach that encompasses both technical skills along with interpersonal soft skills can be key in our ever growing field.

In conclusion, the Concrete Skills pattern can serve as a guiding light for aspiring developers. By embracing this pattern, anyone can make powerful contributions to their teams as well as pave a pathway for success in the foreseeable future.

From the blog CS@Worcester – Conner Moniz Blog by connermoniz1 and used with permission of the author. All other rights reserved by the author.

Don’t Trade Programming for Promotions

Even though it may seem counterintuitive, it makes perfect sense. If you take yourself away from the code you will slowly lose your way with your craft. It’s important to continue learning and practicing even as a master craftsman. Higher positions in a company won’t always equate to “better” positions for a craftsman.

It’s a part of “walking the long road” and staying on the path is crucial to one day finishing that path. As it goes for anything in life, you can never truly fail at something until the day you give up and cease trying. If one were to take a position that pulls them away from programming it allows for their long journey to appear shortened, but in reality, they just took one of the many exits along the way onto the intended destination of becoming a journeyman then master craftsman. Along this road, journeyman status can be achieved and one may choose to stop there but personally, I’m striving to eventually arrive at master status in the future.

I also agreed with the pragmatic response offered in how to react if faced with promotions that pull away from programming. If working for a flexible company, ask for better pay or non-traditional technical management roles instead of accepting such a promotion. If working for an inflexible company, it’s better to seek other opportunities elsewhere than to let yourself become lost along the long road.

I also found myself agreeing with the notion that if the rewards offered by employers aren’t appealing, one should counter with some rewards that are better suited for their interests and professional growth. It could be helpful if one were to prepare alternative incentives and rewards before refusing a promotion (if possible) to allow for transparency and understanding of the professional goals of the individual.

I think that overall, to “stay in the trenches” is a great mindset to have. It’s equipped my mind with the knowledge that shines importance on staying within a position that allows me to continue to practice and grow as a craftsman. If I were presented with such an opportunity in the future, I’d remember that it’s more important to continue on my long journey than to let some small miscellaneous gains to pull me away from my end goal of eventually becoming a master craftsman.

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 Humility: “Sweep the Floor” Week-4

Starting from the Ground Up:

“Sweep the Floor,” a pattern from “Apprenticeship Patterns” by Dave Hoover and Adewale Oshineye, underscores the importance of being willing to start with basic, often menial tasks in the early stages of a software development career. This pattern teaches the value of humility and the significance of understanding the foundations of a project or an organization from the ground up. It’s a reminder that every task, no matter how small, contributes to the larger picture and provides valuable learning opportunities.

A Resonant Lesson:

This pattern resonates with me, not from direct professional experience, but from understanding the universal value of humility and starting from the basics in any field. “Sweep the Floor” reflects an essential truth – that true mastery and understanding often begin with the simplest of tasks. It aligns with my belief that to build something significant, one must first understand and respect every small component that contributes to the whole.

The Value of Small Beginnings:

What I find particularly meaningful about this pattern is its focus on the learning opportunities that lie in seemingly insignificant tasks. These initial responsibilities can offer insights into the intricacies of systems, processes, and team dynamics. They provide a unique vantage point to observe and understand the workings of a project or a team.

Influencing Future Work Ethics:

While I am yet to start my professional journey, “Sweep the Floor” influences how I envision my approach to future work. It instills a sense of respect for every aspect of a project, no matter how minor it may seem. This pattern reinforces the idea that a willingness to start with humble tasks and a readiness to learn from them is crucial for long-term growth and success.

Balancing Humility and Aspiration:

I agree with the core message of this pattern but also believe in the importance of aspiring to more complex and challenging roles. Embracing humble beginnings should not deter one from seeking growth and taking on more significant responsibilities when ready. The key is to find a balance between learning from basic tasks and progressively seeking opportunities that challenge and expand one’s skills.

In conclusion, “Sweep the Floor” offers a profound lesson for anyone embarking on a new path, particularly in a field as complex and multifaceted as software development. It’s about embracing the small, seemingly mundane tasks with the understanding that they lay the groundwork for future expertise and achievements. This pattern is a testament to the fact that every great journey begins with simple, humble steps.

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.

‘Sustainable Motivations’ Pattern

The ‘sustainable motivations’ pattern is all about development in the real world and how it can be very challenging as an apprentice to get used to the reality of software development. Development of your own technical skills is very important as you gain more experience working with customers and with a different variety of products. As it is described you may have a different reason which motivates you to continue in your programming job whether it be that you are motivated for the money, motivated to build reputation or motivated by your own enjoyment of programming. THis pattern is a part of the “long road” chapter which is characterized as being a part of the “long road” from apprentice to journeyman to master within the software development field.

The solution to this proposed problem is to not get “trapped by your motivations” and a way to do that is to write down things you are motivated by and be able to separate the things that motivate you from the things that are what others see or think. Motivation is something that is important in any career but software development requires a lot of motivation as times when developing is strenuous or when you have a long project ahead of you.

I find this pattern to be important as I feel that a lot of people struggle to maintain motivation in all careers worldwide, not just software development. So having a strategy to combat low levels of motivation and also try not to burn yourself out by being too motivated is very important. Many situations will present you with long projects where you need to be able to ‘sustain motivation’ this is especially important to software development as many times you will be faced with longer projects which will need your full attention throughout. Reading about this pattern makes me realize that it is ok to not always be fully motivated whether that is because of the length of a project or if it is due to your working environment, you shouldn’t expect to always be fully motivated but you need to be willing to persevere even when a project takes a lot out of you as it will further you within your craft.

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.

CS-448 Apprenticeship Patterns Chapter 1 Introduction

Chapter 1 of the Apprenticeship Patterns textbook introduces the principles and ideals of software craftsmanship. This is an approach to software development that emphasizes the importance of writing high-quality code and delivering value to customers. Some key aspects of software craftsmanship include quality code, continuous learning, collaboration, focus on customers, and testing/quality assurance. Following these key aspects helps promote professionalism, excellence, and pride in one’s work as a software developer. This textbook draw inspiration from several highly skilled individuals that were interviewed for the book. Their values helped give meaning to what it means to be an apprentice, journeyman, or a master.

Apprentices typically have the attitude that there is always a better/smarter/faster way to do what you just did and what you are currently doing. Apprenticeship is the beginning of the journey as a software craftsman. One of the most important things needed is the ability to learn and grow for yourself, and then attention from your peers and experienced developers will follow. As you progress through the stages of craftsmanship, it is important to retain the knowledge and attributes gained from the previous stages. Journeyman will continue to focus on growth in their craft, but also focus on connections between practitioners, within and outside the team. Traditionally, a journeyman will move from master to master and sharing ideas amongst the various teams. They are focused on building a portfolio of applications that demonstrates the progress in their craft. Their responsibilities are wider than those of an apprentice, which means their failure can do more harm. Mastery still retains the previous knowledge of the other stages but adds the focus of moving the industry forward. It involves taking skill and translating it into a way to enhance the skills of others.

Apprenticeship is the fundamental learning method through practical experience under the guidance of a skilled mentor or master practitioner. It involves a structured training program where individuals work alongside experienced professionals to acquire the knowledge, skills, and competencies to help further their learning. Key characteristics of apprenticeship include hands-on learning, mentorship, structured curriculum, progression, certification, and industry alignment. Overall, apprenticeship offers a valuable pathway for individuals to gain practical experience, develop professional skills, and pursue careers in the desired field.

1. Introduction | 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.

Concrete Skills – Building a Solid Foundation

Summary of Concrete Skills:

In the world of software development, it’s easy to get caught up in the latest technologies and trends. However, the Concrete Skills pattern reminds us of the importance of building a solid foundation of fundamental skills.

Key points of the pattern include:

  1. Mastering Fundamentals: Instead of chasing after every shiny new tool or framework, focus on mastering the fundamental skills that underpin software development. This includes things like algorithms, data structures, and design principles.
  2. Practical Application: Don’t just learn theory for the sake of it – apply your knowledge in practical ways. Whether it’s through coding exercises, personal projects, or internships, practical experience is essential for solidifying your skills.
  3. Continuous Improvement: Learning is a lifelong journey, and it’s important to continually strive for improvement. Seek out opportunities for learning and growth, and never become complacent with your current level of skill.
  4. Balanced Learning: While it’s important to focus on concrete skills, don’t neglect other aspects of your development, such as communication skills, teamwork, and domain knowledge.

My Reaction:

The Concrete Skills pattern really struck a chord with me because it reinforced something I’ve been realizing lately: the importance of mastering the basics. In a field that’s constantly evolving, it’s easy to feel overwhelmed by the sheer volume of information out there. However, this pattern reminded me that by focusing on mastering fundamental skills, I can build a strong foundation that will serve me well throughout my career.

One aspect of the pattern that particularly resonated with me is the emphasis on practical application. I’ve always been a hands-on learner, so I appreciate the importance of applying theoretical knowledge in real-world scenarios. Whether it’s through coding challenges or personal projects, I’ve found that practical experience not only reinforces my understanding but also helps me discover new areas for growth.

That being said, I do have a slight disagreement with the pattern when it comes to balancing learning. While I agree that it’s important to focus on concrete skills, I also believe that soft skills such as communication and teamwork are equally important. In today’s collaborative work environment, being able to effectively communicate and collaborate with others is essential for success.

In conclusion, the Concrete Skills pattern has reinforced my belief in the importance of mastering the fundamentals and continually seeking opportunities for growth. By focusing on building a solid foundation of skills, I’m confident that I’ll be well-equipped to tackle whatever challenges come my way in my journey as 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.

Embracing The White Belt Mentality

As software developers, we are on a quest for both personal and professional growth, but there comes a time where we reach a plateau. We’ve mastered some skills and embraced pride in our knowledge, but despite what we’ve accomplished, there’s a fear that our development is at a standstill. The White Belt Pattern involves taking a new approach to this challenge. This involves possessing a beginners mindset and setting aside previous knowledge in order to learn and understand new knowledge.

I found the concept of the White Belt mentality to be extremely intriguing. In our modern world where new techniques and technologies evolve daily, we would figure that expertise and mastery would be most important and the idea of embracing a beginners mindset may feel counterintuitive. However, there’s always something new to learn and we should approach these situations with an open mindset.

Learning more about this pattern allowed me to reevaluate my approach to the software development field. In a field where continuous learning and adaptation are essential, I now understand the importance of just taking a step back to avoid becoming complacent with my knowledge and open to new perspectives and ideas. I love programming in Java and Python, but if I focus on mastering those two languages, then I wouldn’t be able to learn other languages like C or JavaScript.

One part that resonated with me was the emphasis on collaboration. By acknowledging that we don’t have all the answers and can’t solve every problem, creates a space for collaboration and problem solving. Therefore by having the White Belt mentality, we can create a deeper connection with individuals in our workspace, while also possessing a genuine desire to learn new things.

A challenging aspect regarding this pattern is the idea of stepping back for growth. I understand we should challenge our knowledge, but believe there’s also value in building upon our existing knowledge. Instead of disregarding what we’ve mastered, we should find a midpoint where we can learn new things and see different perspectives while still utilizing our previous successes.

Overall, the White Belt mentality allowed me to reevaluate my approach to personal learning and growth. Instead of viewing mastery as a destination, I now see it as a continuous lifelong journey with plenty of opportunities for learning and discovery along the way.

From the blog CS@Worcester – Conner Moniz Blog by connermoniz1 and used with permission of the author. All other rights reserved by the author.

retreat into competence

This is one of those patterns that I feels important to apply to everything in your life, honestly. It’s a well-known phenomena that the more you learn in a field, the more you know that you don’t know much. It’s a sort of complicated sentence, but it rings true: You realize the gaps in your knowledge the more you progress. I find it interesting to approach this problem by doing something you know well, but limiting yourself in doing that in order to not stay stuck and comfortable with what you know already. It makes sense as a solution in that you sort of look back and realize all the progress you’ve made, but don’t stay in that mindstate for too long because it will end in the stagnation of your learning.

I personally feel the imposter syndrome very strongly, not just in programming but also in music and other hobbies that I enjoy. I think this pattern would really help with those who, like me, have a tendency to notice the things we don’t know. The one thing is that I don’t necessarily think that this solution is a “one size fits all.”

I usually take breaks when I feel like this, or just brute force through it. The reason I do this is because, in all honesty, I don’t really like assigning myself work that doesn’t need to be done. It feels as though I’m repeating myself if I go back and do something that I already know how to do when it’s not even an important job. Granted, if I were allotted an opportunity where there is work that needs to be done with something I’m very comfortable with, I’m obviously ready and willing to do it, especially in that mindstate.

That being said, if I weren’t so stubborn about spending my time the way I do, I think this would be a great way to ease that sort of dread regarding the possibility that you don’t know very much despite all the time that you’ve spent. I think it’s definitely a good thing to look back at the work you’ve done and say “you know what, I have gotten better over time,” comparing past self to your current self feels a lot better and more productive than comparing yourself to others, because you can actually see where you’ve grown and what that you are, in some sense, competent.

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.

week 5 blog

Individual apprenticeship pattern blog post- Use your title.

Hi all and welcome to my blog where today I will be talking about the pattern “Use your title.” This pattern caught my attention for several reasons that I will go through in this blog post in detail. First, let’s start by explaining the pattern itself and give a little context of where the title comes from. Let’s say you work at a job and they give you a certain title, like “assistant pharmacist”. Some time later they will want to promote you. The title of your position will change but you are still going to get paid the same amount. For example, I was known as “CAD assistant designer” for a little bit in the beginning of my job. I worked hard for like 3 years, then I got “promoted” to “CAD designer” which means I am no longer an assistant designer. My responsibilities changed with it. The pay might be the same but others in the office, or even outside the office, will respect you more because of that title. My responsibilities are much different now.

If the Job title doesn’t match the description of what you see yourself doing, then there are things that you can do to change that. It stated the job description is a distraction and should be kept on the outskirts of your consciousness, but I don’t think I agree with that. For me, a job title is something that you should be proud of. If I am not proud of my job title, that just gives me more fire to try and work harder to get the job title I deserve. To solve this problem, you should write down a description of your job title and make sure it fits the work you do in the office and try to give details as if a stranger is reading your job description. Sometimes your job title does reflect the work you do, you could be indicated into a position of authority on your team but it doesn’t state that in the job description which is fine as long as everyone respects you and sees the work you are putting in.

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