Author Archives: Arber Kadriu

Sprint 1 Retrospective Blog

As the first sprint EVER, it went very well, and it provided significant learning opportunities.

Our team exhibited strong collaboration throughout this initial phase. Effective communication was a cornerstone of our approach, enabling us to schedule both online and face-to-face meetings efficiently. A testament to our collaborative spirit was achieving our target of completing more than 75% of the tasks by the sprint’s end. This success largely stemmed from our commitment to weekly in-person meetings, fostering a united team environment crucial for addressing new challenges and workflows.

Despite these positive aspects, our journey was not devoid of hurdles. We encountered several setbacks, primarily due to our collective inexperience with GitLab and its workflow processes. Initially, we struggled with navigation, issue postings, and branch creations, leading to confusion and delays. Our approach to merge requests and the subsequent review process also proved problematic, culminating in merge conflicts and pipeline failures due to our wait-until-the-end strategy.

In light of these challenges, we aim to refine our approach in the upcoming sprint. We plan to create a “Workflow tips” document, compiling our experiences and solutions from this sprint to circumvent similar obstacles in the future. We intend to adopt a more proactive review process for issues and streamline our approach to merge requests, ensuring they align with workflow requirements.

Reflecting on the obstacles I encountered this sprint, there are several areas for personal improvement:

Enhancing GitLab Skills: I recognize the importance of becoming more proficient with GitLab. I intend to invest effort into understanding its intricacies, especially concerning branch management, handling merge requests, and connecting issues. I plan to utilize online resources, seek guidance from tutorials, and lean on my peers for support to enhance my competency.

Strengthening Communication: Acknowledging the need for improvement, I aim to enhance my approach to communication. I will take initiative to seek out feedback more actively and clarify doubts promptly with team members and mentors, aiming to resolve issues before they escalate.

Boosting Organizational Capabilities: I understand that better organization is key to avoiding past mistakes. Therefore, I am committed to honing my organizational skills, particularly in keeping track of my tasks, associated merge requests, and issues. Employing project management tools or maintaining a personal task tracker will be instrumental in keeping me in sync with the team’s goals and deadlines.

Links to the issues covered in this sprint:

Create Integration and Pipeline

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/integration/-/issues/1

Settings and extensions previously located in the dev container should now be transferred to .vscode/settings.json and .vscode/extensions.json within the Gitpod environment, as outlined in the .gitpod.yml documentation. Furthermore, developer commands should be moved from the commands directory to bin to align with standard Linux conventions, necessitating updates in script paths and .gitlab-ci.yaml environment variables. Additionally, integrate the AlexJS linter into each project’s pipeline and the bin/lint.sh script, ensuring all documentation is checked and updated accordingly.

Familiarize ourselves with guestInfoFrontend to understand what goes into CheckoutGuestFrontend

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem/checkoutguestfrontend/-/issues/37

This activity served as an introduction to the primary objectives of sprint 2. During this phase, we collectively reviewed the current wireframe for the checkout guest front end to familiarize ourselves with the anticipated design layout.

Refactor commands folder to bin

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/guestinfosystem/gitlab-profile/-/issues/69

This process entailed establishing a bin directory within the project and transferring three scripts from the template project into this new folder. Following this, I conducted tests on each of the three scripts to verify their functionality.

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.

Building Skills with “Breakable Toys” Week-6

Cultivating Skills in a Safe Space:

“Breakable Toys,” a pattern from “Apprenticeship Patterns” by Dave Hoover and Adewale Oshineye, advocates for the creation of personal projects or ‘toys’ that can endure failures. These projects offer a sandbox for experimentation, where learning and mistakes occur without the high stakes of a professional environment. This pattern underlines the significance of having a personal space to apply and test new skills and knowledge in a tangible, yet forgiving, setting.

A Concept That Inspires:

