Skip to main content

Does Customer Knows Best?

· 4 min read
Jan Graefe
Maintainer

Unlock the true potential of your ongoing software projects by embracing the richness of customer diversity. Discover how acknowledging varied goals and distinguishing between aspirations and requirements can reshape your development journey. It's time to move beyond the one-size-fits-all approach and foster a collaborative environment that transforms customer input into a tailored roadmap for success.

In the dynamic realm of software development, the maxim "customer knows best" has long been a guiding principle in requirements engineering. However, as we navigate ongoing projects with a sense that they could benefit from a reevaluation, it becomes evident that assuming a singular, all-knowing customer is a myth that can complicate rather than facilitate effective software development.

This article seeks to delve into the challenges arising from the assumption of homogeneous customer knowledge and proposes actionable strategies to address these complexities within the context of projects that may require a recalibration.

a burning dart Image by MasterTux

The Myth of Homogeneous Customer Knowledge

The potential pitfall of adhering too strictly to the "customer knows best" mantra lies in the assumption of a uniform customer knowledge base. In reality, customers often constitute a diverse group with varying goals, perspectives, and priorities. This diversity poses a significant challenge in transforming their input into concrete requirements.

Action Point 1: Acknowledging Diversity

  • Recognize and appreciate the diversity within the customer group.
  • Understand that each stakeholder brings a unique set of goals, expectations, and constraints to the table.

Action Point 2: Stakeholder Mapping

  • Develop a comprehensive stakeholder map, identifying different departments, roles, and levels within the organization.
  • Use this map to visualize and understand the diverse perspectives that need to be reconciled during the requirements engineering process.

Goals vs. Requirements

While the adage "customer knows best" emphasizes the importance of customer input in requirements engineering, it's crucial to discern between high-level goals and concrete requirements. Customers often express overarching aspirations like "increase efficiency" or "improve user satisfaction." However, these aspirations lack the specificity required for effective software development.

A common challenge arises when customers, in an attempt to articulate their goals, inadvertently propose requirements that may not effectively fulfill those aspirations. This gap underscores the need for guidance in translating broad goals into tangible, actionable requirements.

Action Point 3: Goal-to-Requirement Translation

  • Establish a structured process for translating overarching goals into specific and measurable requirements.
  • Engage in collaborative workshops with stakeholders to distill broad goals into requirements that directly contribute to achieving those goals.

Action Point 4: Customer Guidance on Requirement Formulation

  • Facilitate open communication with customers to ensure a clear understanding of their goals and expectations.
  • Provide guidance to customers in formulating requirements that align with and effectively contribute to achieving their stated goals.

By differentiating between goals and requirements and offering guidance in the translation process, the development team can ensure that the final set of requirements not only captures customer aspirations accurately but also lays the groundwork for a successful and goal-oriented software development process.

Conflicting Goals and Priorities

The existence of conflicting goals and priorities within the customer group further complicates the process. Different departments may have divergent objectives, and individual stakeholders may prioritize features differently based on their roles and responsibilities.

Action Point 5: Open Communication and Negotiation

  • Foster an environment of open communication between development teams and customers.
  • Initiate regular check-ins and feedback sessions to identify and address conflicting goals and priorities.
  • Establish a framework for negotiation and compromise that aligns with the overarching project objectives.

The Importance of Collaboration

To overcome the challenges posed by the diversity of customer perspectives, effective collaboration between development teams and customers is paramount.

Action Point 6: Collaborative Techniques

  • Utilize collaborative techniques such as workshops, interviews, and prototyping to facilitate a shared understanding of requirements.
  • Ensure that all stakeholders have a platform to voice their concerns and actively participate in the requirements engineering process.

In conclusion, while the customer's input remains invaluable in the requirements engineering process, it is crucial to move beyond the simplistic notion that "customer knows best." By acknowledging diversity, translating goals into requirements, addressing conflicting priorities, and fostering collaboration, development teams can navigate the complexities inherent in customer knowledge within the ongoing context of their projects.

Reading Recommendation

  • "Discovering Requirements: How to Specify Products and Services", book by Ian F. Alexander (2009)

Do you need to know how to create good requirements? Discovering Requirements offers a set of simple, robust, and effective cognitive tools for building requirements. Using worked examples throughout the text, it shows you how to develop an understanding of any problem, leading to [the right] questions."

Testing Challenges in Complex Setup

· 6 min read
Jan Graefe
Maintainer

Are your testing strategies stuck in the complexity maze? Discover how to break free, navigate challenges, and build a robust testing framework that stands the test of time. Uncover the secrets to unified testing success – because in the world of software, mediocrity is the real bug.

In the relentless pursuit of project deadlines, the consequences of compromising on testing often come to light post-implementation. The inevitable dawn of quality issues prompts a concerted effort to address testing challenges in a complex setup. However, in the urgency to salvage the project, the critical aspect of thorough and qualitative planning, with the objective of "building quality in," often takes a back seat.

When faced with unexpected quality issues in a complex setup involving

  • multiple development teams,
  • customizers, and
  • a diverse customer base,

