Skip to content

zacacollier/js-tutoring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

(ง°ل͜°)ง Javascript Tutoring

Mindset Check

  • Aspire toward mastery.
Read. Look stuff up. Clutter your browser with tabs for every time you have to Google something, whether out of necessity or just on a whim.

When you don't know something, first and foremost go look it up - read, practice, relish in your newfound knowledge. When you forget about it a day or so later, hang your head, go look it up again, practice more. Give yourself a break; nobody gets everything on the first go-around.

  • Embrace your failures, celebrate your successes.
The vast majority of your time learning Javascript will be spent debugging i.e. fixing shit.

Don't worry, we'll work on developing some skills to help make this process less disorienting - once you remove you bruised ego from the equation, you'll find that it can actually be pretty fun.

  • Write code everyday.
Self-explanatory. You won't learn anything if you don't practice regularly; you won't become proficient at anything if you don't practice daily.

My recommendation? Start as soon as you wake up - drink some water, make a coffee, ignore your pending Instagram notifications, begin coding. Even just 15 minutes to get the ball rolling will help you come back to it later in the day.

  • Enjoy the process.
Learning programming is about changing your brain.

Frustration and confusion are your brain's way of responding to the frightening and unfamiliar surroundings to which you're exposing it. Moreover, they are concrete signs of progress - emotional responses signalling an impending change.

“In the beginner’s mind there are many possibilities, but in the expert’s there are few.” ― Shunryu Suzuki

Pre-Work

Before we begin, I'd like you to complete some readings and exercises. They're listed in order of importance - nevertheless, work on them concurrently or sequentially, whichever suits your learning style best.
Note that I won't expect you to pay for / complete any Codecademy Pro content - the Free track will suffice
  1. Codecademy: Javascript Familiarize yourself with the fundamentals.

  2. MDN: "What is Javascript?" A little slice of the big picture.

  3. Javascript Allongé: Values and Expressions over Coffee "Values are expressions..."

  4. Udemy: "Javascript: Understanding the Weird Parts" Anthony Aliceas' course on Udemy is simply one of the best Javascript resources out there. Once you know enough JS to survive - you've had time to get acquainted with some of it's maddening nuances - go grab this course. When I was struggling with JS at first, this helped me, more than anything, start to feel like I was "getting it". The course lists for $175, but here's how you can get it for about $15:

  • Download the Honey extension for Chrome.
  • Go to Udemy and add the course to your Shopping Cart
  • Go to Checkout. Honey will start doing it's thing.
  • When it's finished scanning for Coupon Codes, the price will have been reduced to about $15!
  1. Codecademy: Learn Git Say goodbye to Github Desktop - from now on, we use Git the proper way, as Linus Torvalds originally intended it. Also check out Try Git.

  2. Lifehacker: Keyboard Shortcuts The faster, the better. If you want to really optimize your keystroke efficiency, I highly recommend you consider learning Vim - see Environment Setup below for details.

  3. Codecademy: Learn the Command Line You'll pick this up more as you go along, but go ahead and learn some basics for now.

Environment Setup & Optimization

The steps listed below are in numerical order, from easiest-to-implement to more involved / time-consuming.
  1. "The Great Suspender" Chrome Plug-in Chrome's a massive RAMhog - ease the burden on your system memory with this plugin.

  2. Remap Caps Lock to Control There are different ways to do this depending on your system, but it's usually pretty easy - Google your OS version to find out how. macOS Sierra 10.12, for instance, allows you to easily remap Caps Lock from within System Preferences (arguably the only positive side-effect of their decision to abandon the Escape key on the new 2016 MacBook Pro).

  • "But why Caps Lock?" Being as Control is the default leader key for some very useful keyboard shortcuts on the command line (which, again, you're going to be using more and more from now on), and Caps Lock is so much more conveniently located. In fact, many of the first consumer-grade computer keyboards shipped with the Control key where Caps Lock is nowadays. Besides, I bet you can count on one hand the number of times you've used Caps Lock in the past month... ;o)
  1. Upgrade and Customize your Terminal Since you'll be spending so much time with the command line, I recommend you select a better Terminal emulator than the one that comes pre-installed.
  • macOS: Install iTerm2 and Oh My Zsh for a much better CLI experience. I recommend using a minimal theme like Avit.
    • macOS users should also install Homebrew: Open a Terminal window (cmd+spacebar, type in "Terminal", hit enter) and paste in this command from their website. Follow the prompts (default configs are usually sufficient): /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • Windows: Install Linux Install Cygwin and configure to your liking.
  1. Start learning vim This will be the most challenging change to implement in your development environment, but the longterm benefits you will gain from being able to write code really fast are absolutely worth it. There are many development environments and text editors out there, but the oldest and most widely-revered standbys are Vim and Emacs. Both have strengths and weaknesses, an extended discussion of which would be outside the scope of this article. Vim is my favorite, for a number of reasons:
  • Lightning-fast editing capabilities - the keymappings are weird at first, but you'll be able to edit text much, much faster once you get used to them.
  • Runs natively in a terminal window - no need to constantly switch between text editors and terminal windows.
  • Lightweight - This because Vim runs in the terminal. I'm pretty OCD about CPU / RAM usage; the fewer application processes I have running, the better.
  • Supported everywhere - Lots of UNIX-based systems even come with Vim already installed. Not only that, but since the configuration is loaded from a regular plaintext file in the host's home directory, it's easy to backup and install from anywhere - for instance, I can host my config files on Github, pull in my .vimrc and load in my preferred settings. The best way to transition is to first install Vim bindings for your current editor. Atom, for instance, has a package called "Vim Mode Plus" that's got all the basic functionality you'll need to get your bearings. This way, you'll be able to learn the basics - moving around, cutting / pasting text - but you'll always be able to fall back on the mouse when necessary. I'll post a more detailed guide on how to get just the right amount of customization in your vim setup, so you can really soup up your development environment when you're ready.
Supplementary materials and guides

I add tips, tricks and tutorials to this repo as I continue to work on it:

More to come!

I'll keep you updated on how we'll be using this repo to co-work on projects and exercises.

About

Resources and Lessons for Students

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published