Tuesday, April 11, 2006

Betty Has Buttons

I took an interviewing class a long time ago, and the teacher talked about an idea that I'm still finding new ways to apply. She called it a "Betty has buttons" file. The idea was that as she interacted with people, she'd keep a running file with little personal notes like:

Betty has a button collection

or:
Jim likes chocolate chip cookies

Then, when she went back to talk to Jim about something she might know to take some chocolate chip cookies (or a maybe a new button if she was going to talk to Betty). We were encouraged to keep a little notebook with these kinds of notes so that we'd be able to remember things about jobs, interviewers, etc. as we were out looking for a job.

I never did invest in a little notebook for that (and yes, I've managed to keep myself meaningfully employed without it). I have found myself keeping mental lists of all kinds of things to remember and, somehow, I stil refer to them as my "Betty has Buttons" lists. The other day, I happened across a new application, one I should have seen a long time ago.

Sean and I have been ping ponging on checkr for a little while, and I've noticed thathe's much better at finding the next test than I am. It's like a ritual, I get an IM that says "Ok. I solved your test.". Then, just a few minutes later, "Tag! You're it.". Then I go to work. Eventually, I get his test solved and I IM Sean, "Heh, got it.". Then I get stuck. What should we test next? Sometimes I spend longer trying to figure out the next test than I did solving the last one.

This morning, it hit me. I saw Sean's latest test and thought to myself, "Hmm, that looks a lot like the code he wrote a test or two ago. He must have a 'Betty has Buttons' list for tests".

To me, the challenge of getting the test to pass, and tossing it back to Sean had been challenge enough. I'd failed to see that I could be thinking harder about the code I was writing. What it was doing, where it was weak and needed more testing. If I were to make that little investment, If I were to keep a "Betty has Buttons" list about this, I'd be writing better tests faster — and checkr (and my other projects) would all benefit.

1 comment:

Sean said...

I don't have a "Betty has buttons list" but I do have one thing that helps me write tests faster. While I am writing my code, I am thinking hard about how it is weak or possible ways it could break. Because I try to follow the simplest thing that could possibly work, I don't solve these potential problems up front. Instead, I try to decide how I could write a test to expose what is wrong with my code. Its even better when I can pass that test to you and make you fix my weakness. *innocent smile*