My Javascript story: beginning again

I began my programming journey in the late 90s (the turn of the last century…yikes). I am completely self taught, and like many people of that era, I picked up steam with JavaScript through jQuery (ok, originally through Scriptaculous, but who’s counting). At my first programming job, I taught myself about object oriented programming, design patterns, and other concepts through writing ActionScript, but I wrote almost no Javascript. As the Flash star waned and I was laid off, I picked up a giant JavaScript tome, very intent on learning modules and the language in general. What can I say, it became my monitor stand.

Over time, as my other skills improved, my Javascript skills seemed to lag. While I could write a crappy Twitter app with the rest of them, my job mainly revolved around writing the front end templates for various PHP CMS’s, and the JS needs were pretty light. As the language evolved into ES2015 annd then ES6, I was still stuck in the past, with only the occasional peek into the larger frameworks that were beginning to evolve. They seemed like overkill for anything that I was doing (they were).

Suddenly it was 2017, I had done a very small smattering of React and Vue, and I got a job that was 100% Angular all the time. To say I was out of my element is the understatement of the year. I was very eager to learn, but given my position as a senior front end engineer (and in fact the only one on the team), I felt very, very behind and a definite “imposter”. My deep knowledge of CSS, HTML, accessibility and UI patterns were what got me the job, but my total lack of understanding in core Javascript concepts suddenly were painfully obvious to me.

I dove into learning Angular, but I did not back up and dig into plain old Javascript. I found many of the Angular concepts to be confusing, combined with the fact that I did not know what was particular to Angular, and what was just newer Javascript. I also found myself on a larger engineering team, one that did a lot of pairing and discussion, and I soon realized I lacked much of the language to have deeper conversations around programming.

Being a “senior” with all of these deficiencies only served to make me feel like a fraud. I hid it. I seriously considered going into product management instead. Without really being consciously aware of it, I kind of just accepted that I didn’t know all this stuff, that I was too dumb to get it, and I didn’t see an obvious way to learn it. Tutorials and online classes focus typically on the syntax of a specific language or framework. But I felt I lacked the language around something much larger and more fundamental that I couldn’t totally put my finger on.

And ever since then, I have felt myself to be in a perpetual state of fear and shame that I don’t know basic things about a language that I’ve been working with my entire career, and this has completely blocked me from learning. While I perhaps looked up this or that concept on MDN from time to time, the knowledge never stuck with me, and I think it was because I was in a state of shame. These concepts are abstract and hard to really fully wrap one’s mind around, so this frame of mind was just not conducive to learning, which only served to perpetuate my belief that maybe I was just too dumb to get it.

It’s not that I haven’t tried. I think I just never had the right approach. Sometimes I thought what I needed was basic computer science classes. That somehow always ended up in a trigonometry class, which lasted all of 30 minutes before I closed the computer and wondered about my languishing art career. Online Javascript courses are too beginner, and big deep books on languages are typically full of jargon and are way too long (and boring), and overwhelming.

I am an experienced developer with a lot of knowledge, who simply lacks the language to speak about a lot of things and has a lot of small gaps of deep understanding from having cobbled together an education from various languages and just trying to get things to work. So I’ve needed some kind of in between.

Something has cracked inside me, and I’m tired of living in fear. I want to feel confident about Javascript in the way I feel confident in CSS and HTML. I’ve come to realize that if I take away all the emotions and approach this like a simple problem to solve, there is a way to isolate the things that I have found confusing (Promises) or don’t have the right language around (Closures), and find non jargony books, posts, podcasts, or talks that go deep on those concepts. Then I can filter them through my own reasoning and write up some of my own notes. It’s just a matter of breaking it down, step by step, just like programming.

So far, I have found the You Don’t Know Javascript series of short books to be immensely helpful, that seem to occupy just this in between space. I’ve also gone back to listening to Javascript Jabber, and it made me realize something very important. As I’m listening, I won’t get something and have a question about it, which instantly makes me feel dumb. And then not a second later, someone on the panel asks the same damn question.

Interesting, isn’t it? Perhaps I understand more then I know, and I’m just afraid to look like I don’t.