Wednesday, June 10, 2009

1 Habit of a Highly Effective Noogler

So I'm working on this thing, see... doesn't really matter what it is, that's not the point of this story (though I will get into that a bit later - I believe I can tell you, as it's open source), and I was very stuck. And being stuck sucks, as I'm sure you know if you've ever worked on any type of project whatsoever - on one hand, I knew that I could just go to my manager and ask him for help and he could probably do in 3 minutes what I could do in never, because there were fundamental things about the project that I still did not understand. But it's no fun to just go to your manager and flail, "hey, I'm stuck, hellllp meeeeee!" - for one thing, if you do this too much, your manager won't have much confidence in you, plus every time I do it I lose an ounce of self respect from my metaphorical self-respect bucket. But if you sit there too long and don't ask for help, you'll never get anything done... so at some point you have to strike a balance. The problem is, I'd been attempting to strike that balance with little success - I'd called my manager over to my desk a few times over the past few days, scribbled down everything he said, and still had only a vague clue of how to proceed when he left.

I sat and contemplated this problem for a while as I stared at my code and fundamentally did not understand, and then it came to me. Clearly there were things I did not understand, that much I already knew... but what didn't I understand? Solving a problem is much easier when you know what that problem is, and with that in mind, I opened up KJots and made a list entitled Things I Don't Know.

Then I listed them. I started off with a general question, "now what?" (I didn't actually write that down, but I could have), and then expanded it... I knew generally which files I was supposed to be poking around in, so I added that as a question - "what is the relationship between the methods in such and such file?", "which of these methods do I want to edit?", "hey, what's that variable over there?", etc... in about 40 minutes, I had a comprehensive list of everything I knew I didn't know (maybe I should have called it Things I Know I Don't Know?) divided into two categories: things I needed to know now, and things that I needed to know eventually but would probably be better off not knowing now so my head didn't get too full. Then I called my manager over, and we had a nice long chat where he not only explained everything I had known I didn't know, but some things I never knew I never knew as well, for good measure. And now I know that there is still plenty I don't know, but I also know enough to get coding, so off I go!

No comments:

Post a Comment