Originally posted on devdiary.club
There was a recent viral meme tweet that hit home in regards to my learning to code journey.
However recognizing this, this fear of failing to do something perfectly, is not something that was easy to identify in myself.
In fact, if you asked me, I'd say I'm pretty comfortable with failure. That I totally understand that in order to succeed, there will be failures along the way. I'd tell you about how I've failed publicly and been transparent about it. Like the time I attempted #100DaysofCode and only got to day 70...three times.
I've excelled at everything I've tried academically. That sentence feels wild and annoying to say but it's real. I was in advanced and AP classes in high school, I pursued Psychology with an emphasis in Economics in college and tested out of requirements for other courses. My challenges in college were mainly due to attending a PWI in small-town-racist-Pennsylvania and trying to survive that rather than anything academically strenuous. I wasn't even especially disciplined, just an avid reader with never-ending curiosity. And it was these experiences that have given me this faux comfortability with failure.
Learning to code is one of the most challenging things I've ever done. It's also the first thing I've tried (that I've dedicated time, effort and resources to) that I haven't excelled at quickly. Somehow no matter how many Medium posts I read that explained how what I was feeling was normal, I managed to internalize that maybe coding was in fact something I could not do. It's made me cry, it's made me angry. I was feeling:
Why has this been so hard for me to grasp? What can I do to set myself up for learning success? How do I stay motivated through the rough patches?
Pry is a ruby gem that is a type of REPL. REPL stands for read, evaluate, print, loop, and is an incredibly helpful program for debugging. I was already familiar with IRB, the interactive REPL that comes with Ruby, but apparently Pry had even more functionality. I've admittedly been avoiding pry since learning about it.
I understood that putting
require pry at the top of a file and placing a
binding.pry somewhere within a method did something but I didn't understand what to look for once in
Recently a ruby problem caused me a lot of grief and the desert of despair and I became good friends. I tried everything and it felt like no matter what I did the tests remained failing.
I realized this type of coding could not go on. Just running tests, crossing my fingers, hoping for passing; and when it failed, not knowing which direction to head in.
I was going to have to learn pry and understand it to be able to troubleshoot this problem. Ugh, right? 😭 I'm sometimes in such a rush when coding that I have to remind myself, there is no race, no deadline, and nothing is urgent. Going back to learn something I should have dedicated time to learn earlier made me even more frustrated with myself. It felt like I was trying to go to the gym and work out all day, instead of going for 30 mins a day, 5 days a week, and expecting the same results. It didn't make sense. Cramming just wasn't going to work.
This avoidant behavior; that was a choice I was making. A bad one obviously. And it was kind of how I was approaching learning to code. I've never really had to do a thing I was bad at, and I've also never tried to keep doing a thing I felt I might be bad at. But here was coding saying "Not on my watch!"
Things I was doing a.k.a. a list of don'ts
- being comfortable with being demotivated
- not asking for help
- not spending the time to use the resources available to me
- trying to power through on a superficial understanding
- feeling guilty about not coding a bit daily and overcompensating for it by rushing through lessons
This process is not linear and it's certainly not easy. Some things that have helped me are:
asking for help when you need it: it's easy to get demotivated when you spin your wheels on a problem. No shame in asking for help. Coding is a team sport!
being consistent: this is hard AF but arguably the most important. Discipline begets consistency.
tracking your time: it's eye-opening to see just how much time you are actually spending on a thing. Beating yourself up for not understanding recursion? Is it because you only spent 1 hour trying to learn it? Be gentle and reasonable with yourself.
learning how to learn: learning to code was different than anything I've learned before. I'm a native Spanish speaker, and had an easy time picking up French but programming languages were a whole new world. Figuring out how to learn and retain information best is more beneficial than knocking out X number of tutorials.
giving myself space to learn: I'm not ever going to know everything. What's simple to me might not be simple to you and vice versa. I used to self-deprecate when I couldn't solve a problem that felt "obvious" once I was told the answer. This was a disservice to myself and I just ended up frustrated. Instead of treating failed problems like a personal failure, I now treat them like a learning opportunity and welcome doing better next time.
Shout out to
pry and that Ruby problem being the reality check I needed to prioritize my learning and personal growth.