organizations are compelled to navigate through coordinated testing challenges.

a team solving a puzzle Image by geralt

The Pitfalls of Testing Dynamics

Lack of Unified Test Concept

In complex setups, there is often an overarching sense of "quality," but primarily from a strategic perspective. The challenge arises from a lack of a unified test concept, as each team operates with its own testers under the charge of team leads, without a detailed test strategy covering the entirety of the software.

Missing "One Team" Sense in Testing

The decentralized nature of testing across various teams and customizers contributes to a challenge in fostering a "one team" sense in testing. Each team may have its own quality assurance focus, leading to potential blind spots and overlooking critical interactions between components.

Coordinating Test Efforts

The coordination of testing efforts becomes a challenge when decentralized teams operate with varied testing approaches. This dynamic makes it more difficult to ensure a comprehensive and cohesive testing strategy that spans the entire software architecture.

Insufficient Cross-Team Communication

The absence of a unified test concept often translates into challenges related to cross-team communication. This siloed approach hampers the identification and resolution of cross-functional issues that can significantly impact the end-user experience.

The Tester's Voice: Fostering Consolidated Testing Insights

To address the challenges of coordinated testing in complex setups, it is crucial to elevate the voice of testers from all teams. Their insights and perspectives should be not only valued but celebrated, as they contribute to the creation of a powerful and consolidated image of the software's testing needs.

A Collaborative Approach

Rather than relying on top-down decisions, embrace a collaborative approach where the voices of individual testers are heard, fostering a stronger sense of identification with the testing process. This not only enhances the quality of testing strategies but also empowers teams to take charge of their testing journey.

The Importance of Listening

Listening to testers from diverse teams is not just about hearing their opinions; it's about acknowledging their unique insights and experiences. This approach empowers testers to shape the testing process, enriching it by uncovering potential blind spots and ensuring that the entire software architecture is thoroughly examined.

Empowering Teams

Empower teams with the autonomy to shape their testing strategies. This not only builds a more resilient and effective testing framework but also instills a sense of ownership. When team members actively contribute to the planning and execution of testing efforts, their identification with the process becomes a powerful force.

A Holistic Approach Across Complex Setups

In complex setups involving multiple development teams, customizers, and a diverse customer base, the "build quality in" approach should transcend individual responsibilities. Quality assurance should not be the sole responsibility of specific teams; instead, it should be an overarching principle embraced by every stakeholder in the process.

Building Quality In: A Collective Empowerment

Recognizing that quality cannot be tested into a product only after development but must be an intrinsic part of the entire chain is pivotal. Each development team, customizer, and customer plays a crucial role in this collective empowerment to build quality into the software from the ground up.

Conclusion: Quality Assurance Starts with Unified Planning and Empowerment

While the challenges of coordinated testing in complex setups may be intricate, it is imperative to recognize that the aftermath of quality issues demands more than a rushed search for test resources. The true solution lies in fostering a culture of qualitative planning, a collective commitment to building quality in, and an empowering environment where every tester's voice is not only heard but celebrated. This proactive approach not only mitigates risks but also lays the foundation for delivering software that stands the test of time.

Concrete Steps to Forge Unified Testing Success in Complex Environments

Here's a short action list on how to overcome the challenges of coordinated testing in complex setups and empower testing excellence:

1. Establish a Unified Test Concept

Develop a comprehensive test concept that spans the entire software architecture. Ensure that every team, including customizers and stakeholders, contributes to and aligns with this unified vision for testing.

2. Foster a Collaborative Testing Culture

Promote a culture of collaboration where testers from diverse teams actively engage with each other. Encourage open communication channels, knowledge sharing sessions, and cross-team workshops to foster a sense of unity in testing.

3. Implement Cross-Functional Testing Teams

Consider forming cross-functional testing teams that include members from different departments and teams. This approach helps break down silos and encourages a shared responsibility for testing excellence.

4. Emphasize Agile and Iterative Testing

Implement agile and iterative testing methodologies that allow for continuous feedback and adjustments. This approach accommodates changes, encourages flexibility, and ensures that testing efforts evolve alongside the development process.

5. Prioritize Test Automation

Invest in test automation to streamline repetitive tasks and enhance testing efficiency. Automated testing can provide quick feedback, reduce manual errors, and allow testers to focus on more complex and critical aspects of the software.

6. Conduct Regular Cross-Team Knowledge Sharing

Organize regular knowledge-sharing sessions where testers from different teams present their findings, challenges, and best practices. This helps create a more informed testing community and enables cross-pollination of ideas.

7. Empower Testers with Decision-Making Authority

Empower individual testers by providing them with decision-making authority over their testing strategies. This autonomy fosters a sense of ownership and encourages testers to proactively contribute to the testing process.

8. Implement Collaborative Testing Tools

Utilize collaborative testing tools that facilitate communication and cooperation among testers from different teams. Shared platforms can enhance visibility into testing activities, making it easier to coordinate efforts and share insights.

9. Encourage Continuous Learning

