Fear, Shame, and Anger
For the last three months, I was doing something I hated.
You may have seen the bitching on Twitter; or been privy to my endless whining. I’d spent much of that time working on a legacy Perl program, difficult to understand or modify.
Written in a largely procedural style, it lacked most of the object-oriented niceties that I’ve become accustomed to, and for three months my frustration burned.
One day, I snapped.
Do you belong here?
As a woman in technology, almost every day I face impostor syndrome1, fighting to believe that I do know what I’m doing.
Working in something you hate exacerbates that feeling. The emotions burning inside kept me from being able to use the full set of my development skills, feeding the feeling that I wasn’t a very good developer, that I don’t belong.
That I’m faking.
Learning Other Things
Simultaneously, I was learning XCode and iOS development.
I’d been meaning to get on the app development bandwagon for some time; I’ve been carrying a smartphone for years, never quite to the point of truly customising my experience.
XCode itself is huge and imposing, and translating my existing knowledge set was never easy; I learn best when I have a seed, a way of mapping new information to what I know.
When I found that seed, it was intensely liberating. Finally I could find myself weaving together a simple app concept into useful code, avoiding the frustrations I’d faced previously.
It was wonderfully freeing, and I found myself rather enjoying writing ObjC code, static typing and syntactic weirdnesses and all.
Even the Strong
Back to the snap. I used the words “static typing” to describe ObjC, and that concept was my trigger.
I’ve ranted about static type systems for ages, irritated with the idea that the compiler can’t just figure it out. With ObjC, I didn’t mind in the slightest; the Model-View-Controller structures were all familiar, as was the object system.
It slotted in to all my knowledge about programming with nary a blink.
Just Afraid
Not being annoyed by static typing gave me pause; I’d yelled and stamped my feet over Java loudly, continually, yet here I was enjoying the constraints the same concepts and requirements applied to my work?
Why I had been so angry with Java before, where I could give ObjC a free pass? Was I a hypocrite? What was going on?
It Came Down to Fear
Understanding fear is hard. I fear that I’m faking, and will be discovered. I fear ridicule, loss of my friends and career.
Perl isn’t as OO as Python; the constructs are different, as are the base datatypes, as is how one works with ideas and concepts.
That mismatch drove my fear. Real, good developers wouldn’t have this problem. It’s just me, the faker, that can’t do it.
Java was the same; mapping all my ideas was hard work, the static typing is a major mismatch, anyone saying “It’s just a tool” was the enemy, showing my incompetence.
So I didn’t want to work in those languages. I say I hate them. Because I’m afraid.
Shame
Shame is a social mechanism; taught to give the herd power over our actions, to try and keep destructive behaviours in the sidelines.
It’s also often misused.
I’m afraid of a language, because it shows me as a fraud. More than that, there’s the constant cultural messaging that emotions are weakness, to be expunged, that women are “frail” and “hysterical.”
That messaging is passed through shame, and I felt shame at my emotions. Shame that I had them, shame that a language could make me feel fear and uncertainty.
Shame at my fakery.
“Look at her,” I heard the words say. “She says she’s a programmer, but can’t even do Java. Why is she even here?”
Rage in the Machine
Anger is demonised by Western society; women are taught never to show it, and it’s ridiculed when they do; calls of “bitchy” begin, a social shame and silencing tactic.
I got angry because I was afraid, angry at being made to feel shame for my emotions and feelings.
That same anger kept me from being able to use all my knowledge and skills, kept feeding itself. It left me unable to move forward, to do anything but seethe.
Observe, Describe, Release
Snapping was the moment I caught myself being afraid, feeling shame, applying double-standards. Observation is the most powerful tool in my metacognitive arsenal, starting the path to understand why.
That critical moment of going “Why am I so angry?” and the rest starts to fall into place.
I'm angry.
*I'm angry because of Perl.*
No, being angry because of Perl isn't useful. Why am I angry?
*Because it's not Python. It's not OO! It's crap!*
It's not OO, it's not Python. Why is that bothering me.
*I like Python. I don't like this.*
I like Python. Perl isn't Python.
*Right, we don't like it!*
But.. why don’t I like it? It’s just different, and once I find an entry point, the fundamental logic is the same. Mapping points for my knowledge exist, and knowing that helps me say I can learn it, actually learn it.
That I can learn it easily helps defeat the should; even if I “should” already know something, learning isn’t hard. Everything transfers over, my understanding growing more nuanced.
How can I claim incompetence or fakery when I see myself learning like this? “You’re faking” rings hollow when I learn a new environment in mere days, with the right tutorial saying the right thing, giving me that mapping.
“You don’t belong here.” How can I not, when this is how my head works?
In the face of seeing myself like this, I can say I don’t know, not be afraid that I don’t.
This Worked for Me
What about you? How have you approached seeing your own patterns, starting to defang them?