Coaching Developers Using Rubber Ducking
Empowering problem-solving with the right questions

Has this ever happened to you? You’re wrestling with a particularly challenging coding problem; no matter how hard you try, you can’t find the solution.
That was precisely my situation not too long ago. Frustrated and running out of ideas, I decided to talk to a fellow developer about my issue.
As I began explaining the problem step by step, something unexpected happened. By the time I finished describing the situation, I had an epiphany. Suddenly, the solution seemed clear, and I wondered how I hadn’t seen it before.
This experience was my introduction to the power of rubber ducking.
Rubber ducking is a problem-solving technique where you try to explain your issue to someone else or even to an inanimate object like a rubber duck. Verbalizing the problem often helps you see it differently, making the solution more apparent.
This experience made me realize that sometimes, it takes a little guidance, a different perspective, or a fresh pair of eyes to unlock our potential and overcome obstacles.
In software development, coaching through techniques like rubber ducking can be a guiding force, helping developers navigate the complexities of their craft, grow their skills, and achieve their goals.
By actively engaging in problem-solving and asking the right questions, coaches can empower developers to see their challenges from new perspectives and discover solutions they might have missed.
This article delves into the significance of coaching developers, emphasizing the rubber ducking technique and exploring effective strategies to empower software engineers to reach their maximum potential.
We’ll begin by sharing three valuable tips for enhancing rubber ducking, followed by five impactful questions to facilitate further improvement.
Tips for effective rubber ducking
First, let’s begin with three essential tips to enhance the effectiveness of rubber ducking: practicing active listening, promoting reflection and critical thinking, and cultivating a patient and supportive environment.
Active listening

Active listening fully concentrates, understands, and responds to the developer's words. When you’re helping someone with rubber ducking, practicing active listening is essential for several reasons:
- Accurate understanding: By actively listening, you’ll ensure that you accurately understand the developer’s thought process and the problem they’re facing. This way, you can spot any misconceptions, gaps in logic, or overlooked aspects that might be causing the issue.
- Building trust: Actively listening shows empathy and support, which helps build trust between you and the developer. When the developer feels that trust, they’re more likely to be open and honest about their challenges, leading to more effective problem-solving.
- Asking better questions: Active listening allows you to ask more relevant and insightful questions since you’ll have a deeper understanding of the developer’s perspective and the problem at hand. Your questions can guide developers to reevaluate their approach, consider alternative solutions, or uncover hidden assumptions.
- Providing effective feedback: By actively listening, you’ll have the necessary context to offer meaningful feedback and suggestions. You can tailor your advice to the developer’s specific situation, increasing the likelihood of them finding a solution
Encourage reflection

When coaching a developer through rubber ducking, it’s important to help them step back and examine their problem from different angles.
Encouraging reflection and critical thinking can lead to new insights and potential solutions. Here are some ways to promote reflection and alternative perspectives:
- Ask open-ended questions: Use open-ended questions that require more in-depth responses and explanations, such as “What led you to this approach?” or “How do you think this part of the code is affecting the overall behavior of the system?” These questions stimulate critical thinking and encourage developers to explore their thought process more thoroughly.
- Challenge assumptions: Help the developer identify and question any assumptions they’ve made during problem-solving. By challenging these assumptions, you can reveal new possibilities or potential issues that might have been overlooked.
- Introduce different viewpoints: Share alternative ways to approach the problem or different coding techniques that might be relevant to the issue. This can spark new ideas and prompt the developer to consider other perspectives when finding a solution.
- Encourage self-reflection: Invite the developer to reflect on their thought process, learning experiences, or past projects relevant to the current problem. This self-reflection can help them identify patterns, draw on past experiences, or recognize potential pitfalls.
- Utilize analogies and comparisons: Use analogies or comparisons to similar problems or situations to help the developer gain a fresh perspective on their issue. Drawing parallels to other scenarios helps them identify common themes, pitfalls, or best practices that apply to their current problem.
By prompting the developer to think critically and consider alternative perspectives, you empower them to reflect on their problem-solving process and explore new avenues for finding a solution. This approach fosters more profound understanding, creativity, and, ultimately, more effective problem-solving in the developer’s work.
Be patient and supportive

When coaching a developer through rubber ducking, it’s crucial to establish an atmosphere where they feel comfortable discussing their challenges and expressing their thoughts without fear of judgment.
This type of environment allows the developer to be more open and honest, which can lead to more effective problem-solving. Here are some ways to be patient and supportive during the rubber ducking process:
- Be non-judgmental: Adopt a non-judgmental attitude and refrain from commenting negatively or criticizing the developer’s ideas or thought process. Instead, focus on providing constructive feedback and asking questions to help them solve their problem.
- Show empathy: Put yourself in the developer’s shoes and try to understand their frustration or any difficulties they may be experiencing. Showing compassion helps create a sense of connection and trust, which can encourage the developer to open up about their challenges.
- Allow time for thought: Give the developer ample time to think through their problem and formulate their ideas before responding. Avoid interrupting or rushing them, as this may cause them to feel pressured or anxious.
- Offer encouragement: Encouragement and acknowledge the developer’s effort in tackling the problem. This positive reinforcement can boost their confidence and motivate them to persevere in finding a solution.
- Adapt your communication style: Tailor your communication style to the developer’s preferences and needs. Some developers prefer a more structured and step-by-step approach, while others benefit from a more open-ended and exploratory conversation. Adjusting your communication style can help the developer feel more at ease and engaged in the discussion.
Being patient and supportive creates a safe space for developers to explore their problems, take risks, and learn from their mistakes. This supportive environment fosters more effective problem-solving and helps developers grow and develop their skills.
Five powerful questions

Sometimes, even when engaging in rubber ducking, a solution may not be immediately apparent. In such cases, guiding developers by asking thoughtful questions can be helpful. Here are five practical questions I’ve found useful in these situations.
Question 1: Can you walk me through your thought process and the steps you took to tackle the problem?
This question helps the developer verbalize their approach and identify potential gaps or flaws in their logic.
Question 2: What are the inputs, outputs, and constraints related to this problem?
By asking about inputs, outputs, and constraints, you encourage the developer to define the problem boundaries and ensure they understand the problem’s requirements clearly.
Question 3: Have you considered alternative solutions or approaches? If so, what are their pros and cons?
This question prompts the developer to explore other possible solutions and weigh their advantages and disadvantages, potentially revealing new ways to solve the problem.
Question 4: How does the current code or architecture interact with other components or modules in the system?
This question helps the developer examine the problem in the context of the more extensive system, which may uncover hidden dependencies or side effects that could be causing the issue.
Question 5: Can you explain any assumptions you’ve made during the problem-solving process?
Asking about assumptions pushes developers to scrutinize their thought processes and question whether they might overlook something important.
Conclusion
Coaching developers through rubber ducking can be a powerful and effective way to help them overcome coding challenges and enhance their problem-solving skills.
By providing a supportive environment, practicing active listening, promoting reflection, and asking insightful questions, you can guide developers to discover solutions they might not have otherwise found.
The rubber ducking technique reminds us that a fresh perspective or guidance can sometimes unlock our potential and enable us to tackle even the most complex problems.
As a coach, you can empower developers to grow, learn, and achieve their goals by embracing the principles of rubber ducking and using it as a tool to foster growth and development.
By incorporating the tips and strategies discussed in this article, you can become a more effective coach and help developers reach their full potential.
So, the next time you or a fellow developer face a challenging problem, remember the power of rubber ducking and don’t hesitate to lend an ear, ask thoughtful questions, and offer your support.