Fear and Failure. Breaking a Loop

Prologue

I have been trying to write this post for months now. Trying to be inspirational without sounding whiny. Trying to come up with a solution to something I know there is no solution to. Not one anyway. And fearing I'll just look like an idiot. So screw it. I'm just going to plunge the knife in and let the guts spill where they may. I know there are others out there, so the following clumsy mess of a post is for you. Could we really do it any other way?
This post was on my mind during this podcast

To See Me is To See Failure

I am a failure. In the purest sense of the word. I can't do things like other people can. I can't see things like other people do. I kind of have to do everything the hard way at first, otherwise it won't stick. I'm not that smart. I'm certainly not as smart as anyone I work with. I travel in circles of effortlessly brilliant people who are so good at almost anything they do they don't even realize they have a gift. Or maybe, it's just I'm so dumb it looks like a gift to me. Either way, I'll never be a real programmer so I'll just stay low and get what I can.

So this is me. Every. Single. Day. Since I was about 9 years old. Let's not go into the gory details, we'll just say 'I've got issues'. The worst being that damn voice that's been telling me for decades, "You're just going to make a fool of yourself. Stop trying."
It's the worst because of all the problems we face, for me childhood traumas, learning issues, depression...or whatever issues you are struggling or have struggled with, because everybody does, it's not a single issue, it's when they combine into a big dysfunctional Voltron named Fear that we become crippled. If we let it win.
I did let it win. For years. Decades.
There are so many moments in my life that I let Fear talk me out of taking a chance. In school, relationships, work, dreams, passions. I always retreated when that son-of-a-bitch would whisper in my ear, "You're going to fail and everyone will see it."
I never went on that trip. I never switched to the Major I wanted. I never applied for that job. I never told that girl how I felt. I never did that talk, contribute to that OSS project, introduce myself to that team, etc etc, ad infinitum. You know what I mean. If you're still reading this you probably know exactly what I mean. You do it too.
I had two saving graces:

My Mom.

The greatest person I have ever know. She didn't lecture me or impart some kernel of wisdom that suddenly opened my eyes. She just lived. She struggled. Holy crap did she struggle. Bad childhood. Bad marriage. No money. Crippling brain cysts that, if it didn't kill her, would most likely leave her unable to walk. People telling her her whole life she couldn't do things. In the middle of all this, trying to raise 3 boys. She didn't die. She struggled for decades but she walks. She changed her own mind and grew as a person. She climbed out of that vortex of negativity and survived. She is the one who gave me my work ethic and my inability to quit. Just by living. By being who she is. It has taken her entire life, but she is the strong woman she should have always been. She always was, it just took her a lifetime to know it.

My Obsession

In spite of all my doubt, self-loathing, and fear I never could give up on my passion. I still spent every minute I had learning, developing skills, working. Because I couldn't help it. One positive thing of ADD and OCD, when you are interested in something it can quickly become an all-consuming obsession. I don't think that is normally seen as a positive, but that's how I see it. I worked in a completely different industry, doing a job that had nothing to do with technology or programming. But because of my passion, slowly I started to build.

To See Me is To See Redemption (Hopefully)

Turning this around is not a singleton, it's an event loop. I worked at a tiny radio station, when it was bought by a bigger company who installed automation, no one was around who knew what to do. So I did it. Spent nights and weekends leaning the software and the networking I would need to get it installed and running. I moved wherever I could to get any kind of real-world experience. Finally found a small company moving into online learning. With no IT team and a G4 in a closet as web/media server. I was originally hired to do little more than edit video, but I moved into building, installing, maintaining servers. Starting an OSS subset of content we provided. Building sites, chrome extensions, backend code, load-balancers, routers, even the damn IP-phone system. Anything I could get my hands on I would do. Studying whatever I needed at night and applying in the day.
I got really good at Linux SysAdmin work. But I knew I would never be a REAL SysAdmin. I built sites, extensions and backend software. But I knew I would never be a REAL developer, much less a programmer. No matter how far I would come, Fear was always there to make sure I understood that I was only there because these people were desperate and cheap. I was fooling them. I could never leave this lucky situation I found myself in.
I met a guy at a party who worked for a large tech company. We got to talking about programming and he was very encouraging. He was pushing me hard to interview with his company. Fear was screaming at me. I backed off. But, in a rare moment of bravery I finally agreed to do a screening call. The night before I was a complete mess. Fear was having a field day, and by the time I dialed the number I just wanted it to be over. Long story short, I tanked it hard. Embarrassingly hard. It was the dictionary definition of failure. I could answer most of the questions, but I stumbled all over terminology, I apologized a million times, I had answers I was afraid were wrong so I just said 'I don'y know" when I did know. It was everything I knew it would be. In hind-sight, I see how the whole 'self-fulfilling prophecy' thing worked there. But at the time, it was confirmation of everything I "knew", I am a failure who got lucky and never should have stuck my neck out into the 'real-world' of actual developers. It was a bad time. I quit for a while. I gave up on programming.
But I could only stay away for so long. I had to come back to programming. It's just who I am. I just knew I was as far as I would ever go.
A little over 5 years ago, everything changed. The tiny company I had carved a little chunk of life into...went away. One day it was there, the next it was shut down.
That should have been the end of the story. I never would have tried to continue a career in tech. Forget development. I was way to dumb and had nothing to really offer.
But now there was a difference. I had a daughter. I couldn't wallow in self-pity and doubt. I HAD to provide for this kid. Not only financially, but she needs to have a Dad that isn't like I had been my whole life.
I. was. terrified.
This was easily the lowest point of life. I HAD to fight past the Fear and take a chance. I did. It wasn't like something out of a movie. I applied for the lowest possible position at a large tech company. It was dumb luck that one of my interviewers saw something in an answer and dug deeper, realized I was way over-qualified for the position I applied for, recommended me for another. I interviewed, got it and have not stopped since.
That was the point it changed. I decided whenever Fear started whispering in my ear that I would fail and I don't want to try it because I'm afraid I WILL try. It has meant some failures. But failure is no longer the worst thing that can happen to me. Failure is just a tool to re-evaluate, address a problem and try again. Failure is good. At least better than not trying. It has also meant success. Success beyond anything I thought I could achieve. Everyday I log into work and I write code. Not nights and weekends, although I do that too, not because they are desperate and have no one else. Because I worked hard and I took chances that scared the hell out of me and I passed. I am a professional developer. I still have not reached my goal, I'm 10 years behind where I should be, and every single day I drive into work with that damn voice shouting at me.
I just don't listen anymore.
Well...mostly I don't.

