I had a rough day at work. I had an "easy" project that I thought was going to take two hours of work that has been killing me since Monday. The problem is at least resolved now, but it was painful getting there.
Basically, there were several issues in play. First, the simplicity has to be wrapped up in a third-party product we use. Second, the interface to that was written by a guy who no longer works there, and he couldn't code his way out of a cardboard box. Third, there is no documentation on this particular set of classes. (Geek note: People who work in agile development circles will tell you that good code documents itself, and generally I agree, but this isn't one of those times.) So basically I was debugging around shit that didn't matter. The black box would only work after you opened it and looked around, which defeats the purpose of having said box.
I was frustrated, and frankly it felt there were no experts who really knew how to do what I needed with the library. Then the brilliant guy who I look up to sits down and calmly thinks it out when I'm at my wit's end. He arrives at a solution.
We had a brief postmortem chat about it all, and he said that getting excited when debugging is counterproductive. Usually I don't get nutty like that, but calm for me comes out of familiarity with what I'm doing. Shove me into a new scenario with new stuff and I start to crack a little. My debugging style is to see a nail, and figure that the best thing to do is grab a hammer and drive it in. The reality is that sometimes there's something in the way of the nail, or you're better off using a screw instead. I can't always take that step back and be more abstract to get to that place.
I gotta tell you, that has been wearing on me all night, because I felt stupid given the simplicity of the solution. (I'm sure that made me more fun for date night!)
I got a sort of reality check when I got home though. A friend did a comp for me to use for my volleyball club's Web site, and it smacked me back to the real world. The truth is that I can take something like that, beautiful on the outside, and back it up with some damn good code on the back end. When I think in the context of the CoasterBuzz stuff in development, most of what's left to do is dropping in stuff I've already written, because it's extensible enough that it's that easy. I don't give myself enough credit.
So while the day was challenging, and the disappointment of knowing I can't hit my CBv4 goal, a little perspective goes a long way.
Stepping back for a while is a good thing to learn, not only in your work, but in life itself.
Many times, simple answers escape us because we are so determined to fix a problem "right now" that we miss the little things. Stepping back for a while allows you to come back later to look at the situation with "fresh eyes".
It's amazing how much clearer things become once you've settled down and calmly start over.
I understand this scenario completely. For me, my performance has a direct correlation to my confidence level. So when I get really stuck I have to challenge myself about why my confidence is low and work from there.
I think everyone has moments like the ones you experienced this week, even the guy who helped you out. That's why it is so important to take the long view on things like ability.
I'm glad you were able to take a different perspective once you got home. Hang on to that. It is part of the bigger picture and that in the end is all that matters.