Author Archives: raqpenha

448 – Blog Post

“Rubbing Elbows” advocates for the power of hands-on collaboration with another software developer to overcome learning more and enhance craftsmanship. This pattern complements “Kindred Spirits” by emphasizing the benefits of direct, side-by-side interaction in skill development.

Dave’s experience with Roman shows the efficacy of this pattern. By working closely together, they not only learned about new technologies but also gained insights into micro-techniques that are often overlooked in traditional teaching settings. The narrative shows the significance of collaboration, even outside formal mentorship relationships, in fostering skill enhancement and professional growth.

Pair Programming emerges as a concrete ideaology of “Rubbing Elbows,” offering apprentices invaluable opportunities to learn from more experienced developers. While pair programming can be challenging, especially for apprentices, it provides a dynamic environment for skill acquisition. The pattern advises apprentices to communicate effectively with their pair programming partners, seek rotations if necessary, and explore alternative methods like Ping-Pong Programming to enhance participation.

Drawing from Richard Sennett’s concept of the ideal craft workshop, “Rubbing Elbows” advocates for exposure to diverse working habits and practices. This extends beyond coding to encompass all aspects of software development, such as academic collaborations or open-source projects. Ade’s experience illustrates how collaborating on unconventional projects can broaden perspectives and lead to unexpected insights.

Regardless of the outcome, apprentices are encouraged to record their experiences and reflections for future reference. This documentation serves as a valuable resource for personal growth and facilitates empathy towards future junior collaborators.

In action, the pattern suggests initiating collaborative projects, such as contributing to an open-source project, with someone interested in similar pursuits. By committing to regular sessions and adapting to challenges, apprentices can sustain motivation and continue their learning journey.

In summary, “Rubbing Elbows” underscores the importance of hands-on collaboration in overcoming learning plateaus, fostering skill development, and enhancing craftsmanship. Through direct interaction and shared experiences, apprentices can accelerate their growth and achieve mastery in software development.

From the blog CS@Worcester – CS- Raquel Penha by raqpenha and used with permission of the author. All other rights reserved by the author.

448 Blog Post

The piece “Draw Your Own Map” encourages individuals to take control of their career paths rather than relying solely on their employers or societal expectations. It addresses the common notion that programming and career advancement in the field are limited, especially for those who may not fit the stereotype of fresh graduates. It emphasizes the importance of identifying one’s own career goals and taking proactive steps to achieve them.

The solution proposed involves identifying logical yet ambitious career steps and visualizing the incremental actions needed to reach those goals. It advocates for taking the first step, even if seemingly insignificant, as it generates momentum towards larger aspirations. Rather than setting only high-level goals, the article suggests defining small, achievable steps that provide feedback and aid in obtaining assistance from like-minded individuals.

The narrative includes personal stories illustrating individuals’ struggles to pursue programming despite organizational constraints. It highlights the importance of prioritizing personal aspirations over organizational expectations and seeking opportunities that align with one’s goals.

The actionable advice includes listing potential career paths, extending the list to explore additional options, and challenging preconceived constraints to open up new possibilities. It also encourages seeking mentors and kindred spirits who can provide guidance and support along the way.

Overall, the piece advocates for a proactive and flexible approach to career planning, empowering individuals to chart their own paths and overcome obstacles to achieve their desired destinations. What I thought was the most important of this piece is the career planning aspect of it especially since this semester I am finishing up my degree and starting on looking for a career, this also like points me in the write direction on a professional work future.

From the blog CS@Worcester – CS- Raquel Penha by raqpenha and used with permission of the author. All other rights reserved by the author.

448 Last Sprint

Last Sprint Retrospect.

This sprint introduced something different then out  usual approach, as we embraced a more flexible and independent way of working but still in a team setting. Allowed to choose our own tasks, each team member assumed ownership of their respective assignments, encouraging a sense of accountability and purpose within the team. This new self-sufficiency was complemented by a sense of collaboration, where team members voluntarily offered assistance and support whenever needed, ensuring that our group efforts flowed seamlessly towards our common goals.

Throughout this sprint, my role primarily centered around the essential task of tidying up loose ends from previous iterations. From closing redundant branches to resolving trial-and-error issues, I found myself assuming the role of the team’s cleanup crew, diligently organizing and optimizing our GitLab repository. While the task was undeniably lengthy, the satisfaction of viewing our codebase evolve into a leaner and more simplified object made the effort worthwhile.