Epilogue

Why am I doing this? This post I mean. Why am I spilling out a part of my, mostly pathetic, story for anyone to see?
Two reasons;

  • I know there are others out there who struggle with the same thing. I see it a lot. In fact, people I think are effortlessly brilliant and nothing affects them, a lot of them have struggled with the same thing. Everyone deals with doubt and fear at some point. The difference is between those who let it stop them and those who don't. If an idiot like me[1] can figure it out enough to try, I hope this can help others do the same. You most likely ARE smart, clever, talented enough to do it. Whatever "it" is. Don't let people tell you you can't. Don't let fear be Fear. Use fear. Let it help you figure out what you may be weak on and work at it. Let it be some note cards to keep you grounded. Don't let it become a thing that owns you.
  • My daughter. I happily embrace that I am every cliché in the book with her. She really is the light of my life. The best thing that ever happened to us. Just by being she has taught me so much about myself. She is a brilliant kid and I am already so proud of her. But she is my kid. She comes from genetics that has at least 3 generations of varying degrees of depression and destructive habits. She has a much better childhood so far, my wife and I do everything to encourage and nurture her growth as a person. But even so, I see an occasional glimpse of me in her. I need to be even a sliver of the parent my Mom was for her. She needs to see that she is valuable and can do whatever she is passionate about, and children learn what they live. So I will always keep trying.

Appendix

There are some wonderful people out there who have addressed these topics far more eloquently than I could.
I feel I should share:

  • Giles McMullen-Klein - His YouTube channel Python Programmer is excellent in general but he has a wonderful post about feeling like 'I Can't Code' you should watch if you've ever had doubts.\

  • Kenneth Reitz - If you are here as a python developer I don't need to introduce Kenneth. More importantly for me though, he has been a great friend for years and we often talk about these types of struggles. He has been graciously open with his own struggles to the community which you can see here and here

[1] - It's a process!

Should I say it?

Oh alright...

Hello world.

So, I finally took some time off.

After almost 4 years of non-stop hustle I decided to take the week after Christmas off.

No Adderall®.

No VPN.

No code reviews.

Just family and sleep...lots of sleep. So now I decide to start the programming blog? The week I have basically done nothing but play with Django.

Ok, sure, why not.

So, let's start light. What was 2017 to me?

2017 was...

The year I finally found an IDE. Years of jumping from my neck-beardy elitist "I only use VI!" to Aptana, NetBeans, GEDit, BlueJ, eclipse, Atom, Sublime Text, Text Wrangler, VIm, MacVIm, basically all over the place. I had tried PyCharm in there and liked it but it had a few blockers that kept me from sticking with it. I had settled on an uneasy alliance between Sublime Text 3 and vim when I heard about changes in PyCharm 2017.3 that sounded good so I decided to give it a try again.

I've never been excited about an IDE before, but this thing is amazing! No more jumping through multiple hoops to open a project. Just open it, including remote sessions! All the remote functionality is far more accessible. Opening and ssh session is easy. Running SQL queries from within PyCharm with data handling far superior to Workbench. Using multiple python interpreters including remote is easy now. I definitely love this updated version of PyCharm. 

Most used modules of 2017:

  • Pexpect - I did a large automation program this year that made me quite intimate with Pexpect. At times, an incredibly frustrating module that took a lot of trial and error. I have come to love it. To be fair to pexpect, what I am doing mostly involves out-of-band sessions so a lot of it was literally being invented as I went along. I did not find any mature libraries for ipmi. In fact, I am looking to do some changes to make it outside world usable and maybe publish as an open source library.
  • Records: SQL for Humans - Funny how over the last 4 years what has changed the most in my code is the way I handle SQL calls. In the beginning, mostly out of ignorance, it was very handmade. While that did help me learn super() it was quite a mess. When I think of the inherently insecure, inline way I used to write complicated SQL statements with six.StringIO, jumping through ridiculous hoops. Makes me cringe. (six.StringIO is actually very useful, it was the user not the tool. )
    Anyway, moved of from there to SQLAlchemy and dictionaries for statements. SQLAlchemy is wonderful and basically Records is a wrapper for it. But I find working with records a much faster and unobstructed way to get up and running with SQL. I don't want to think about what's going on to connect and grab the data. I just want an object I can work with full of data. I want to effortlessly be able to spit it out in several formats. records gives me that. It's almost like Requests for SQL. Which makes sense as it is written by Kenneth Reitz. The creator of Requests. 
  • Requests - Duh. Who doesn't? I can't think of a single program I wrote this year that did not use requests. It's the single best package every created for Python. (Full disclosure: Kenneth Reitz is a friend, like, one of my best friends ever, outside of Python - I genuinely love him, but he could be my nemesis to the end of time and I would say the same thing)
  • CSV - I do a looooot of moving data around for business intelligence to use. Nothing beats tab-delimited csv. Not sexy, but true.