While I am yet to embark on a professional career in software development, the idea of “Breakable Toys” strikes a chord with me. It appeals to the part of me that believes in the power of hands-on experience and learning through doing. The notion of constructing a personal project where the risk of failure is not only permissible but encouraged, is both liberating and exciting, especially for someone preparing to enter the tech industry.

The Freedom to Experiment:

What I find most intriguing about this pattern is the emphasis on the freedom to experiment, innovate, and yes, even fail. In the realm of these personal projects, the usual barriers and fears associated with failure are reduced, paving the way for creativity and exploration. This approach makes “Breakable Toys” not just a learning exercise, but a crucible for innovation and self-discovery.

Anticipating Its Impact on Learning:

The concept of “Breakable Toys” has already begun to shape how I envisage my approach to learning and development in software engineering. It reinforces my belief in the importance of engaging in personal projects as a fundamental part of my learning journey. This hands-on practice will be key to transforming theoretical knowledge into practical expertise.

A Balance Between Play and Purpose:

While I am enthusiastic about the potential of “Breakable Toys,” I also recognize the importance of balancing these personal explorations with goal-oriented learning. It’s essential that these projects are not just about exploration but also about advancing specific learning objectives or developing particular skills.

In conclusion, the “Breakable Toys” pattern presents a compelling approach for anyone aspiring to grow in software development. It highlights that mastering this field involves not just structured learning but also unstructured, creative experimentation. By building and experimenting with personal projects, one can cultivate a deeper understanding and a more versatile skill set, all within a context where failure becomes a stepping stone to innovation and mastery. This pattern celebrates the idea that sometimes, the most valuable learning experiences come from the freedom to break things and learn in the process.

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.

Cultivating Insight: “Reflect As You Work” Week-5

Introspection in Action:

The “Reflect As You Work” pattern, from “Apprenticeship Patterns” by Dave Hoover and Adewale Oshineye, emphasizes the importance of ongoing reflection during your software development journey. This pattern encourages developers to continually assess their experiences, decisions, and outcomes. It’s about developing a habit of introspective thinking that allows you to learn from your actions and continuously improve your skills and approaches.

A Personal Acknowledgment:

While I haven’t yet embarked on a professional software development career, this pattern resonates with me for its universal applicability. Reflective practice is a concept that I find valuable in any learning process. “Reflect As You Work” aligns with my belief in the power of self-awareness and learning from one’s experiences, whether in academic, personal, or future professional settings.

The Power of Self-Reflection:

What stands out to me about this pattern is its focus on the transformative power of reflection. By regularly taking stock of what works and what doesn’t, and why certain approaches succeed or fail, one can gain deeper insights into their work and personal growth. This practice turns every task and challenge into a learning opportunity.

Shaping a Reflective Mindset:

Though I am yet to apply this in a professional context, “Reflect As You Work” shapes how I view future work and learning. It instills the idea that real growth stems from not just doing but understanding and analyzing the process and outcomes of one’s actions. This continuous cycle of action and reflection is what drives deeper learning and skill development.

Embracing Reflection, Balancing Action:

I wholeheartedly embrace this pattern’s message, but I also recognize the need for a balance between reflection and action. Constant reflection should not impede progress or lead to over-analysis. The challenge lies in integrating reflection effectively into the workflow without it becoming an obstacle to productivity.

In conclusion, “Reflect As You Work” is a pivotal pattern for anyone who seeks not just to work in the field of software development but to excel in it. It encourages a mindset where every experience is a source of learning and every challenge is a stepping stone to improvement. This pattern is a reminder that the journey to becoming a skilled software developer is as much about introspection and learning from one’s own journey as it is about acquiring new technical skills.

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.

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.

Navigating the Path: “Find Mentors” Week-3

The Guiding Lights of Development:

