Monthly Archives: January 2024

Chapter 1

Reading the assigned sections in “Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman” by Dave Hoover and Adewale Oshineye has been an enlightening experience, reshaping my perspective on the path to mastering software development. Chapter 1, coupled with the introductory sections of Chapters 2-6, lays a foundational understanding of the craftsmanship model in software development, emphasizing continuous learning, growth, and the pursuit of excellence.

The Craftsmanship Model: A New Paradigm

The concept of viewing software development through the lens of craftsmanship resonated deeply with me. It suggests that being a software developer is more than just a job; it’s a lifelong journey of improvement and mastery. The idea that one should always strive to better their skills and contribute to the growth of others in the community is both inspiring and daunting.

The Three Stages of Becoming a Software Craftsman

The delineation of the three stages of becoming a software craftsman—apprenticeship, journeyman, and master—provided a clear roadmap for personal and professional development. This progression from learning the basics, through solving broader problems, to finally leading and mentoring others, underscores the depth and breadth of growth required in this field.

Reflections on the Introductions to Chapters 2-6

The introductions to the subsequent chapters offer a glimpse into the varied aspects of this journey, from the importance of finding and learning from mentors (Chapter 2) to understanding the value of reflective practice and incorporating feedback (Chapter 6). This holistic approach to development, both technical and personal, is particularly appealing.

Personal Relevance and Application

The chapters on reflective practice and creating feedback loops seem most relevant to my current stage. They underscore the importance of not just doing but learning from doing, which is crucial for anyone in a rapidly evolving field like software development.

Disagreements and Critiques

While the book provides a compelling model, I found myself questioning the feasibility of its idealistic portrayal in the modern, fast-paced tech environment. The path seems clear in theory but navigating it amidst the pressures and constraints of real-world projects and deadlines presents a significant challenge.

Conclusion

“Apprenticeship Patterns” offers a refreshing perspective on the software development profession, advocating for a deliberate, continuous journey toward mastery. It challenges the reader to not only aspire to be a better developer but to embrace the journey with all its ups and downs, fostering a community of learning and sharing in the process. This reading has not only broadened my understanding but also deepened my commitment to this path of craftsmanship in software development.

From the blog CS@Worcester – Abe's Programming Blog by Abraham Passmore and used with permission of the author. All other rights reserved by the author.

Software testing

In the fast-evolving world of software development, the significance of rigorous testing cannot be overstated. A recent blog post from The Code Camp titled “Software Testing and Why It’s Important” delves into this critical aspect, shedding light on its indispensability in the development process. This article serves as a comprehensive guide, explaining the necessity of testing, its types, and methodologies, thereby making it an invaluable resource for developers and testers alike.

The Essence of Software Testing

Software testing stands as a cornerstone of development, ensuring that applications perform as intended, are secure, reliable, and user-friendly. The article articulates how testing not only identifies bugs but also secures software against potential cyber threats, a growing concern in today’s digital age. By involving real users, testing guarantees that the software offers a seamless user experience, an aspect critical to the success of any application.

Why This Article?

I chose this resource because it offers a profound understanding of testing’s role in the development lifecycle, a topic directly related to our coursework. The article’s clear explanation of various testing types, such as unit, integration, system, and acceptance testing, complements our learning, providing practical insights into their applications.

Personal Reflection

Reflecting on the content, I was particularly struck by the emphasis on security and user-experience testing. In an era where digital threats are rampant and user expectations are high, these aspects of testing assume paramount importance. This article reinforced my understanding of the multifaceted nature of testing, extending beyond mere bug detection to encompass a holistic approach to creating robust, secure, and user-centric software.

Application in Future Practice

Moving forward, I plan to integrate these insights into my testing strategies, particularly the early involvement of real users through acceptance testing and the rigorous assessment of security vulnerabilities. Emphasizing these areas will not only enhance the quality and security of the software I contribute to but also ensure a superior user experience. Security is something that I have wanted to learn more about for a long time and I think testing is a good way to move towards that

Conclusion

The insights gained from “Software Testing and Why It’s Important” are instrumental for anyone involved in software development. It underscores the critical role of testing in delivering high-quality, secure, and user-friendly software, aligning perfectly with the principles we’re learning in our course. For those interested in exploring this topic further, the full article is available at The Code Camp, offering a deeper dive into the vital world of software testing.

From the blog CS@Worcester – Abe's Programming Blog by Abraham Passmore and used with permission of the author. All other rights reserved by the author.

