My first programming language was COBOL.* That was back in the day, when mainframes were all the rage. I was hooked by the buzz I got from seeing the computer do what I told it to do, even if that was “please spit out pharmaceutical sales reports on green bar paper.”
After a few years of designing and implementing enterprise software, I found my passion: designing software so that people can build enterprise business applications without writing code. Heresy, I know, but it is rewarding work. It opens new job opportunities for people without Computer Science degrees and without having to learn to code.
So I’m an old-timer, but even though I’ve kept up with technology (learning Object-Oriented Programming, coding an Apex Trigger or two on the Salesforce1 Platform, and hacking in Xcode to make a mobile app from a toolkit), I do not code every day, and I never formally learned JavaScript. I understand how it works, but I’ve never had to do more than tweak it. Now, I do. My work at Salesforce involves creating content to educate our developer community. One of our tools is Lightning Components, a new way for Salesforce Developers to build custom user interfaces, and it’s powered by JavaScript. I realized it was time for me to finally take the plunge. I had to learn JavaScript.
Perfect Timing
Just as I was wondering where to start, I received an invitation from Girl Develop It NYC to attend their Intro to JavaScript + JQuery class. Four Monday nights in February. It was exactly what I needed - a supportive, no-stupid-questions, in-person environment. So, without checking with my wife to make sure the timing worked for our family, I grabbed a spot. I know there are many online courses, but the thing is...I lack discipline. I can't go to the gym by myself; I need a personal trainer. I can't learn on my own; I need a teacher.
Class 1: It’s the storm of the century & I need chocolate
Feb 2nd was the eve of the storm of the century. I thought, maybe I'm not supposed to learn JavaScript?! (Let’s assume I was nervous about being a newbie, and not so self-centered I thought the weather was a sign specifically for me.)
The weather was too rough to leave my home, but luckily, the instructor sent the slides to all of us who couldn’t brave the ice. I was back in the game. I am proud to say I was disciplined enough to stand in my office and learn JavaScript from 7-9PM, even if it meant not being able to put my little boy to bed.
Class 1 started with Terminology and Tools. I already had one of the tools: Sublime Text Editor, and was excited to learn about Repl.it. Then, it worked us through building a simple HTML page with some text and a link, step-by-step. The link calls a function that calculates a lifetime supply of our favorite food (in my case, chocolate) and pops up an alert with the result. World-changing stuff, I know.
Some concepts and syntax were familiar, and some were new. For example, I am used to declaring variables in Apex Code, where they require a specific data type. It was a little uncomfortable not having to specify the data type for JavaScript variables. Eventually, I got used to it, and started loving how the compiler could read my mind.
Again, I felt that familiar “Hello World” buzz: *I* made this web page. That alert is popping up because *my* If statement is correct. I’m *awesome*! (it’s possible that I did a little happy dance in my office).
In the morning, I interrupted breakfast to show my 8-year-old son what I made. His coding experience includes two hours of coding over the past two years. After his first hour, he leaned back with a confident air and stated, “I’m a coder.” And we’ve been talking about code ever since. He helped me tweak the CSS on my website (although after much consideration I decided to go with the blue of my Converse and not the purple and green he’d chosen). I really had to prove my dev cred to him, since he was such a pro.
“See I made this page, click on it!” He did and was rewarded with my alert:
He smiled and nodded (which in boy terms translates to “that’s cool”). I didn’t get a high five, but I think that with more practice, I’ll earn one soon enough. All I cared about was him being ok with me not tucking him into bed.
Class 2: Wintery mix & I get coffee
Feb 9th, the weather was what we call in New Jersey a "wintery mix" - this is a delightful combination of snow and rain and sleet and hail. Another sign from the universe that I should stay home?!
No. I was determined to go, and I had two coffee dates lined up (when you work at home, coffee dates keep you sane). So, I braved the weather and the subway, and I made it to class. I was REALLY glad I'd done the Class 1 work - without it, Class 2, which extended those samples to show us how to work with arrays and loops, would have made no sense. I gave myself points for discipline.
In class, my years of experience coding things incorrectly really helped me. I did a lot of debugging (coding is all about syntax errors: missing parentheses, typos in variable names, etc.). I kept up and was able to write a For loop to add items to an array that had 2 properties, and make new functions like nobody's business. I admit that I relied on Sublime's syntax helper to stub out the If statement format and the For loop format (of which it seems there are 2). But that’s what the syntax helper is for, right? It’s like spellcheck for coders.
The slides were very comprehensive, so I could have done this class from home and still learned the concepts, but I liked having someone right there who could look over my shoulder to help me find that missing semicolon. I also liked helping other women debug their code or understand a new concept.
To my left was a woman who was probably in her mid-forties, like me. She'd done "Web Production" ten years ago, then stepped out to be a full-time mom. Things had changed in those ten years...a lot. So, she was retooling. She learned Ruby online, and dug it. Then, she learned HTML/CSS with Girl Develop It, and now was learning JavaScript. She was totally getting it.
To my right was a younger woman who had been tweaking web content at work, knew a little HTML and CSS, but had no background in coding concepts. She struggled with the conceptual hurdles like “what is console.log DOING?” I could relate it to "Print" statements I'd seen in other languages, but without that frame of reference, it was mysterious to her. She also hadn't done the work from Class 1 (just sayin'). Lesson learned there is it is really hard to catch up, and everything builds on everything else. It's like trying to do multiplication without understanding addition, or to conjugate verbs in Spanish without understanding the general concepts of Past, Present and Future tense.
JavaScript Dreamin’
That night I dreamt about JavaScript, and I woke up smiling. On my bedside was Building JavaScript Games by Arjan Egges, which had arrived while I was in NY at class. I’d read the intro before bed, and was captivated by the evolution of programming languages, from Assembler to Java, and then how web programming evolved. I’ve been doing this a long time, but I’d never connected the dots the way Egges does.
In the morning, I told my son how I'd made a new link that displayed the names of my friends (who were all Peanuts characters). He was less impressed. Me too - I wanted to make something useful, like a game. I showed him the book and told him that was my next step. True to form, he confidently said he already knew how to make games (this was news to me). Turns out he'd read an article in National Geographic Kids about game design…so, now he’s an expert. Between the two of us, I’d say we're ready to co-found a startup...after I finish this course!
Halfway there
I’m at the halfway point now, which feels good. The concepts are clicking in my brain, I’m not just copying & pasting the answers (in fact, I type everything, even if it is on the slide and seems simple - I screw up every time, which forces me to learn a little deeper). We have to learn a whole new topic for homework, so I need to stay disciplined and make time for that. Homework is about manipulating the DOM (Document Object Model), which sounds intimidating, but also really exciting, and is the type of thing I’ll need to do with Lightning Components. I enjoyed talking with the two women I sat with, and I regret not being in the first class (where everyone introduced themselves). Next week, whatever the weather, I’m going to get to class early to meet some other newbies.
*Shout out to Grace Hopper (December 9, 1906 – January 1, 1992), who invented COBOL and retired at the rank of Rear Admiral in the Navy (which is no small shakes). To learn more, see this new short film, The Queen of Code, and for fun see this Letterman interview.