So, part of the deal with OPW is that I'm supposed to blog about it frequently. Weekly, in an ideal world; but definitely every other week. At a month in, I still haven't written a single post.
The problem, as always, is a fear of looking stupid. I wanted to write about all the impressive stuff I've been getting done, but as far as productivity goes, I might as well have spent the last month writing ascii art porn  to my boot sector.
I've bared my soul to a few of my closest friends, wondering whether I am really cut out to be a programmer. They have all attempted to lift my spirits with their words of wisdom, resulting in several Hallmark moments:
Friend: You expected to get things done during your first month? BAHAHAHAHAHAHAHAHAHAHA!!!
Me: You're spitting on me. When did Skype add that as a feature?
Still, I've been trying to figure out what the problem is. There are 4 explanations that spring immediately to mind:
- I chose a project in a language which I have never used
- That language is Perl
- I am using Arch
- I am a dingbat
I'll write about the first 3 points in another post; for now let's look at #4. 
So let's get one thing out of the way: I'm an idiot.
This statement has nothing to do with my IQ - in my experience, high intelligence usually just provides people with more impressive rationalizations for their bad decisions. I'm no exception. It's only recently that I've started trying to break up that little team, and set my intelligence against my inexplicable, but apparently very strong, desire to destroy my life. 
This process is two-fold - first, I have to acknowledge that I am, in fact, an idiot: When things are going badly, I have to repress the urge to blame outside factors, and look at what I might be contributing to the situation. The second, far more difficult, part, is to keep going.
Check it out:
>>> "I am an idiot" == "Time to give up" False
Thanks Python! See, good decisions are all alike; every bad decision is bad in its own way. The advantage of acknowledging your dingbattery is that you can then look at it, analyze it, and figure out how to change it.
Holy Cow Lady What's Your Point?
Keep your pants on, imaginary interlocutor, I'm getting there. Here's my current problem-solving technique:
- get pissed off at $problem
- realize that my confusion is not $problem's fault
- get pissed off at my own stupidity
- realize that getting pissed off at my own stupidity is not solving $problem
- actually deal with $problem
After analyzing my log, I found that the vast majority of my time is being spent in #5,  so that's where I need to optimize.
Hey, you know what can save you a lot of time when you're working on an unfamiliar codebase in an unfamiliar language with unfamiliar tools? Asking for help. I haven't been doing that, for fear of looking stupid - but really, who do I think I'm fooling?
Once my 6-year-old nephew came in to the living room and solemnly informed his parents that he did NOT accidentally set his bed on fire, but maybe they should go look at his bed. No reason, just it was a pretty interesting bed and they might want to have a look. He definitely didn't set it on fire or anything.
New programmers - when you say you know what you're doing and are not confused, that's how convincing you are. Seriously.
I've learned how to help myself. Now I'm going to learn how to let other people help me. In both cases, the key is to embrace my inner dingbat.
|||I want you to think about why you clicked on this footnote. What was the best-case scenario? Seriously, please, just take a minute to consider the life choices that led you here.|
|||some might argue that it encompasses the others anyway.|
|||I've nearly automated the others, which is great, because they're really quite tedious.|