Skip to content

Latest commit

 

History

History
311 lines (225 loc) · 24.8 KB

File metadata and controls

311 lines (225 loc) · 24.8 KB

00 -- Ready Player One

Like we said in the introduction, learning a technical skill from watching videos and answering questions is very difficult. The initial inertia of new Skill Acquisition, however, is only overcome through repeated exposure. Throughout the course, we'll refer to the coursework as either Activities or Exercises.

Activities just need some application of effort, a few checkboxes, and they're done. There's not a lot of value in repeating them, but you should if you feel that you missed something or didn't get all the steps right. These are the types of tasks that just need to get done, so just do them.

Exercises are best applied in a regimen: spend an hour or more a day getting as far through each of them as you can. The real magic happens when you start over from the beginning each time and watch your progress extend on each pass. Just like exercising your muscles in a gym, the repetitive-but-delayed effort makes you stronger.

You'll find a checklist for Activities and another for Exercises to help guide you along the way. Additionally, keep in mind:

  • There's a lot of work in here! So take as much time as you can afford and pace yourself! There's some advice on The Iterative Process in the wiki that can help...
  • Resist the temptation to perfect just one thing! That's not really what the class is like, and you'll cheat yourself in the end. Spend as much time as you can with everything.
  • Space out your practice! One of the most effective ways for you to learn is to put some distance between your sessions. Don't try to tackle everything in one sitting!
  • Effortful learning is slower but more durable! If you find yourself getting stuck somewhere, put the work down and come back later. You're learning, and that takes some time.
  • Reflect on your progress daily! We've provided a format for daily reflection to help overcome any writer's block. Reflection on your progress is one of the most valuable aids to learning.

Important! If you're new to Mac, not a typist, or just always wondered what the internet was made of, start with "Back to Basics" in the wiki.

Activities: Once is enough...

These activities are more like "won and done" events. They might take a while to accomplish, but re-doing them doesn't really have massive value. Just follow the instructions and get to the finish line. If you get stuck or need a re-do, there are instructions included on how to restart.

Exercises: Rinse, Lather, Repeat...

Princess Buttercup: "To think -- all that time it was your cup that was poisoned..."

The Man in Black: "They were both poisoned. I spent the last few years building up an immunity to Iocane Powder"

-- The Princess Bride

A lot of the skills you're going to acquire are just a little weird compared to the rest of life. Repeating these exercises is kind of like building an immunity to The Weirdness (of the internet) by inviting it over for dinner... repeatedly... over time.

Reflective Journal: Best taken daily...

Reflection is one of the most important parts of learning. Take time each day to reflect on what you have learned, what you have struggled with, and what is still completely weird and foreign. We'll do this together in class in a ritual called a Standup Meeting.

Add a comment to your WIP Issue that enumerates the following every day in a short bulleted list or paragraph:

  • What is a bright bulb for you today? What do you feel like you really understand well as of now? Explain it a little in your own words.
  • What is still a dim bulb for you? You still don't understand it, but the light is coming on... What has helped you get there?
  • What is still completely dark for you, despite your best efforts? What do you completely not understand yet, even though you've tried? What have you done to overcome that?

It's important that you keep up with this journal, even if you don't get any time with your Activities or Exercises... Your brain is working through those tough problems even when you're not actively engaged with them. Now, if you fall off for too many days in a row, your highly pattern-oriented brain will start to de-prioritize, too. Build a streak!


Activities -- Just Do It

1. Learning about Learning

Fixed vs Growth: The Two Basic Mindsets That Shape Our Lives will start you on a path of discovery about Dr Carol Dweck and the affect of one's mindset on learning, which is a very hot topic in developmental psychology at the moment. Just knowing about the theory improves learning outcomes, it seems.

Knowing a little about Top-Down vs Bottom-Up Design, specifically as it relates to software development and as applied to programming, along with Human Learning Styles will help you to identify the way your brain intakes and processes information. Keep in mind that the "learning style" debate still wages on.