Create an environment that values continuous learning and skill development for testers. Encourage participation in training programs, workshops, and industry events to stay updated on the latest testing practices and technologies.

10. Celebrate Testing Achievements

Recognize and celebrate testing achievements, whether big or small. Acknowledge the efforts of individual testers and teams to reinforce a positive and empowering testing culture.

Implementing these actions can help organizations overcome the challenges of coordinated testing in complex setups, fostering a culture of collaboration, empowerment, and continuous improvement in testing excellence.

Feel the Heartbeat of Software Testing

· 3 min read
Jan Graefe
Maintainer

If your approach to software testing consists of merely navigating through predefined test cases with specified inputs and expected outcomes, and your only action is to tick checkboxes without engaging in thorough testing, then you are not functioning as a tester; rather, you are akin to a bot.

In the world of software testing, there's a big difference between doing the bare minimum and truly understanding what you're testing. Imagine this: instead of really digging into the software, a tester just goes through a set list of tests, checking boxes as they go. It might look like progress, but it's like scratching the surface without getting to the real stuff.

human finger touches robot finger Image by geralt

The Ritual

Picture this as a ritual: a tester follows a set path, just ticking off boxes with specific inputs and expected results. It's like a dance, but instead of exploring the software's ins and outs, it's more like going through the motions.

The Misleading Idea

Let's clear something up: just ticking boxes doesn't equal effective testing. It might seem like things are getting done, but it doesn't go deep enough to find the hidden problems in the code.

Going Beyond

Software testing is an art. It's not just about following a script; it's about actively thinking and engaging with the software. Real testers don't stick to the script – they go off the beaten path, checking every corner for potential issues.

More Than Just Checking Boxes

Good testers don't rely only on checkboxes in a test execution plan. They bring in critical thinking, creativity, and a deep understanding of how the software works. Thorough testing means crafting tests that go beyond the obvious, thinking ahead, and making sure every part of the software gets a good look.

The Danger of Robotic Testing

When testing becomes mindless checkbox ticking, it's like being stuck in robot mode. The line between a real tester and an automated bot starts to blur. The human touch – the ability to adapt, think creatively, and find tricky issues – disappears.

Conclusion: Embracing The Quality Journey

In software testing, it's not just about getting through a checklist. It's a journey, a quest to really understand what makes the software tick. Let's move past the routine and embrace the heart of testing – an ever-evolving process that separates the real testers from the software bots.

The Role of Regression Tests

While advocating for a holistic approach and the importance of moving beyond checkbox testing to truly understand and engage with software, it is crucial to acknowledge the value of reliable regression tests.

It is the combination of thoughtful, exploratory testing and robust regression testing that forms the backbone of a comprehensive quality assurance strategy.

Striking this balance ensures not only the uncovering of new issues but also the preservation of the stability and reliability of the software over time.

Be aware to recognize the moment to introduce automation into your testing strategy as a key consideration for maintaining an effective and efficient software testing process.

How to become a software tester

· 3 min read
Jan Graefe
Maintainer

About how to become a software tester

Well, you can google this and get a lot of valid answers.

So, this is the story, about I became a software tester.

After successfully graduating from technical college about 15+ years ago, I was hired by a small software development company. It was specialized in software for a small market in the broadcasting sector. The software was very modular, highly configurable and rich in interfaces - either to our own modules or to third party vendors.

My job was to install, configure and take the software into production at the customer's site (within the scope of implementation projects). Furthermore, I provided remote support from the office. If errors occurred during operation, I was the first point of contact for the customer.

At this time there was no tester or test process in my team. Nor was there a clearly defined release process. The developers tested themselves, sent debug versions (all in one *.exe files) via email to the customer. The customer then tried it out and put the version into operation.

This was my first contact with a mantra, which is still with me today:

"The customer tests himself. He knows best. He knows how it should work".

When I sat back in the support office in front of our web portal, I somehow got a different impression. If the customer knew how it had to work, why would he put a version into operation that caused errors after a more or even less long period being in production?

And why were the customers so angry, complaining about bad quality? After all, they had tested it themselves. With their own business processes. And found it to be suitable? Otherwise they wouldn't have put the version into production, right?

I agree, the difference between "testing" and "trying something out" needs a separate post...

In any case, I was tired of constantly vowing better quality next time to customers. I'm sure our customers were also tired of believing me.

So, this small software development team had also heard something about the concept of having independent software testing. Having tests done by a second instance (besides the developer himself) before release the software to the customer.

I found the topic exciting. After all, it would enable me to gain even more better knowledge how the software works. I would also be more competent in answering questions when supporting. We would find errors earlier. We would better understand the customer's business processes. All in all, deliver better quality.

So that's how my career as a software tester started. An exciting job with a lot of build-up work and a steep learning curve.

PS:

Testing in a team with 5 - 6 developers is not a part-time job. And I still had the other tasks, that time. When customer start to order more projects again, I realized that the focus would be shifted. I would have even less time for what had become the job I wanted to do in future. So I decided to say goodbye and work as a software tester from now on.