Mostly Text Recounts of Existence and Code

thoughts on learning

These last few months of self-teaching* myself how to code has been illuminating. Not only have I learned a ton of JavaScript (to the point where I’m not panicking when trying to write a function or even a variable), but I’ve learned a lot about my learning style.

##Breadth vs. Depth I have this burning desire to get under the hood. I always want to know exactly how something works. This is both beneficial and detrimental at times because I get obsessed with reinventing the wheel when the myriad JS libraries in existence (seriously, just google “noun js” and you’ll probably find a library called “noun.js”) are available to do the thing I want. Maybe it’s just me, but I feel as if I’m “cheating” and not learning when I succumb to using a library when I decide it’s not worth my time to build the functionality myself. For example, I wanted to recreate this ‘section snapping’ feature which is popular with single scroll sites that allows each section of the page to take up the full height and width of the available in the window. This proved to be more challenging than I had hoped and eventually I decided to use fullPage.js for my personal site. I was pleased with the result, but still.. I really wanted to do it myself. This same mentality was probably my biggest obstacle when first learning to code a year back. I consistently struggled with fundamentals, and thought “I don’t get it… I can’t move on until I understand this…” but in retrospect, I’d say the best way to understand the fundamentals is to understand the big picture. To step back and get perspective of how each concept fits in programming. To me, the importance of breadth over depth in the beginning is astronomical.

##Patience and Frustration Patience is a virtue. Boy, solving problems using linear logic and a new language is very different from how I tackle problems in real life. I’ve always been driven by my emotions, which isn’t necessarily a bad thing, but it definitely doesn’t help when your inner monologue starts being a bully, “You’re not cut out for this.. just quit, stop now, you’re making a mistake.” My inner monologue may be harsher than the average introvert, but the underlying message is the same. Fear. You’re afraid of doing this new thing that is foreign to you. Your mode of thinking and decision-making is being threatened and is being replaced with logic rather than impulse. “We shall not stand for this,” says your ego. “This neural remodeling must be terminated.” This is what my frustration sounds like. Don’t fall into its grips, for they are fierce. Your frustration is an indicator that you need to breathe and be patient. It will get easier, and you will appear from the smoke much stronger and confident than before.

(note: I don’t know at what point this post became more advisory than reflective, but let’s go with it.. )

##Self-Learning vs. Mentorship If you know me, you know I’ve thought about enrolling in coding bootcamps to accelerate my learning, but instead I chose the self-learning route. Obviously, a big motivator for the latter was the money saved, $12-17k is a lot of money. Now, it wasn’t all about the money. I was seriously considering it. The cost of the bootcamp is nominal compared to the amount of future compensation I would receive for the next 30-40 years, but at the time of me leaving my job, I was still a little unclear as to what exactly I wanted to do within the tech industry. I knew I enjoyed front-end development, but these bootcamps were training people to become full-stack developers. I didn’t feel good about spending the money when I wasn’t 100% sure, so I decided to explore the world of code on my own. It wasn’t easy, but with guidance from my friends and the Internet, I had begun to have a better understanding of the terminologies, technologies, job market, etc.

While I do stand by my decision to spend three months learning on my own, I realized that I am missing something fundamental. Mentorship.

Mentorship is key to accelerating learning. To learn by osmosis from seasoned professionals in your field is invaluable. I think I’ve reached a point in my learning where I have acquired enough skills and knowledge of the fundamentals to be of use in the workforce.

##Last Thoughts When I was in college, lots of things I really I wanted to learn were not part of my curriculum.. I thought, “Man, if only I could take this class, then I could learn this skill and be awesome!” I’m realizing now that that sort of thinking came really naturally to me. Surely it would have helped, but it shouldn’t have prevented me from attempting to learn that skill on my own. As if taking that class would suddenly give me all of the knowledge I needed to learn that skill. For example, I really wanted to learn graphic design, so I kept thinking that maybe one day I’ll take the class and finally learn, but then my last semester came and I never took that class. Based on what I know now, I’m confident that I could teach myself to be a designer. I think we’re predisposed to believe that the only way to learn is with the instruction of someone else and I’m not saying that’s invalid, it’s just limiting.

Welp, BRB, learning how to make icons.. More to come later, folks!

vim, zsh, & jekyll

These last couple of years I’ve used Vim on and off but was always put off by the fact that copying/pasting, moving code blocks, and indenting always felt like a chore. Well, a few days ago I found a video and subsequently the presenter, Mike Coutermarsh’s blog post about learning Vim in a week.

I’ve since rebound my caps lock key to escape, switched over from bash to zsh, am able to navigate my way through Vim using h, j, k, l and other movement keys. Although it’s only been a day of fully immersing myself in the command line, I have to say, it feels great. The more time I invest in actively learning how to accomplish something during this code journey has increased my confidence and ability to push through the difficult hurdles. I am less intimidated by blogs with more code than prose and am becoming way more comfortable with documentation.

By the way, I spent a large part of yesterday trying to install Jekyll to use it as my dedicated blogging platform. It was hell getting rvm and gems to behave with my new zsh shell. After hours of trying to modify zsh, rvm, what fixed it in the end was reinstalling Xcode Command Line Tools, go figure. Despite the headache, I’m pleased with the blog I’ve customized from @mdo’s Poole.

This process of changing up how I work has given me a much better handle on how to use vim effectively as well as a better understanding of how to configure dot files.

Some things to do next:

  • get more comfortable with Markdown
  • learn more Vim keyboard shortcuts
  • version control dot files

Coding Journey, an Introduction

Two months ago, I quit my job as a Media Manager to pursue a new career as a front-end web developer. I’ve since decided that it would be beneficial to keep a coding journal where I could publish my understandings as a means for future reference and potentially help others on a coding journey like myself. The web is an invaluable resource to me during this learning process, so hopefully these records will be of use to someone.

The following is a short list of some of my observations/advice from my journey thus far:

  • Accept that you don’t (have to) know everything. Being able to search for something is more important than memorizing minutiae.
  • Don’t be overwhelmed with frustration, it’s your brain trying to learn. Take a walk or a nap and let your brain make the neural connections.
  • Learning to code is like scaling a steep mountain. Your consistent effort compounds, so don’t lose momentum. Code every day.
  • Everything you do, for better or worse, you do for yourself. Be accountable for your actions. Create a rigid schedule, and be mindful about time sinks like binge-watching videos unless it’s related to what you’re learning.
  • Make things that you would like to use.
  • The feeling of finishing a project that you dreamed up from start to end is so rewarding.
  • Exercise, go outside, do social human things.