At WillowTree, we want our clients to see us as an extension of their team. An effective partnership begins with being adept listeners, regularly defining how we can add value to the product we’re working on, and being adaptable to our clients’ needs. Adaptation starts with having some baseline knowledge of the client you’re working with. This gives you context and understanding to help you and your team suggest the most strategic objectives.
Establishing a foundation of communication is the first, and most critical, step to take when starting a successful alliance with a client. You’ll need to consistently maintain communication throughout the lifecycle of the project, keeping in mind business-critical requirements, vision, priorities, goals, and key stakeholders and their roles (such as third party vendors, embedded developer/test engineering teams, etc). This level of communication upholds an honest and open dialogue, keeping your client engaged and aware of discoveries, challenges, and progress-to-date. This is essential to ensuring the success of Agile project plans.
As software test engineers, we know that even the highest quality software is certain to have bugs. A strong relationship between all parties, particularly including the client, can encourage thinking collaboratively and proactively to combat found issues, embrace new ideas and challenges, and apply our –expertise to create a solutions-based flow for the development cycle.
Knowing when and how to communicate with your client is also a critical element to the relationship and product that you build together. Start with listening first. You will do your best work when you have a clear understanding of your clients’ interests and needs. Some other ways to start and keep this line of communication going are:
- Syncing Up: Scheduling regular meetings or video conferences with clear agendas to ensure everyone is on the same page and to clear impediments.
- Norming Session: Have a project-wide forum with new clients, and when team members join, try using games and special project-centric introduction conventions such as, “Tell us your name, your role, your favorite comedian, and favorite place to travel!” This helps your team to get to know the clients as the real people they are. During this time, try to get a sense of their expectations. What is their optimized time for work flow during the day? What is the best way to communicate with them?
- List Making: Create shared lists of blockers/issues, requirements, general questions, and stretch goals.
- Lead by Influence: Send a weekly email with tips, tricks, or education-related reading materials that are relevant to test engineering craftsmanship, or even development-centric webinars.
- Real-Time Communication: Utilize a channel for daily correspondence outside of emails (such as Slack or Chanty). Waiting on emails wastes time and, more importantly, discourages open communication, delaying resolutions that are needed for the success of the project.
- Show Appreciation: Give “shout-outs” to teammates who have completed tasks that have been well done, made “outside-the-box” bug finds, or come up with good new ideas! It feels great to be recognized for our daily wins.
Encourage your test engineering peers to share their ideas with the client and team as well. It is important to keep all team members focused on the product’s quality. Everyone should have a voice when it comes to collaborating with a client—and a good idea is a good idea no matter who has it. Thoughtful, intentional communication with your peers across disciplines instills a team-oriented culture of collaboration where everyone feels equally responsible for the quality of the product.
Before the development process begins, embrace a deep understanding of the technical and business requirements, as well as identification of client resources and competence, so that you can determine what part you will play in the bigger picture of the project. If it is part of your job to understand the requirements and product, then it is also your responsibility to ask questions until you understand. Technical roadblocks and discovery delays can quickly derail a project, adding a lot of time overall, so you’ll want to be sure you have some business requirements nailed down early on to ensure that no one is caught off guard by a lack of information or tools.
Be sure to document as much as possible before the project has begun, and as you go along. Project documentation can help with overall understanding and provides the whole team with a knowledge base that everyone involved can help maintain. It can also assist with short- and long-term estimations, higher quality product for lower labor input, and visibility of any changes made throughout the lifecycle of the project.
During development, while everyone is doing their part to contribute to the project, it is crucial to continue communication to ensure that the client and all involved are communicating efficiently. Keep in mind that honesty is always the best policy. You’ve made estimates and commitments at this point; fulfill those commitments in a timely manner and document them. If you’re unable to meet a deadline, be proactive in communicating that so you can maintain your credibility. As software test engineers, we know that even the highest quality software is certain to have bugs. A strong relationship between all parties, particularly including the client, can encourage thinking collaboratively and proactively to combat found issues, embrace new ideas and challenges, and apply our expertise to create a solutions-based flow for the development cycle.
Depending on how embedded your team is, another layer of contribution is cross-training the entire team, including the client, with the development process. This can provide loads of transparency. If testers understand code, having some code-level knowledge in popular languages such as HTML and Java may help test engineers to better articulate the issues they’re seeing. Additionally, developers can become more familiar with their source of truth—oftentimes the test suite that’s been assembled by the software test engineers— which provides a mutual understanding of the testing methods. This allows developers to write comprehensive code for the product and will help to pinpoint the root cause of issues when reporting bugs to the development team. Continuous learning is a great way to keep clients engaged and make connections that can help you build a reputation as thought leaders.
It is paramount to keep your users in mind throughout because they are what matters most to your client. One of the best things you can do for your partnership is testing in order to improve the user experience. Testing is where you can really let your creativity shine through while still keeping your clients’ priorities in mind. How does the product need to work in order for the user experience to be better? How can the product improve the users’ life? These types of tests aren’t generally put on a check list, but they will ensure the delivery of an improved product to the users.
It’s also imperative to practice good test reporting to your client. Clearly displaying progress, blockers, and the “overall temperature” of their product is very helpful. Regular reporting can also bridge gaps between development and quality assurance by identifying roadblocks or current challenges. Frequently checking in with the statistics can empower your team and client to improve velocity and even provide some actionable insight on risk as well as progress.
While it takes time, if you can gain your stakeholders’ trust and get them to view you as an expert, they will begin to respect your judgment more and question your recommendations less. In turn, this credibility allows you to be more productive and add more value to the business overall. Additionally, it paves the path for the client to not just accept your judgments, but to come to you with questions and seek out your opinion, which is the hallmark of a truly all-star test engineer.