However, amidst our collective productivity, a significant challenge surfaced: the shortage of possible epics to reach our sprint points . For several weeks, we faced with the search of new task of identifying new projects and enhancements to strengthen our workload. We look high and low, in other groups past epics to search for anything tat we thought could make this project ran more efficient. It took a couple of days until we finally had enough points to reach our goal. Despite the challenges we encountered, the sprint unfolded with remarkable smoothness. The organized cooperation within our team, coupled with our solid dedication to excellence, pushed us forward.  While the cleanup work demanded meticulous attention to detail and patience, it served as a evidence to our team’s commitment to maintaining high requirements.

Reflecting on the semester as a whole, I am struck by the profound educational value of our experiences. Beyond the mere acquisition of knowledge, this class has equipped me with valuable skills and insights that go beyond the limits of academic world. From mastering the art of collaboration, every aspect of our semester has left an indelible mark on my professional development.

As I board on my future career, I am grateful for the transformative impact of this class, which has not only enriched my skill set but also shaped my outlook and approach towards work and collaboration. The lessons learned and experiences gained during this sprint, in particular, have reinforced the importance of adaptability, resilience, and the pursuit of excellence in the face of challenges. Prepared with these invaluable lessons, I am confident in my ability to navigate the complexities of the professional world with confidence and competence.

Evaluate current state of CheckInventoryFrontend (#41) · Issues · LibreFoodPantry / Client Solutions / Theas Pantry / InventorySystem / CheckInventoryFrontend · GitLab

Clean up GuestInfoFrontend (#100) · Issues · LibreFoodPantry / Client Solutions / Theas Pantry / GuestInfoSystem / GuestInfoFrontend · GitLab

Check documentation for GuestInfoFrontEnd (#99) · Issues · LibreFoodPantry / Client Solutions / Theas Pantry / GuestInfoSystem / GuestInfoFrontend · GitLab

From the blog CS@Worcester – CS- Raquel Penha by raqpenha and used with permission of the author. All other rights reserved by the author.

448- Blog Post

This week I have read the section called Construct Your Curriculum The text emphasizes the immense access to information in the modern era, fueled by technological advancements like the printing press and the internet. Despite the abundance of digital media, it stresses the enduring value of books, particularly those authored by experienced professionals like Jerry Weinberg and Fred Brooks. These books offer a extent of wisdom and insight that goes beyond what can be found in blogs or online resources.

To manage the overwhelming number of books one may wish to read, the article suggests implementing a Reading List—a  list of books to read and those already read. This list serves as a personal curriculum, allowing individuals to prioritize their learning and track their progress over time. By making this list public, others can benefit from suggestions and contribute their own recommendations, fostering a collaborative learning environment.

The article introduces the concept of “Reading Constantly,” advocating for a steady intake of programming books to deepen one’s understanding of the field. It advises against rushing through books and emphasizes the importance of timing—reading the right book at the right time can significantly enhance the learning experience.

Additionally, the article encourages exploration of classic literature in the field, alongside more contemporary resources. It suggests asking mentors for recommendations and seeking out long-lived books that offer timeless insights into software development.

Finally, the article points out the value of a balanced approach to learning, incorporating both classic and modern literature, and leveraging tools like Reading Lists to navigate the vast sea of available knowledge effectively. Through continuous reading, reflection, and interaction with mentors and peers, individuals can cultivate a deeper understanding of their craft and continually improve their skills on their journey as software developers.

This was a good read to mark the importance of the continuation of learning and reading even after graduation and starting the professional career. It opens up the eyes for readers so that they grow and learn more and not stay stagnant.

From the blog CS@Worcester – CS- Raquel Penha by raqpenha and used with permission of the author. All other rights reserved by the author.

443- Blog Post

The article “Property-Based Testing: A Test Strategy for Modern Software” on Codemotion’s website explores into the concept and benefits of property-based testing (PBT) in the context of modern software development. PBT is a systematic approach to testing software by defining general properties that the program should satisfy, rather than focusing solely on specific input-output pairs.

The piece begins by highlighting the limitations of traditional example-based testing, which often fails to cover all possible edge cases and scenarios. This leads to the introduction of PBT as a more comprehensive testing methodology. Unlike example-based testing, where tests are explicitly defined, PBT generates test cases automatically based on the properties defined by the tester.

The article talks about the key components of PBT, including generators, properties, and test runners. Generators are used to create random inputs for testing, ensuring a wide range of scenarios are covered. Properties, on the other hand, represent the general rules or invariants that the software should adhere to. These properties are then used to validate the behavior of the software under test.

One of the main advantages of PBT highlighted in the article is its ability to uncover edge cases and bugs that may not be caught by traditional testing methods. By generating random inputs based on defined properties, PBT can uncover unexpected behaviors and corner cases, leading to more robust and reliable software.

The article also discusses the challenges associated with PBT, such as the need for careful property definition and the overhead of generating and executing a large number of tests. Yet, it argues that the benefits of PBT outweigh these challenges, particularly in complex systems where traditional testing methods may fall short.

I really like this blog post because not only did it explain the theoretical aspects of PBT, the article provides practical examples and case studies to illustrate its effectiveness in real-world scenarios. It also showed like coding examples which really helped understand how it work instead of just trying to imagine how it could look like.

From the blog CS@Worcester – CS- Raquel Penha by raqpenha and used with permission of the author. All other rights reserved by the author.

Blog Post

The piece “Draw Your Own Map” encourages individuals to take control of their career paths rather than relying solely on their employers or societal expectations. It addresses the common notion that programming and career advancement in the field are limited, especially for those who may not fit the stereotype of fresh graduates. It emphasizes the importance of identifying one’s own career goals and taking proactive steps to achieve them.

The solution proposed involves identifying logical yet ambitious career steps and visualizing the incremental actions needed to reach those goals. It advocates for taking the first step, even if seemingly insignificant, as it generates momentum towards larger aspirations. Rather than setting only high-level goals, the article suggests defining small, achievable steps that provide feedback and aid in obtaining assistance from like-minded individuals.

The narrative includes personal stories illustrating individuals’ struggles to pursue programming despite organizational constraints. It highlights the importance of prioritizing personal aspirations over organizational expectations and seeking opportunities that align with one’s goals.

The actionable advice includes listing potential career paths, extending the list to explore additional options, and challenging preconceived constraints to open up new possibilities. It also encourages seeking mentors and kindred spirits who can provide guidance and support along the way.

Overall, the piece advocates for a proactive and flexible approach to career planning, empowering individuals to chart their own paths and overcome obstacles to achieve their desired destinations. What I thought was the most important of this piece is the career planning aspect of it especially since this semester I am finishing up my degree and starting on looking for a career, this also like points me in the write direction on a professional work future.

From the blog CS@Worcester – CS- Raquel Penha by raqpenha and used with permission of the author. All other rights reserved by the author.

blog post 3 – 443

The article “Pairwise Testing” by Ryan Craven explores into the concept and application of pairwise testing, a powerful technique used in software testing to enhance efficiency and effectiveness. Pairwise testing, also known as all-pairs testing, aims to analytically reduce the number of test cases required to test a system while still maintaining thorough coverage.

This blog begins by introducing the problem of combinatorial explosion in testing. Traditional thorough testing, where every possible combination of inputs is tested, quickly becomes impractical as the number of variables or parameters increases. Pairwise testing offers a solution to this problem by focusing on testing pairs of input values. The key insight is that many faults in software are caused by interactions between pairs of inputs rather than individual inputs themselves.

The author explains the core principles behind pairwise testing, emphasizing its ability to efficiently cover many combinations by selecting a representative subset. This approach significantly reduces the number of test cases needed compared to exhaustive testing while still providing effective coverage.

This blog also shares the concept of pairwise testing with a simple example involving a fictional coffee shop application. By identifying the parameters and their respective values (e.g., coffee size, type, extras), he demonstrates how pairwise testing can be applied to generate a minimal set of test cases that cover all possible pairs of values.

Also, the article discusses the benefits and limitations of pairwise testing. While it offers substantial reductions in test case count and provides good coverage, it may not detect faults involving interactions between more than two inputs. Craven advises on when pairwise testing is most suitable, such as in situations with limited time and resources or when dealing with complex systems with numerous input parameters.

This was a good blog post to read because it covered somethings we talked about in class during the group work. Through clear explanations and examples, the article serves as a helpful guide for understanding and applying pairwise testing in real-world scenarios. This is definitely something that will be very useful in the feature as my professional career expanded

From the blog CS@Worcester – CS- Raquel Penha by raqpenha and used with permission of the author. All other rights reserved by the author.

Week 12 Blog Post

The article “Evaluating Test Cases, Checks, and Tools” explores into the process of evaluating the efficiency of test cases, checks, and tools in software testing. This blog post was written by Michael Bolton, a renowned software tester and consultant, the article provides insightful perspectives on how to critically evaluate these elements to improve the quality of testing practices. Bolton begins by separating between test cases and checks. Test cases are comprehensive procedures designed to explore the behavior and functionality of a software system. On the other hand, checks are automated scripts that verify specific phases of the system’s behavior, typically based on a criteria. While both are important to testing, Bolton emphasizes the importance of recognizing their distinct purposes and limitations. The author highlights the significance of evaluating the value and effectiveness of test cases and checks. Rather than blindly holding to predefined test cases or relying only on automated checks, testers should continually assess their importance and effectiveness in uncovering defects and providing meaningful feedback. Bolton encourages for a dynamic and adaptable approach to testing, where testers actively engage in critical thinking and exploration to uncover issues. Also, Bolton discusses the role of testing tools in the evaluation process. While tools can speed up certain testing activities and enhance efficiency, they are not a answer for all testing challenges. Testers must carefully evaluate tools based on their suitability for the given context, considering factors such as work use, compatibility with the testing environment. Throughout the article, Bolton emphasizes the importance of context-driven testing, where testing strategies are tailored to the unique characteristics and requirements of each project. He encourages testers to adopt a mindset of examination and experimentation, continuously seeking opportunities to improve their testing approaches and improve overall effectiveness. “Evaluating Test Cases, Checks, and Tools” offers valuable insights into the nuanced process of evaluating test cases, checks, and tools in software testing. By organizing a critical and context-driven approach, This was an interesting read considering it was very much so what we have been learning this semester. It helped me understand the value and importance of organizing test and to learn more of adaptable approach of testing

From the blog CS@Worcester – CS- Raquel Penha by raqpenha and used with permission of the author. All other rights reserved by the author.

CS Blog Post 1

Breakable Toys is a pattern that shows the importance of learning through failure and trail and error in software development. It teaches that failure is inevitable in the learning process and encourages developers to create small,  projects where they can make mistakes without breaking something permanently . By building a toy systems with similar toolsets to their professional projects but on a smaller scale developers can push their abilities to the limit and gain experience. The pattern suggests building simple projects like wikis, calendars, or address books. These projects serve as opportunities to try out new ideas and techniques without the pressure of real-world consequences in a job scenario . They allow developers to learn from their mistakes, iterate, and grow as professionals. Examples of Breakable Toys include personal wikis, games like Tetris or Tic-Tac-Toe, blogging software, and IRC clients. The idea is to choose projects that are relevant and useful to the developer’s life, allowing them to invest time and effort into exploring different aspects of software development. The pattern also emphasizes the importance of enjoying the process of building these toys. If the projects become stressful, they are less likely to be learning experiences that are successful.Also , developers should be open to the possibility that their toys may evolve into something more significant or even gain other users over time. A classic example cited is Linus Torvalds’s creation of Linux, initially announced as a hobby project to build a small operating system similar to Minix. This shows how even the most significant projects can start as personal experiments or Breakable Toys. Overall, Breakable Toys encourage developers to embrace failure, take risks, and continuously seek opportunities for learning and growth in their craft. By building and iterating on these small projects, developers can expand their skill sets, deepen their understanding of tools and technologies, and ultimately become more proficient practitioners of software development. I have used breakable toys for a school setting but never for just for fun, after diving more to the pattern I will be deepening during my free time. 

From the blog CS@Worcester – CS- Raquel Penha by raqpenha and used with permission of the author. All other rights reserved by the author.

Blog Post 1- CS443

For this weeks blog post I read the article on Testsigma’s Website called “Unit Testing | What it is, How it Works, Types & Top Benefits” by Diane Wong. It talks about the significance of unit testing in software development, giving a full overview of its benefits and best practices. Unit testing is an important feature of the software testing process, involving the testing of individual units or components of a software application in isolation. The main goal that I though was shown in this blog post was to show that each unit has functions as show and how unit testing can contribute to the overall reliability and robustness of the entire software system. The article highlights the key advantages of unit testing, pointing out its role in spotting and fixing bugs early in the development cycle. This is usually done by dividing and testing individual units and this helps the developers quickly pinpoint and address issues and reducing the chances of more complex and costly problems later in the development process. The blog post also discusses the importance of unit testing and how critical it is in the process. Also, the article explains the best practices for effective unit testing, including the using of testing frameworks, test coverage metrics, and the adoption of a test-driven development (TDD) methods. It emphasizes the integration of unit testing into the overall software development lifecycle. In conclusion, the blog post from Testsigma provides a full and informative guide to unit testing it highlights its importance in software development and offering practical insights into its implementation and best practices. This was a helpful blog post to read, since it helped me grasp the information about Unit Testing since it was something we have worked on in the beginning of the semester, it helped it stay fresh in my mind as we learn other wats of testing this semester.

From the blog CS@Worcester – CS- Raquel Penha by raqpenha and used with permission of the author. All other rights reserved by the author.