A proc is a block of code that is passed into other blocks of code. But it’s different from a block because a block isn’t an object.
It took me 3 days to understand that. It might take me another 3 weeks to understand how to use it. And that’s saying nothing about using it well.
I’ve been confused many times in academia. It’s possible that my standards for “understanding” are higher than average. It’s possible that I’m slower to understand than average. And it’s also possible that I am more expressive about confusion than average. Whatever the explanation, I’ve become accustomed to that sense of being enveloped by fog, unable to see the beginning or end; hearing sounds I recognize as words all around me, but not knowing their source and not being able to distinguish what is important from what is not.
It used to be frustrating. Not understanding. Not knowing. More importantly, not seeing a way out into the comfort of things I could see and touch and hear clearly.
But I realized recently that I actually didn’t seek an end to confusion. I sought precedence. A series of steps to take out of confusion. And then I realized that this precedence had already been set. Many many times over:
Confusion → Frustration → Abandonment → Revisit → Confusion → Frustration…
Becoming familiar with the sequence of how you naturally deal with confusion is extremely useful. Shereef reiterates every day that we are here first to learn how to figure things out, second to learn Ruby or Rails.
The better I understand my confusion spiral, the more I’m beginning to enjoy it. I’m finding that I’m actually seeking out confusion, at least as a programmer. The more often I find it, the more familiar my spiral gets, and the better equipped I am to deal with it the next time around.
Confusion is amazingly rewarding if I give it a chance.