Learning programming was exciting and exhausting and frustrating and scary for me, but I don’t think the technical particulars make for much of a story. What can I tell you? I studied for days, weeks, months. I steeped myself in it. I remember attending a coding workshop at one point and impressing a fellow student with my progress. He asked me which books I was reading, which online programs I was working through.
“But how do you do all of that and still make time for friends?” he asked. “I’ve found that balance so hard.”
I’m sure my stare was completely blank. Friends? Were people really still trying to have those?
I slept fitfully, like my entire body was changing instead of just my brain, a milder unfolding of the sort that you see in vampire movies.
I dreamed in code all night long. It would often just scroll past, not making any sense, but sometimes I had beautiful dreams of maneuvering forking streams of conditional statements in a canoe, all Pocahontas-style, or of being truly free to move around inside a program as a piece of data. I sleep with a fat little pork chop of a cat in the crook of my arm, and he was perhaps the most taken aback by all of this, considering how often I tried to call him as a method or patted him anxiously to figure out which instance of a Cat he was.
I dragged myself through bewildering tutorials while fighting the sometimes chest-crushing urge to give up. I would struggle, and struggle, and occasionally break through into 15 minutes of sheer euphoria when something clicked and I could feel myself leveling up.
That feeling of embiggening … my God, there’s nothing like it. It can become your religion. I don’t know why I spent so much time on romance in my twenties. Forget that shit, ladies. Passion fades. Infatuation fades. Invest in something you get to keep.
At its core, this era of my life wasn’t really about programming. It was about the same heartbreaking realizations I made as a coach: The human intolerance, and perhaps especially the feminine intolerance, of imperfection steals away so much of what we could become. As a coach, I would watch women give up, even though they loved their teammates, even though playing roller derby had brought a happiness to their lives that they had never before experienced. They would give up, tearfully, because they just couldn’t stand it. They couldn’t stand feeling small, inferior, stupid, or foolish, and those are feelings you must somehow reckon with if you want to grow. Some of them knew they were being irrational — they knew they were getting better all the time, and logically understood that they would without a doubt continue to get better if they kept going.
But they simply could not keep going. The doubt and humiliation and frustration were too hard to cope with, so I would watch them leave something they loved behind. Because that is the cost of leaving those tough feelings behind: you leave your potential behind, too, along with the joy of accomplishment and the sheer wonder of watching yourself do more than you have ever previously been capable of.
As long as your goal even remotely suits you, as long as it isn’t something completely absurd, as long as you can see logically both point A and point B and how you might get from one to the next, you just have to keep going. That’s all.
It should be easy, but it’s the opposite of easy. It’s wildly uncomfortable. I don’t think I’ve ever had to face down my ego like this before. I hated feeling stupid. I hated not understanding what I was reading. I wanted to throw the books across the room half the time, and why?
Because I didn’t perfectly comprehend everything right away. What a ridiculous, suffocating, paralyzing standard to live with.
I shouldn’t have had to cling quite so desperately to the knowledge that if I kept going, if I fell asleep every night knowing a little more than I had when I woke up (no matter how much of it I hadn’t absorbed), I would get there. But if I’m being truthful, I probably had to remind myself a hundred times a day.
There were setbacks. Rough ones. I got rejected from bootcamp-style coding schools I applied to, for instance. I got rejected for one apprenticeship I had my heart set on, and that rejection showed up in my inbox almost before I’d even left the building. I felt some very big feelings and I ate some very big sandwiches.
But ultimately, it comes down to having faith in the most basic, obvious tenets of cause and effect, the ones we want to ignore in order to keep ourselves safely off the hook. Either programming is dark magic and a human like you couldn’t possibly ever learn it, or it’s just something that takes time and effort to learn, just like a lot of other subjects and disciplines that could possibly wildly enhance your career or your personal life. Either I learned how because I am an amazing human being whom you have no hope of emulating, or I learned how simply because I kept going, because I believed deep down that it is downright impossible to invest lots and lots of time in something and not eventually become better at it.
I also have had to come to accept that programming is such a broad field that I will die feeling ignorant about it. No one knows everything in programming anymore. And that’s okay. It can even be an exciting way to live, knowing there’s always something more out there to learn. You just have to get over yourself first, that’s all.
It’s funny, how often people reassure me (or just themselves) these days that I learned to program because I am special. I’m not saying I’m not intelligent, and my quick reading abilities certainly helped. But if you are waiting for someone exactly like you to accomplish something, just to make sure you won’t personally be wasting your time, you will be waiting for the rest of your life.
There is no one exactly like you. You are the only person alive who can prove that someone just like you can do it. And if you want to, you can keep on exonerating yourself from the responsibility of personal accomplishment by pointing out all of the differences between you and the people in your life who make their dreams come true.
That would make you full of shit, though, just so you know. We all have our limitations and shortcomings, and I am not denying that, but to have been born with the inability to grow, you would have to be far more incapacitated than anyone capable of reading these words.
I regretted giving up programming for twenty years. Along the way, I had multiple opportunities to redeem the situation, and I didn’t, because I thought it would take too long.
But, as my mother is fond of saying in these situations, “That time is going to go by anyway.” And it is. It did. It always does.
In the end, once I decided to fix it, I only had to spend most of my time wanting to cry (and the rest of the time wanting to shout joyously from the rooftops because I had finally found the missing comma that had been ruining my code) for a few months. Those first few months, when you don’t know how to debug your code or get yourself unstuck, are by far the hardest. I still get stuck these days, of course, but it’s no longer the three-day hair-pulling ordeal it once was.
I accepted a job offer as a software engineer in April, a title that may never stop seeming surreal. (Anytime anyone asks me what I’m up to at work, I want to say, “Oh, you know, just ENGINEERING some SOFTWARE.” What.)
And, in a plot twist that surprised even me, it’s also every bit as fantastic as I thought it would be. I did not know it was possible to love a job this much while simultaneously getting paid this much to do it, but here we are.
If you are a creative person who is good with English and grammar, you can learn to program. The idea that you need excellent math skills to do any sort of programming is completely antiquated; expressions in many programming languages these days more closely resemble grammatical sentences than mathematical equations. You do need excellent logic skills (if A, then B, and so forth), but many of the best editors and writers are in possession of those.
Mainly, above all else, you need to be stubborn as all get out, and you need to be prepared to keep going. If you do, you might be less than a year from programming for a living. Only 227 days passed between my first leap and my first day of work.
They were the most challenging and imperfect 227 days of my life. They were also the most empowering 227 days of my life. Inconveniently for humankind in general, that’s not a coincidence.
I recently got in trouble for accepting too many projects. But how can I not? Every time someone runs an idea by me, I want to start building it right that moment, because, twenty years later, I finally know exactly how.
If you regret something, you should fix it if you can, even if it will take a while. I’m with my mom on this one: That time is going to go by anyway.