Read all the above linked articles before continuing. You can feel free to come back to the information when you need it.

2. GitHub-ing to Know You

If you haven't already, create a GitHub account (or use your existing one) and edit your GitHub profile to include:

  • A recent, clear picture so we can recognize your face
  • Your full name so we can recognize your profile
  • A valid public email address so we (and employers!) can contact you.

Star the class project and read through the wiki.

3. You've Got Issues

Create an Issue in the class repo (this one) and name it 00 -- YOUR NAME, where YOUR NAME is, y'know... your name. As in, your real name that you want to be called. If you copy and paste the checklist from the Checklist section below into the Description of your issue as is, you should end up with a bunch of checkboxes thanks to the way that GitHub interprets text. As you complete parts of the assignment, check off the corresponding checkboxes and watch your progress bar fill!

Important! This task list should be complete by the first day of class!

Congratulations! This is your first Work-In-Progress (WIP) Issue, and you'll create another like it for each Assignment during the course. For more on that process, check out About Assignments in the class wiki, and for more practice with GitHub Issues, read and work through the Mastering Issues GitHub Guide included in the Source Control Crash Course section.

3a. How about a nice game of 20 questions?

Answer the following questions in comments on your WIP Issue:

  • What is the best way to ask a question?
  • How can you explicitly schedule time with your instructor to review a problem?
  • Are there any other times that we're available?
  • What are the three possible grades applied to every assignment? What do they mean?
  • What is the link to your GitHub profile? Your profile image?
  • In what week do we plan to review material?
  • At what time does class begin? Is attendance mandatory?
  • After what amount of time are you counted late?
  • When are you counted absent? Does that matter?
  • What is the most common kind of mistake in programming?
  • What are some strategies you can use to work through a difficult problem?
  • What exactly is the ⌥ key, anyway?
  • What do you think will be the biggest barrier to your success in this class?
  • How can you identify with the Growth and Fixed Mindsets? In what areas do you feel fixed? Where do you see the most potential for growth?
  • Do you consider yourself a top-down or bottom-up thinker and why?
  • What do you think about your "learning style" and the debate about their validity? Which would you categorize yourself as and why?

And yes, you're right, that's not how 20 Questions goes.

4. INSTALLFEST!

Throughout the course, we'll be using a lot of tools, some of them on day 1. Installing applications and developer tools on your computer will become an essential part of your life as a developer, so let's get some practice. Install the following applications, preferably through the App Store:

If you're completely new to Mac and still a little fuzzy on installing applications, head back to basics to get up to speed first.

Run each application and take a screenshot of the "About" window. You'll find that under the application name in the menu bar. Attach each image to your WIP Issue in a separate comment.

4a. Dev Tools are Weird

Next we'll install some developer tools but using Terminal.app instead of the App Store. These steps are a little weirder than normal installations, so follow the more detailed instructions and come back.

Don't skip over the last step! Feel free to start over if you need the practice, but when you're done, run brew list in your Terminal.app window and make sure you can see all of the tools on the install list. Take a screenshot of that list and attach it to your WIP Issue again.

5. Prezto Change-oh!

One of the tools we'll frequently use in class is Prezto, which makes Terminal.app much easier to use. Installation isn't as straight-forward as for the other dev tools, and you'll need some of them for this to work, so make sure you've got your dev tools installed before you follow the step-by-step for Prezto.

When you're done, take a screenshot of your Terminal.app screen and attach it to your WIP Issue. It should look vaguely like this example:

example: sorin@krustyroo

Although with only minimal flair...

Checklist: Activities

As directed in You've Got Issues, copy the text in the grey box below and paste into the Description field of a new Issue in GitHub to get a nice, interactive checklist of tasks related to your Activities. Check them off as you complete each to show us your progress!

