Rubber Ducky, You're The One
On the silver lining front, one nice thing about WDP is that I get to spend more time with my kids. My daughter has taken to sitting with me on and off during the day, sometimes doing her schoolwork, sometimes watching videos, and sometimes being my debugging aid.
The other day she noticed I was arguing with my computer, doing some Google searches, then yelling (quietly) at
my computer again. After she got over being surprised that I was using Google to figure things out I started
explaining to her what I was trying to do. I was writing a bash script to get the members of an LDAP group and
then
see which members of that group weren't in a different group. Sounds simple, right? Conceptually, yes, but I
wanted
to be able to share the code, so I was making it a little more "production ready" than I might
otherwise
have. It also involved some relatively simple usage of jq
to extract some fields
and I wanted to pretty print the results in a way I could pipe into the next part of the chain.
And
things weren't going exactly how I wanted.
So I explained to her the services I was calling, what I expected the results to be, and what I wanted to
extract. I explained the weird symbology of bash variables and why there were single quotes, double quotes,
pipes
and what a /dev/null
was. I told her what cerberus
was and why I needed to
use
it. I even complained a little about yab
and YARPC and why I wished I didn't have to use it.
She
asked me some questions and I explained the answers to her. And I got it figured out, got the results I needed,
and
was able to share the tool and the results I needed. Then I thanked her for being my rubber
duck.
Initially that confused her even more, but when I explained rubber duck debugging she got that
immediately.
For those that don't know, rubber duck debugging is how you do pair programming when you're alone. You explain the problem, the invariants, the processes and the intermediate results to something, traditionally a rubber duck. And you go into as much detail as you need to make sure the duck understands it. What happens quite often is that you realize where your assumptions and understanding don't match reality. It could be a problem with your memory, the documentation, or something else entirely, but you find the disconnect, and you fix it. Or you find the disconnect and you go update your understanding and then you fix it. And even if that doesn't happen your understanding of the problem goes way up and you can then ask a much better question, which means you're much more likely to get an answer that helps. So next time you run into a problem and get stuck, ask a rubber duck.