Apprenticeship in Software Development

If you’re like me, you probably dislike doing reading for school and find it to be pretty tedious, usually resulting in a drab writing exercise afterwards. So, reading through the first chapter and then the introductions to the following chapters in our textbook Apprenticeship Patterns – Guidance for the Aspiring Software Craftsman seemed like it would be similarly boring/tedious, but I found the writing to be engaging and discuss relevant topics with relatable analogies. 

The first chapter was primarily an introduction, and I found its discussion of what Apprenticeship is and means in modern society versus how it was implemented in Medieval times where the term originates. One point brought up is that modern “apprenticeships”, or positions with a similar title are more similar to what I think of as an internship, and may involve a lot of training but it mostly involves learning how to use a system/software rather than learning how it actually works behind the scenes or even how to improve it. 

By the same token, the author’s discussion of Medieval apprenticeship and how it correlates to modern situations resonated with me – particularly the division into the three main classes of Apprentice, Journeyman, and Master. Looking back, at the beginning of my Computer Science degree I was certainly a green apprentice and came in with an open mind and I was very fortunate to have family members who are undoubtedly masters to help teach me as their apprentice. Thinking about these individuals, they ARE in fact always learning more and new things and in their own way delving into their own areas of interest to try things which may have never been done before. But, as I approach graduation I feel myself starting to have more tendencies and qualities of a Journeyman as described. With early-career C.S. trends commonly involving a few different companies or departments, it’s easy to see more correlation there to the Journeyman, who travels sharing knowledge with others while also learning from them and improving their repertoire.

In reading the introductions to chapters 2-6, I found them to be quick, engaging and informative – exactly my type of reading. The chapter 3 introduction about Taking the Long Road resonated with me the most and left me with a lot to think about. Many times I’ve found myself feeling like the individual in the example, both inspired/excited by the sheer power and intellect of some other around me and discouraged/terrified of how far ahead of me they clearly appear to be. However, as the text discusses we are all traveling on the same general road as developers and Computer Science professionals, some have just been traveling on it longer, faster, and/or in different directions than us. It’s largely about the journey that gets you to your destination, which we will inevitably achieve as long as we refuse to give up.

From the blog CS@Worcester – Tech. Worth Talking About by jelbirt and used with permission of the author. All other rights reserved by the author.

An Intro to TestProject as an Automated Testing Tool

Classes restarted last week, and during the first week I found myself reading and writing a lot of introductory blog posts about upcoming semester course topics. As part of my setup tasks for CS-443 Software QA and Testing, I read about one of the most popular manual API Testing tools Postman and saw reference to TestProject, an automated testing tool from the same company Tricentis. So, I decided to do some further reading into TestProject as I understood the basics of manual testing, but had not seen automated testing in action yet. To do so, I found a blog post on the Tricentis site containing an overview tutorial of API testing and how platforms like Postman and TestProject can be valuable.

The post begins by discussing the value in API Testing and mentions the utility of Postman, but also brings up some of the limitations that are commonly encountered such as test automation, scheduling, and end-to-end test reporting. Intro TestProject → This testing platform offers solutions for end-to-end API testing by providing an environment to not only test API’s, manually but also to automate API-based test flows, schedule and run them periodically, and generate execution reports without the need for third party tools or writing any code.

The blog also contains a six chapter tutorial on using TestProject, so I delved into Chapter 1 – Basic API Test Automation. This emphasizes the platform’s ability to handle a wide variety of input sources like HTML, Databases, and more, then showing the application GUI and taking the reader through how to add ‘test steps’ in TestProject to set up automated testing for a GET HTTP request using NASA’s public APIs including search parameters and discussion on Dynamic Endpoint URLs (and implementing them) amongst others. Chapter 2 offers another brief tutorial discussing the value of scheduling automated tests with image steps (guide) to doing so with interactions to Android and iOS systems.

From these introductory chapters, I was able to get a basic idea of how to use TestProject to design calls, execute tests and access result reports. The other chapters in this TestProject tutorial cover more advanced API testing and validation flows, shell commands, scheduling API automation and more. As an introduction to Quality Assurance Testing and the course in general, this chapter was intriguing and valuable to get an idea of what an automated software testing tool looks like and how to use it in a basic sense. Stay tuned to read more about these other chapters and other topics in software quality assurance and testing and other exciting computer science related topics!

Sources:
General TP Post: https://blog.testproject.io/2020/11/10/automating-end-to-end-api-testing-flows/

Chapter 1: https://blog.testproject.io/2020/11/10/basic-api-test-automation/Chapter 2: https://blog.testproject.io/2020/11/10/api-test-automation-flows-combined-with-mobile-functional-test/

From the blog CS@Worcester – Tech. Worth Talking About by jelbirt and used with permission of the author. All other rights reserved by the author.

Thea’s Pantry Post

Introduction:

Delving into these platforms has provided a comprehensive understanding of LibreFoodPantry’s objectives and operations.

LibreFoodPantry:

The “Values” section particularly stood out, illustrating the organization’s dedication to Agile Principles and FOSSisms, underscoring a culture of collaboration, openness, and community-focused development. These aren’t mere terminologies; they form the foundation for the initiation, development, and maintenance of projects like Thea’s Pantry.The emphasis on values addresses the need for ethical considerations in technology development, highlighting LibreFoodPantry’s commitment to transparency, inclusivity, and community welfare. This approach serves as a reminder that successful projects are rooted in a solid framework of guiding principles.

Thea’s Pantry:

The “Architecture” documentation of Thea’s Pantry revealed a meticulously planned structure of subsystems, designed for scalability, maintainability, and user-centricity. This approach not only showcases technical sophistication but also reflects the organization’s values in its architectural design, ensuring the system’s adaptability and resilience.The architecture’s distinction lies in its embodiment of LibreFoodPantry’s values, focusing on inclusivity, accessibility, and adaptability, thus fostering solutions that are both innovative and considerate.

Conclusion:

Investigating LibreFoodPantry and Thea’s Pantry has highlighted the intersection of technology and social responsibility, demonstrating the power of community collaboration in leveraging technology for societal benefit. This exploration reaffirms the importance of foundational values in driving meaningful technological solutions.

From the blog CS@Worcester – Abe's Programming Blog by Abraham Passmore and used with permission of the author. All other rights reserved by the author.

LibreFoodPantry and Thea’s Pantry

After reading LibreFoodPantry’s main page I thought that their mission was really interesting because not only are they trying to make the food pantry more accessible and easy to use but they are also using it as a learning tool for computer science students and expand their skills. LibreFoodPantry wants to show that software can be used to help society and support food pantries as well as their guest all over with free and open-source software. FOSS gives students a perspective on computing being used for good. I chose to write about this because I feel like it’s an important computer science skill while also helping the community. Students can connect with experts who can help them when they are struggling with their contributions to the pantry from being part of the community.

I know we worked on Thea’s pantry last semester but something I thought was interesting was the architecture of Thea’s pantry. Thea’s Pantry uses 5 systems for client solutions and those systems use calls to pass data to those other systems. The diagram shows what server is being called and where it’s sending or receiving information from. I chose to write about this because it’s cool to see how those 5 systems run and connect. Thea’s pantry has a lot that goes into it and it’s interesting to see specifically how each system works and how they connect.

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.

My Blog

Hi my name is Kaylene and this is my blog.

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.

New Class! New Posts!

Hello! I will be continuing the blog posts pertaining to my course. The class I am currently in is Software Quality Assurance and Testing. CS443_01_SP_2024

From the blog CS@Worcester – KindlCoding by jkindl and used with permission of the author. All other rights reserved by the author.

Hello World

compile


verb

com·​pile kəm-ˈpī(-ə)l 

compiled; compiling

transitive verb

1to compose out of materials from other documents

2to collect and edit into a volume

3to build up gradually

Compile.” Merriam-Webster.com Dictionary, Merriam-Webster, https://www.merriam-webster.com/dictionary/compile. Accessed 22 Jan. 2024.


Learning is a lifelong process. From the day you are born, you are taking in new information.

As you learn, you add the new things to what you already know. In this way, you are constantly evolving what you know, who you are and how you see the world. Built up gradually over time, you are the compilation of your of knowledge and experiences.

So here I am: currently compiling.

To help you in your own lifelong pursuit of knowledge, I will share all the computer science things I learn along the way.

Well….most of them.

From the blog CS@Worcester – CurrentlyCompiling by currentlycompiling and used with permission of the author. All other rights reserved by the author.

CS-443: Introductory Post

Welcome to my blog for CS-443! My name is Zack Tram and am a senior completing my undergraduate CS degree. In the upcoming weeks, I’ll be posting about topics relating to various software testing methodologies

I look forward to completing my degree this semester, and everything that comes with it!

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