* [ ] **1. Learning about Learning**
  * [ ] Read [Fixed vs Growth Mindset](https://www.brainpickings.org/2014/01/29/carol-dweck-mindset/)
  * [ ] Read [Top-Down vs Bottom-Up Design](https://en.wikipedia.org/wiki/Top-down_and_bottom-up_design)
  * [ ] Read [Learning Styles](https://en.wikipedia.org/wiki/Learning_styles) and researched more...
  * [ ] Read [why that is all bunk](http://www.npr.org/sections/health-shots/2011/08/29/139973743/think-youre-an-auditory-or-visual-learner-scientists-say-its-unlikely) and researched more...
* [ ] **2. GitHub-ing to Know You**
  * [ ] [Created a GitHub account](https://github.com/signup)
  * [ ] [Edited your GitHub profile](https://github.com/settings/profile) to provide:
    * [ ] A picture, so we can recognize your face.
    * [ ] Your full name, so we can recognize your name.
    * [ ] A valid public email address, so we can contact you.
  * [ ] Found and starred [the class project](https://github.com/TIY-Durham/2016-SPRING-FEE)
  * [ ] Read [the class wiki](https://github.com/TIY-Durham/2016-SPRING-FEE/wiki)
* [ ] **3. You've Got Issues**
  * [ ] [Created a new *WIP Issue*](//github.com/TIY-Durham/2016-SPRING-FEE/issues/new)
  * [ ] Named it `00 -- YOUR NAME` (where `YOUR NAME` is _your_ name)
  * [ ] Made this checklist the description of your _WIP Issue_
  * [ ] Started checking off boxes... :astonished:
  * [ ] **3a.** Answered _all those many questions_ in comments
* [ ] **4. INSTALLFEST!**
  * [ ] From the App Store:
    * [ ] [Google Chrome](http://google.com/chrome)
    * [ ] [Atom](http://atom.io)
    * [ ] [Dash](http://kapeli.com/dash)
    * [ ] [Slack](http://www.slack.com)
    * [ ] [SourceTree](https://www.sourcetreeapp.com/)
 * [ ] **4a. Dev Tools are Weird**
  * [ ] XCode Tools (CLI)
  * [ ] Homebrew AKA `brew`
  * [ ] Via `brew`:
    * [ ] `git`
    * [ ] `tree`
    * [ ] `zsh`
    * [ ] `node`
    * [ ] `ruby`
* [ ] **4b. Prezto Change-oh!**
  * [ ] Found and forked the Prezto project on GitHub
  * [ ] Cloned your fork of Prezto into your home directory
  * [ ] Linked all the _dotfiles_ into your home directory
  * [ ] Confirmed operation!
  * [ ] Edited `.zpreztorc` to add modules
  * [ ] Added a screenshot to your _WIP Issue_

Exercises -- Practice Makes Perfect

All of these Exercises will give you a project to build and spoon feed you the steps, fill-in-the-blanks-style, so the finished product they show you may not match your piece-together version. Try to discover the differences and play around with the results.

Store the work you do in CodePen. Login with your shiny new GitHub account to save your work. Code Pen can export your code to a GitHub Gist, so you can keep revisions around pretty much forever.

1. Learn to Program

One of the weirdest skills you'll acquire in the course is computer programming, so you'd better get a head start on your immunity to it:

2. Web Technology

There are two other pillars of web development -- well I suppose there are three -- that we'll focus our efforts on: HTML and CSS. Of the three, HTML and CSS are the least weird and the most accessible.

3. Command Line Training

In this class, we're going to use the Command Line Interface (CLI) a lot.

Unless you have lots of experience with pre-web internet, you probably didn't do a lot of typing to tell your computer to do things, but it's really quite efficient. You may need some practice with typing first, but don't wait until you're really fast at typing to tackle the command line! Typing commands is practice typing, after all...

4. Source Control Crash Course

Source Control -- and specifically git -- is a rather weird concept. GitHub -- a website for sharing code between developers -- is a tool we'll use very heavily in the class and is highly respected in the industry. Learn all you can about the git command and GitHub! It will be weird! It will be fun! It will cause your brain to hurt!

4a. First there was git...

You should start with:

Throughout the course, we'll be referring you to Scott Chaçon's book Pro Git, which is available for free on the internet...! This can be a daunting read, so don't kill yourself. Remember: this is just acclimating ourselves to The Weirdness.

4b. Then there was GitHub...

GitHub is a place that developers share code with one another, publish personal projects, and help each other find and fix bugs. All through the magic of git...

There are some helpful Guides on GitHub to help you get started:

Knowing something about Issues is also important, since we're using them a lot. You might also notice that GitHub does something funny with the text that you write. It's using a simple formatting system called Markdown, and it adds a little of its own flavor. To learn more about Markdown and how GitHub uses it, check out:

Checklist: Exercises

Copying and pasting these into a new comment in your WIP Issue every day before you start might be just the sort of motivation you need to keep on the work. There's a lot, so you might slice out just the parts that you intend to work on for that day to keep you focused. Do whatever is going to help you learn the best: flashcards, todo lists, self-quizzing.

* [ ] **1. Learn to Program**
  * [CodeCademy: JavaScript](https://www.codecademy.com/learn/javascript)
  * [Team Treehouse: Web Development Track](https://teamtreehouse.com/tracks/front-end-web-development)
    * [JavaScript Basics](https://teamtreehouse.com/library/javascript-basics)
  * [CodeSchool: JavaScript Path](https://www.codeschool.com/paths/javascript)
    * [JavaScript Road Trip, Part 1](https://www.codeschool.com/courses/javascript-road-trip-part-1)
    * [JavaScript Road Trip, Part 2](https://www.codeschool.com/courses/javascript-road-trip-part-2)
* [ ] **2. Web Technology**
  * [Introduction to HTML on MDN](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Introduction)
  * [Team Treehouse: Web Developer Track](https://teamtreehouse.com/tracks/front-end-web-development)
    * [How to Make a Website (Beginner HTML & CSS)](https://teamtreehouse.com/library/how-to-make-a-website)
    * [CSS Basics](https://teamtreehouse.com/library/css-basics)
  * [CodeSchool: HTML and CSS Path](https://www.codeschool.com/paths/html-css)
      * [Front-End Foundations](https://www.codeschool.com/courses/front-end-foundations)
      * [CSS Cross Country](https://www.codeschool.com/courses/css-cross-country)
* [ ] **3. Command Line Training**
  * [_An Intro to the OS X Command Line_](http://eddywashere.com/blog/an-intro-to-the-os-x-command-line/)
  * [_Learn the Command Line_ on CodeCademy](https://www.codecademy.com/courses/learn-the-command-line/)
  * [_CLI Crash Course_ by Zed Shaw](http://cli.learncodethehardway.org/book/)
  * [Team Treehouse: Console Foundations](https://teamtreehouse.com/library/console-foundations)
* [ ] **4. Source Control Crash Course**
  * [ ] **4a. First there was `git`...**
    * [Try `git`](http://try.github.com)
    * [Team Treehouse: `git` Basics](https://teamtreehouse.com/library/git-basics)
    * [CodeCademy: learn `git`](https://www.codecademy.com/learn/learn-git)
    * [Code School: Git Real](https://www.codeschool.com/courses/git-real)
  * [ ] **4b. Then there was GitHub...**
    * [GitHub: Hello World](https://guides.github.com/activities/hello-world/)
    * [GitHub: Forking Projects](https://guides.github.com/activities/forking/)
    * [GitHub: About Issues](https://guides.github.com/features/issues/)
    * [Team Treehouse: Explaining Markdown](http://blog.teamtreehouse.com/explaining-markdown)
    * [GitHub: Mastering Markdown](https://guides.github.com/features/mastering-markdown/)
    * [Markdown Tutorial](http://markdowntutorial.com/)

Extracurricular Activities

Look, you found the secret hidden section!

There are two books that I suggest you start reading. They're both avaialble in digital format on various devices, and they're both relatively easy reads: