Last night I was working on a code problem and not getting anywhere with it. I had to write some code (an algorithm) to convert a sentence into “Spinal Case” like this:
“My name is Ryan Lowe” = “my-name-is-ryan-lowe”
The problem was there were several other conditions that my code was failing, like when the original sentence was “myNameIsRyanLowe” or “My nameIS-Ryan lowe”. The algorithm needed to figure it out no matter what format of original sentence was entered.
So between 9pm and 11pm I failed over and over to get it right – feeling profoundly stuck and frustrated. All the while my morale was dropping and thoughts like, “You’ll never get this, it’s too hard” crept closer and closer to establishing themselves permanently in my core belief system. This is the important part, because if that had happened I might have stopped learning code and just gone back to doing the code I already know and am comfortable with. And that would be have been bad.
The problem with change is this: it’s easy and comfortable not to change or to change in a negative direction, it’s hard as fuck and extremely uncomfortable (mentally and sometimes physically) to change in a positive direction.
I don’t know why this is but I’ve noticed it in myself and it’s a pain in the ass. Any time I embark on a serious mission of positive change (such as learning difficult code) the road of progress is fraught with signs that read “You’re just not suited for this” and “It’s more efficient and profitable to continue to perfect the code you’re already good at.”
These thoughts seem to be an automatic reaction to my immense psychological discomfort while trying to grasp new and abstract coding concepts. Concepts that I struggle to even somewhat understand, and that struggling makes me feel both stupid and incompetent. Feeling truly stupid and incompetent is so uncomfortable for me that I’ve already given up at learning 4 other coding languages prior to this attempt. Each failure has hardened the core belief that I’m just not all that good at abstract “back-end” code and I should stick to the stuff I’m good at (design and “front-end” code).
Yet here I am, back at the drawing board and trying for a 5th time to “get it”. This time I’ve made more progress than ever before, been more consistent in studying, and have come to truly grasp some of the concepts that have baffled me in the past.
So what’s different this time? A couple things have helped a lot. The first is knowing that learning something new hurts a lot, especially when I’m not picking it up with ease. Knowing that I will be in a constant struggle and want to quit helps me not quit because I’m prepared for those feelings in advance. They still suck, but at least I’m more aware of them and can be cautious of their ability to sway me towards giving up (again).
The second thing that has helped is being aware of the idea of my own personal “depletion” throughout a given day. Smart sciency people have figured out that our inner “wills” become depleted throughout the average day as the weight of life grinds us down and weakens our resolve.
Events like dealing with a difficult client or arguing with a family member do actually decrease our ability to be our “ideal selves” and increase the likelihood of our self-destructive behaviour.
This knowledge suggests we should do the hard things first, like work out in the morning. We are far less likely to have the resolve to work out at the end of the day after having dealt with all the other crap.
The good news is our depleted “will-power” levels reset every morning, after a good sleep. So if something feels impossible, I’ve learned to just leave it the fuck alone for the night and to give it another shot after I’ve slept. It has worked for me in the past, and it worked for me again for the algorithm problem. This morning, with a fresh tank of “I can fucking do this” in my head, I solved it in under 10 minutes.
And, for now, I feel neither stupid nor incompetent.