Author Archives: isaacstephencs

“Confront Your Ignorance”.

“Confront Your Ignorance” stresses the significance of recognizing and dealing with one’s limitations and lack of knowledge in software development. It urges individuals to actively pursue areas where they lack understanding or skill, rather than disregarding or evading them. By facing their ignorance directly, developers can proactively take steps to learn and improve, ultimately enhancing their proficiency in their field.

REACTION: This pattern strongly resonates with me as a software developer. It reminds me that the learning journey is continuous and that it’s perfectly fine not to have all the answers. Recognizing our limitations can actually be the starting point for progress and expertise. Embracing the fact that there are areas where we lack knowledge allows us to explore new avenues for personal and professional advancement.

WHAT’S INTERESTING AND USEFUL: What I find particularly intriguing about this pattern is its focus on humility and self-awareness. In an industry that frequently values expertise and innovation, there’s often a temptation to feign having all the answers. However, by acknowledging our own ignorance, we open ourselves up to curiosity and new discoveries. This pattern serves as a reminder that it’s not about achieving perfection but rather about being open to learning and adjusting.

CHANGING PERSPECTIVES: This pattern has truly shifted my perspective on my profession. Rather than feeling compelled to have all the answers, I now perceive ignorance as a fundamental and valuable aspect of learning. Instead of a flaw, I see it as a chance for development. Going ahead, I intend to tackle challenges with more humility and curiosity, recognizing that there is always room for further learning.

DISSAGREEMENTS: I don’t disagree with the essence of this pattern. However, I believe it’s crucial to find a balance between acknowledging our ignorance and not letting it overwhelm us. While recognizing our limitations is important, we should also prioritize our learning, focusing on areas that will have the greatest impact on our development as developers.

In summary, “Confront Your Ignorance” underscores the significance of humility and self-awareness in the quest for mastery as a software developer. Embracing our ignorance and actively pursuing learning opportunities enables us to continually progress and enhance our skills.

From the blog CS@Worcester – THE SOLID by isaacstephencs and used with permission of the author. All other rights reserved by the author.

Pattern: Sweep the Floor

This pattern underscores the value of humility and the readiness to tackle any task, regardless of its perceived significance, as a means to learn and contribute meaningfully to a team. The concept is that by beginning with basic responsibilities and executing them proficiently, you develop a comprehensive comprehension of the work environment, the tools, and the processes at play. This establishes a groundwork for advancement and enables you to establish credibility within your team.

Reaction: This pattern indeed serves as a valuable reminder that professional growth often hinges on our willingness to embrace all tasks, regardless of their perceived glamour or complexity. It’s a testament to the fact that success often starts with mastering the basics and being adaptable to the team’s needs, ultimately contributing to a more robust and effective team dynamic.

Interesting Points: This pattern really highlights the importance of having a humble and open mindset, especially at the beginning of one’s career. By showing a willingness to tackle any task, you not only acquire new skills but also showcase your dedication and team spirit, which can be incredibly valuable in establishing yourself within a team or organization.

Impact on Thinking: This pattern has caused me to rethink how I approach new opportunities. Instead of focusing only on the tasks that I find most appealing, I now see the value in taking on a variety of tasks, even if they seem mundane at first. I realize that by doing so, I can gain a better understanding of the overall work environment and make a more meaningful contribution to my team.

Disagreements: I don’t disagree with anything in this pattern. The principles of humility and a learning mindset are universally valuable, no matter where you are in your career journey. They can be particularly impactful at the outset, setting a strong foundation for growth and development. Embracing these principles can lead to more enriching experiences and better relationships with colleagues and mentors, which are essential for long-term success.

In summary, “Sweep the Floor” underscores the significance of humility and a readiness to tackle any task, regardless of size, to foster professional development. This mindset will remain a guiding principle as I progress in my chosen career path.

From the blog CS@Worcester – THE SOLID by isaacstephencs and used with permission of the author. All other rights reserved by the author.

Chapter 1 of “Apprenticeship Patterns” delves into the concept of the “Long Road” pattern.

The “Long Road” pattern underscores the importance of embracing the journey to mastery in software development rather than seeking quick fixes. It begins by emphasizing the complexity and depth of software development, stating that mastery is not achieved overnight. The pattern suggests committing to a lifelong journey of learning and improvement, recognizing that expertise requires time, effort, and dedication.

The chapter delves into the analogy of software development as a craft, comparing it to traditional crafts like woodworking or blacksmithing. It highlights the importance of embracing the iterative process of skill development, viewing each project as a chance to enhance abilities and deepen understanding. Additionally, it promotes a mindset of humility among practitioners, acknowledging that there is always more to learn and room for improvement.

One particularly intriguing and beneficial aspect is the focus on deliberate practice and intentional learning. The chapter highlights the importance of seeking challenges that expand one’s skills and actively soliciting feedback from experienced practitioners. It encourages the development of a personalized learning plan aligned with individual goals, promoting a proactive approach to skill enhancement.

Moreover, the chapter introduces the concept of “Kindling Your Enthusiasm,” which underscores the significance of retaining passion and curiosity in one’s profession. It proposes that nurturing a sense of wonder and excitement can bolster motivation and help individuals persevere through the challenges and setbacks they may face.

This chapter hasn’t fundamentally altered my perspective on my intended profession, as I already held the belief in continuous learning and growth. However, it serves as a reaffirmation of the significance of embracing the journey and dedicating oneself to lifelong improvement. It reinforces the understanding that expertise isn’t attained overnight but is rather the outcome of consistent effort and commitment.

Overall, Chapter One of “Apprenticeship Patterns” offers valuable insights into the mindset and approach crucial for success in software development. It highlights the significance of embracing the journey of mastery, engaging in deliberate practice, actively seeking feedback, and sustaining passion and enthusiasm. These principles are not limited to software development but can be applied to any profession or pursuit that demands continuous skill development and growth.

From the blog CS@Worcester – THE SOLID by isaacstephencs and used with permission of the author. All other rights reserved by the author.

Chapter 6 of “Apprenticeship Patterns,” introduces the concept of “Sweep the Floor”.

In Chapter 6 of “Apprenticeship Patterns,” introduces the concept of “Sweep the Floor” is introduced, highlighting the significance of humility and readiness to undertake even the simplest tasks as a way of learning and contributing effectively to a software development team.

The pattern starts by addressing the mistaken belief that novice software developers should concentrate solely on coding or tackling intricate challenges. Nevertheless, the authors contend that there’s considerable merit in tackling routine or seemingly unimportant tasks like documentation, testing, or tidying up code. Engaging in these activities offers chances to gain knowledge, grasp the project’s scope, and establish trust among team members.

The pattern advises apprentices to adopt humility and adopt a mindset where they are eager to contribute in any capacity, regardless of the task’s level of complexity or appeal. By undertaking modest, low-stakes duties, apprentices can incrementally bolster their self-assurance, broaden their exposure to various facets of software development, and exhibit their dedication to the team’s prosperity.


An intriguing facet of this pattern lies in its stress on the significance of context and comprehending the overarching objectives of the project or organization.
Through involvement in activities such as documentation or testing, apprentices can acquire a deeper understanding of the project’s needs, limitations, and obstacles, which can serve as valuable insights for their subsequent contributions and decision-making processes.

Additionally, the pattern underscores the importance of collaboration and teamwork within software development. By engaging wholeheartedly in all project facets, irrespective of their level of experience or expertise, apprentices can position themselves as indispensable team players and forge robust connections with their peers.

This pattern is useful because it provides a practical approach to learning and professional development for apprentices in software development. By promoting humility and a readiness to tackle even the simplest duties, it aids apprentices in constructing a strong groundwork of competencies, understanding, and connections within their teams. Furthermore, by actively contributing to the team’s achievements in diverse roles, apprentices can hasten their learning curve, amass invaluable experience, and eventually evolve into more proficient and esteemed members of the software development realm.

Ultimately, this pattern encourages a mindset that values practical proficiency, self-directed learning, and a commitment to continuous skill development. It can inspire me to approach me intended profession with a greater sense of agency, confidence, and readiness to tackle real-world challenges.

From the blog CS@Worcester – THE SOLID by isaacstephencs and used with permission of the author. All other rights reserved by the author.

Sprint 3 Reprospective

Docker Build Pipeline:

  • Issue: Path not correct for copying files into Docker Compose container.
  • Solution: Adjust copy statements in Dockerfile to specify correct paths.
  • Implementation: Modify paths relative to Docker directory, e.g., bin/ if in src/.

Development Docker:

  • New scripts added for running and installing nodemon with package.
  • Type noderundev in shell script for consistency.

Reconfigure Pipeline:

  • Existing issue persists for team OL1.
  • Keep test.sh temporarily until linters are added to config.
  • Reporting system pipeline configure fails due to missing es.lint configuration file.

Linters Integration:

  • Linters not in repo for pipeline.
  • Documentation required for pipeline operation.
  • Branches cleanup ongoing.

Shell Scripts for Convenience:

  • Provide shell scripts in directories for ease of use.
  • Example: build/backend.dev for npmrundev.

Backend Development:

  • Start nodemon instead of rpm for backend changes.
  • Ensure nodemon reloads backend on code changes.

Scripts Management:

  • Separate scripts for dev and prod environments.
  • Create backenddevup.sh for backend development.
  • Later adjust for production environment.

Startup Procedures:

  • Determine startup procedure for MongoDB and RabbitMQ.
  • Currently, Docker runs MongoDB and RabbitMQ for production.
  • Scripts needed to start these services.

Research:

  • Update es.lint Docker image for better functionality.
  • Transfer existing config to new format for better linting.
  • Investigate linting for syntax and code errors.
  • Configure Gitpod workspace for linting and formatting.
  • Set up Gitpod.yaml for npm install and linting.

Code Formatting:

  • Utilize Prettier in pipeline for automatic code formatting.
  • Ensure neat documentation of all procedures.

From the blog CS@Worcester – THE SOLID by isaacstephencs and used with permission of the author. All other rights reserved by the author.

Chapter 5 of “Apprenticeship Patterns,” the focus shifts to the idea of “Craft over Art

In Chapter 5 of “Apprenticeship Patterns,” the focus shifts to the idea of “Craft over Art,” stressing the significance of valuing craftsmanship and tangible abilities above the quest for flawlessness or artistic flair in the realm of software development.

The chapter commences by drawing a line between craft and art within software development. While art centers on expression and imaginative flair, craft underscores proficiency, accuracy, and excellence. The authors contend that although artistic elements hold merit, software development predominantly hinges on craftsmanship to produce dependable, sustainable, and efficient solutions.

The pattern advises apprentices to embrace a mentality of continual enhancement and expertise in their field. It underscores the importance of deriving lessons from errors, soliciting input, and refining technical abilities through purposeful rehearsal. Instead of chasing after flawlessness or extravagant solutions, apprentices ought to focus on delivering streamlined, easily maintainable code that fulfills its intended function proficiently.

The pattern underscores the significance of humility as a crucial element. It urges apprentices to acknowledge their boundaries and reach out to seasoned professionals for guidance. Through embracing the ethos of craftsmanship, apprentices can foster a mentality of perpetual learning and advancement, consistently aiming to enhance their abilities and contribute more effectively to their teams and endeavors.

This pattern is intriguing or interesting because it directs attention towards the pragmatic and efficient aspects of software development. It confronts the idealized view of coding as a form of art and instead highlights the significance of practical, outcome-driven methodologies. By favoring craftsmanship over artistic expression, apprentices can establish a robust base of technical competencies and behaviors that will prove beneficial over the course of their professional journeys.

This pattern proves beneficial as it offers apprentices a structured and pragmatic approach to their learning and career progression. By stressing the significance of craftsmanship and tangible skills, it assists apprentices in directing their energies towards the core elements of software development: providing dependable, sustainable solutions that cater to user and stakeholder requirements. Furthermore, by embracing humility and seeking advice from seasoned professionals, apprentices can expedite their learning and advancement, ultimately becoming more proficient and accomplished software developers.

Overall, this pattern encourages a mindset that values craftsmanship, technical excellence, and a commitment to delivering tangible results. It can inspire me to approach my intended profession with a greater sense of purpose, discipline, and dedication to continuous improvement.

From the blog CS@Worcester – THE SOLID by isaacstephencs and used with permission of the author. All other rights reserved by the author.

Chapter 3 of “Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman”.

In Chapter 3 of “Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman,” entitled “Walking the Long Road,” the focus lies on recognizing that achieving mastery in fields like software development is a gradual process demanding persistence, endurance, and ongoing education.

The chapter opens by stressing the importance for aspiring craftsmen to accept that attaining mastery is not an immediate goal but rather a journey that unfolds over time. It underscores the comparison to a lengthy road trip, where the adventure itself holds equal importance to reaching the final destination. This change in mindset is essential for newcomers to the realm of software development, aiding them in valuing the journey of honing their skills and achieving expertise.

Following this, the chapter presents the “Long Road” pattern, advocating for prioritizing long-range growth over pursuing immediate rewards or quick fixes. It stresses the significance of establishing realistic objectives, fostering a mindset of continuous improvement, and dedicating oneself to regular practice and enhancement of skills throughout the journey.

An interesting element of this chapter lies in its focus on the importance of persistence and fortitude when confronted with difficulties and setbacks. It underscores the certainty of facing obstacles during the pursuit of mastery and urges readers to perceive these challenges as chances for personal development rather than excuses to surrender.

Additionally, the chapter offers actionable guidance on effectively traversing the lengthy journey. It recommends approaches like seeking mentorship, engaging with communities of practitioners, and embracing intentional practice to expedite the process of learning and skill refinement.

In summary, Chapter 3 of “Apprenticeship Patterns” underscores the essential components of achieving mastery in software development, emphasizing the need for commitment, endurance, and an appreciation for the process. By embracing the philosophy of “walking the long road” and heeding the chapter’s advice, aspiring software craftsmen can embark on a journey toward ongoing advancement and eventual expertise in their field of choice.

Ultimately, this pattern can inspire a more sustainable and fulfilling approach to your intended profession, one that emphasizes continuous learning, resilience, and a commitment to long-term improvement.

From the blog CS@Worcester – THE SOLID by isaacstephencs and used with permission of the author. All other rights reserved by the author.

Sprint 2 planning

Throughout our team discussions, we addressed several key points:

Some tasks (OL-1) weren’t completed by another group, who claimed they were done or unnecessary. We need to inform the professor (#26).

We need to ensure that the guestinfofrontend knows which server address it’s using. Adjusting the Gitpod ci.yaml file can help with this.

The backend server is encountering issues and isn’t running properly, especially affecting weight increment functionalities.

Creating a Gitpod initialization task will automate setting up the workspace’s address, streamlining our workflow.

We should utilize environment variables to manage URLs, distinguishing between local and Gitpod environments for better configuration.

Setting a backend base URL will prevent hardcoding and make it easier for the frontend to access.

We need to troubleshoot module not found errors, which may be related to exports or syntax issues.

Enhancing our debugging capabilities with JavaScript tools will improve error detection and resolution.

Conducting experiments and documenting findings will help guide our future actions and decisions.

Thorough documentation is crucial for the benefit of future teams, especially if time is limited.

We must prepare for presentations during exams, focusing on showcasing our team’s progress.

Improving our planning and testing processes will lead to smoother project execution and fewer setbacks.

Providing clear integration examples and deployment instructions will facilitate seamless implementation.

Utilizing collaborative tools will enhance efficiency in task management and communication.

Lastly, we should compile promising solutions into a shortlist for further evaluation and consideration.

From the blog CS@Worcester – THE SOLID by isaacstephencs and used with permission of the author. All other rights reserved by the author.

Chapter 2 of “Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman”.

In Chapter 2 of “Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman,” called “Emptying the Cup,” the focus is on the notion that effective learning requires individuals to recognize and accept their current shortcomings and biases. The chapter emphasizes the significance of maintaining an open mind and welcoming new concepts, even when they contradict what one already knows.

In the opening of the chapter, the idea of an “empty cup” is explained using a story about a martial arts student who seeks guidance from a master. However, the student’s mind is already filled with his own beliefs and assumptions, making it difficult for the master to impart knowledge effectively. The student must metaphorically empty his cup, shedding his preconceived notions, to be receptive to genuine learning.

The key lesson is to embrace humility and openness in career advancement, acknowledging constant room for improvement and discarding outdated habits, assumptions, and biases to facilitate growth.

The chapter offers useful guidance on how to embrace the concept of “emptying the cup” by urging readers to actively pursue experiences that push the boundaries of their current understanding and beliefs. This might entail taking on projects that are unfamiliar, soliciting input from colleagues, or deliberately practicing to enhance skills in weaker areas.

What’s interesting about this chapter is its emphasis on the importance of mindset in the learning process. It underscores that achieving mastery isn’t solely about amassing information and abilities, but also hinges on cultivating a receptive attitude toward learning and development. Embracing the notion of the “empty cup,” readers are motivated to approach their evolution as software craftsmen with curiosity, humility, and an open-minded outlook.

This chapter proves useful as it provides actionable methods for overcoming cognitive biases and constraints that may hinder personal development. By acknowledging the significance of embracing new perspectives, readers can foster a mindset conducive to ongoing progress and expertise. This approach can enhance creativity, innovation, and effectiveness in software development, while also fostering personal fulfillment and satisfaction in one’s professional endeavors. Ultimately, “Emptying the Cup” serves as a beneficial reminder of the essential role humility and open-mindedness play in striving for excellence.

Reflecting on Chapter 2 of “Apprenticeship Patterns,” I recognize the need to critically assess my choice of programming language. Considering factors like ecosystem, learning style alignment, and industry relevance, I understand that my initial assumptions may require reassessment. Embracing this change in perspective prompts a more intentional approach to learning, potentially leading to greater mastery and fulfillment in my profession.

From the blog CS@Worcester – THE SOLID by isaacstephencs and used with permission of the author. All other rights reserved by the author.

Chapter 4 of “Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman” focuses on the concept of “Confront Your Ignorance.”

This chapter highlights that acknowledging your limitations is key to growth. It offers a roadmap for identifying these gaps and strategies for filling them.

The chapter lays the foundation with the Dreyfus Model, a roadmap for skill development. It breaks down learning into five stages: Novice, Advanced Beginner, Competent, Proficient, and Expert. The authors emphasize understanding your current level and adopting a lifelong learning mentality.

Imagine your skills and experiences as a developer stacked together, like a toolbox. This toolbox is your “knowledge portfolio.” The chapter argues that for a successful, long-lasting career, you shouldn’t just have a hammer. Instead, aim to be a “generalizing specialist.” This means having a go-to tool (deep expertise) but also filling your toolbox with various other useful tools (proficiency in diverse areas). This versatility allows you to tackle more problems and adapt to changing needs in the software-development world.

The chapter outlines several strategies for effectively addressing your ignorance:

  1. Build a Solid Foundation: Focus on mastering the fundamentals of your field. A solid foundation will prepare you for more advanced learning and future growth.
  2. Learn How You Fail: Reflect on past experiences, both successes and failures, to identify areas where you can improve your knowledge. Use these insights to guide your future learning.
  3. Expose Your Ignorance: Accept that you’re still learning and don’t be afraid to admit you don’t have all the answers. See your knowledge gaps as steppingstones to becoming a master.
  4. Confront Your Ignorance: Don’t shy away from opportunities to learn. Ask questions, take classes, and constantly seek out new information to fill in the gaps in your understanding.
  5. Find Mentors: Seek out experienced individuals who can mentor you and share their knowledge. A good mentor can offer valuable advice and insights based on their own experiences.

The interesting and useful concerns about this chapter is it discusses the importance of recognizing and accepting that you don’t know everything. It encourages embracing your ignorance as a steppingstone to learning and growth.

This chapter has changed the way i think about my profession as it emphasizes the importance of continually learning and expanding your skills beyond just coding. It suggests that software development is not just about writing code but also about understanding the business domain, interacting with customers, and collaborating effectively with others.

In essence, Chapter 4 of “Apprenticeship Patterns” emphasizes the significance of admitting what you don’t know as a software developer. By recognizing your boundaries and actively pursuing chances to learn and improve, you can strengthen your abilities and progress in your software development career.

From the blog CS@Worcester – THE SOLID by isaacstephencs and used with permission of the author. All other rights reserved by the author.