“Find Mentors,” a key pattern in “Apprenticeship Patterns” by Dave Hoover and Adewale Oshineye, emphasizes the invaluable role of mentorship in the development of a software engineer. This pattern urges aspiring developers to seek out seasoned professionals who can offer guidance, share knowledge, and provide insightful feedback. It’s about recognizing that the journey to becoming a proficient developer is often more fruitful and enlightening with the aid of those who have already traversed similar paths.

A Personal Insight:

The idea of finding mentors resonates with me, not from my own experience, as I am yet to embark on a professional career or have a mentor, but from understanding the complexities and challenges that lie ahead in the field of software development. The concept of mentorship offers a beacon of guidance and learning in what can be an intimidating journey. It underscores the fact that the path to expertise doesn’t have to be a solitary one.

The Power of Shared Experience:

What’s particularly captivating about this pattern is its focus on the richness of shared experiences and practical wisdom over textbook knowledge. Mentors bring to the table a wealth of real-world insights and practical advice that is often absent in formal educational settings. They serve as sounding boards for ideas and challenges, providing perspectives that can significantly shift our understanding and approaches.

Redefining Professional Aspirations:

While I have not yet started my professional journey, “Find Mentors” has influenced how I perceive future relationships in my professional life. It encourages looking beyond transactional interactions towards building enriching, mentoring connections. Whether it’s with a senior developer, a tech community leader, or a seasoned professional in another field, the value of mentorship in building a strong foundation in software development is clear.

A Balance in Learning:

Although I highly value the concept of mentorship, I also recognize the importance of self-reliance and independent problem-solving. Relying on mentors should be a stepping stone to developing one’s own skills and judgment. The ultimate goal is to grow into a competent professional who can navigate challenges both with and without direct guidance.

In summary, the “Find Mentors” pattern highlights an essential strategy for anyone aspiring to make their mark in the world of software development. It reminds us that our learning and growth can be greatly enhanced by the wisdom of those who have already faced the challenges we are preparing to meet. Actively seeking mentors is not just about receiving guidance; it’s about opening ourselves to a richer, more informed, and more nuanced understanding of the complex world of 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.

The Lifelong Journey: “Perpetual Learning” Week-2

Embracing Constant Evolution:

The “Perpetual Learning” pattern from “Apprenticeship Patterns” by Dave Hoover and Adewale Oshineye is a clarion call to software developers to embrace continuous learning. In an industry characterized by rapid technological advancements, this pattern stresses the importance of continuously updating and expanding one’s knowledge base. It’s about embedding a learning mindset into the fabric of your daily professional life, ensuring that growth and development are ongoing processes.

A Resonating Principle:

This pattern deeply resonates with me. It underscores a truth I’ve observed in my brief tenure as a developer: the only constant in technology is change. Adopting a mindset of perpetual learning isn’t just beneficial; it’s essential for survival and advancement in this field. It turns the career of a software developer into a journey of endless exploration and discovery.

Provoking Continuous Growth:

What’s particularly thought-provoking about this pattern is the idea of integrating learning into every aspect of work. It’s not limited to formal training or courses but encompasses learning from every project, every challenge, and every mistake. This approach transforms everyday tasks into opportunities for improvement and skill enhancement.

Shaping Professional Outlook:

“Perpetual Learning” has reaffirmed and shaped my approach to my software development career. It has instilled in me a sense of dynamism and adaptability. Embracing continuous learning means I’m always equipped to tackle new challenges and stay ahead in the ever-evolving tech landscape. This pattern has transformed my perception of learning from a phase to a fundamental career characteristic.

Agreeing Yet Balancing:

I wholeheartedly agree with the essence of this pattern. However, the challenge lies in balancing continuous learning with other professional responsibilities and personal life. It’s crucial to find sustainable and efficient ways to integrate learning into a busy schedule. Overcommitment to learning can lead to burnout, so it’s important to strike a balance.

In summary, the “Perpetual Learning” pattern is a vital mantra for anyone in the fast-paced world of software development. It’s a reminder that our professional development journey doesn’t have a final destination; it’s an ongoing path of growth, adaptation, and continuous improvement. By embedding a learning mindset into my daily practice, I am not just preparing for the challenges of today but equipping myself for the unknowns of tomorrow.

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.

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.

Reflecting on the Initial Chapters of “Apprenticeship Patterns”

As I delved into the first two chapters of “Apprenticeship Patterns” by Dave Hoover and Adewale Oshineye, I found myself engaged not just with a book, but with a conversation about the journey of a software developer. This isn’t a typical textbook; it’s a guide for navigating the intricate path of professional growth in software development.

Chapter 1: A Revelation in Learning

The initial chapter immediately struck a chord with me. The concept of ‘breaking the mold’ resonated deeply, challenging the conventional approach to learning. It advocates for a mindset of continuous improvement and learning from every experience, a philosophy I find both daunting and exhilarating. I was particularly intrigued by the idea of being a ‘perpetual apprentice,’ which suggests that there is always more to learn, and every encounter is an opportunity to grow.

Provocations and Insights from Chapters 2-6

As I browsed through the introductions of chapters 2 to 6, I found myself rethinking my approach to my career. The book doesn’t just offer advice; it provokes thought. It made me question: Am I too comfortable in my current knowledge? Am I challenging myself enough? The concept of ‘constructive discomfort’ as a growth mechanism is something I plan to embrace more actively.

A Grain of Disagreement

While I found most of the book enlightening, I did have my reservations. The emphasis on self-reliance, for instance, seems to downplay the importance of structured learning environments. In my experience, a blend of self-driven learning and formal education often yields the best results.

Personal Relevance and Perspective Shift

As a junior developer, the chapters discussing ‘concrete skills’ and ‘nurturing your passion’ seemed particularly relevant. They made me reflect on my current skill set and my long-term career aspirations. This reading has subtly shifted my perspective, making me more open to exploring unfamiliar territories in technology and more conscious of my learning journey.

Conclusion: A Journey, Not a Destination

In summary, “Apprenticeship Patterns” is more than just a read; it’s a reflection on the continuous journey of learning and growing as a software developer. I’m excited to apply some of these patterns in my career, embracing the role of a perpetual apprentice, ever-curious and ever-evolving.

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.

CS-443 Introductory blog

This blog is just a setup for CS@Worcester, CS-443

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.

CS484 Week-1

The Libre Food Pantry project and Thea’s Food Pantry at Worcester State University both represent impactful initiatives addressing food insecurity, each in their unique way.

1. The Libre Food Pantry Initiative: This initiative brilliantly merges technology and social welfare. By focusing on developing free and open-source software specifically for local food pantries, the Libre Food Pantry is a stellar example of how technology can be leveraged for social good. This initiative stands out for its innovative approach, where software development directly contributes to enhancing the efficiency and effectiveness of food pantries. Additionally, the project’s commitment to inclusivity, diversity, and a healthy community ethos, as reflected in its values and code of conduct, marks it as a progressive endeavor in both the tech and social service sectors.

2. Thea’s Food Pantry at Worcester State University: Named in honor of alumna and Holocaust survivor Thea Aschkenase, this campus-based service is a testament to community solidarity and support. It addresses the critical issue of student food insecurity, offering food and essentials to students, staff, and faculty in need. Operating from the Student Center, Thea’s Food Pantry provides confidential assistance, ensuring that members of the university community can focus on their academic and professional pursuits without the burden of food scarcity. The pantry’s operation, supported by student volunteers from various clubs and departments, including the SNAP practicum and the Urban Studies Club, is a wonderful example of campus community engagement and support.

Both initiatives, through their respective approaches, demonstrate the power of community-driven efforts in addressing fundamental human needs. The Libre Food Pantry’s focus on technology as a tool for social good, and Thea’s Food Pantry’s direct support to the university community, each highlight the importance of tailored solutions to societal challenges.

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.