I'm Jen and I’m in my mid-30’s, making a career change into tech. I'm on Manchester Codes’ Software Engineering FastTrack course - a part-time, 24-week bootcamp based in Manchester, UK.
'Finishing' JavaScript
A couple of weeks ago, my bootcamp course buddy mentioned in passing that by the end of the two-week project we were working on, we would have essentially 'finished' learning JavaScript. That made us both stop and pause...'finished JavaScript?! Wow! Surely not!'. But sure enough, the curriculum showed that we were about to move on to the Backend part of the course, followed by React and a group project. What it meant is that we had reached the end of the JavaScript teaching modules - sure, we'd continue to use and learn JS throughout the course (I'm pretty sure there's the small matter of asynchronous JavaScript still to come), but we had been taught all the fundamentals, from variables to if
statements to array methods and everything in between. In theory, we now had all the building blocks we needed to make wonderful things out of JavaScript.
Now of course neither of us really thought that we now knew all there is to know about JavaScript - far from it. Don't take the title of this blog post too seriously. I imagine that even developers who have been working with the language since its inception in 1995 still learn something new from time to time, not least with each new version of the language (looking at you, ES6). And even 10 weeks into bootcamp, we are a long way from that - we are still, to use Twitter's hashtag, 'Code Newbies'.
However, a quick scan of some other JavaScript resources I had to hand - namely Codecademy's Learn JavaScript course, John Duckett's JavaScript and jQuery book and Marijn Haverbeke's Eloquent JavaScript book (all highly recommended by the way) - confirmed that we had, by and large, covered pretty much all of the concepts, either in depth or in enough detail to have a basic grasp of whatever x, y or z concept was on about.
To see all the things we've covered written out is satisfying:
- Data types (primitive and complex)
- Variables
- Operators
- Expressions
- Blocks
- Scope
- Functions
- If statements
- Loops
- Arrays
- Objects
- JavaScript and the DOM
- Events
- Error handling
- Modules
- ES6 features e.g classes, arrow functions
- and more besides....
A solid grasp of the fundamentals
A few months ago I signed up to an interesting JavaScript email course that I'd seen on Twitter. I was feeling pretty happy with my basic JS knowledge at that point, having been studying it via Codecademy for a little while and reading Eloquent JavaScript. (I say 'happy'...a better word might have been 'smug').
(What's the email course? Dan Abramov's Just JavaScript. If you are a JavaScript developer, or you're some way into learning the language, and you haven't yet come across it, I highly recommend it. It's a series of emails that aims to give you a better understanding of the fundamentals of JavaScript. I believe there are plans to turn it into a full course.)
The first email arrived, with the extract below. I fell at the first hurdle - at that time, a few months ago, I just couldn't understand why b
wasn't 0
at the end too, because b
was whatever a
was, right? So it would change to 0
too, wouldn't it? Wrong.
let a = 10;
Declare a variable called a. Set it to 10.let b = a;
Declare a variable called b. Set it to a. Wait, what’s a again? Ah, it was 10. So b is 10 too.a = 0;
Set the a variable to 0. So a is 0 now, and b is 10. That’s our answer.
Extract from Dan Abramov's excellent Just JavaScript
I abandoned the rest at that point. However, fast-forward to a week or so ago and Anna, another buddy from bootcamp, pointed me back to the emails again. I nervously took another look and HURRAH! what Dan was saying now made sense. We had just finished a lecture on the concepts of pass by value and pass by reference in JavaScript. A terrifying-looking example about spreadsheets at the bottom of that first email, which had sent me running for the hills before now made sense and what's more, I could understand the bug Dan was talking about! What a good feeling! Somewhere between learning the basics and 'finishing' JavaScript, we had inadvertently absorbed some of the fundamental understanding that had escaped me previously. We may still need to go to W3 schools or MDN most days to remind us what parameters the splice()
method takes, but we can throw together an ES6 class and iterate through an array with the best of them. There are tough weeks ahead (backend 👀 ) so, for now, we will celebrate the wins!
Cover photo by Adam Winger on Unsplash