your first 100 hours of code

32
How to approach the rst phase of the learning-to-code journey and a clear path to get you through it Erik Trautman wrote this on Feb 26, 2015 | 11 Comments (/posts /the-beginner-s-dilemma-your- rst-100-hours-of-code) What happens when you ask for advice on learning to code? "Try Python. At rst you'll be just fooling around, but then in 15 minutes you'll be intrigued and after an hour you'll wonder where the time went!" -- Anon "I don't recommend python as a rst programming language to learn... Java is the perfect starting spot." -- Zef D "Learn Java or C++ then take Stanford's online class in iOS app development." -- 1 nite 1 of 32

Upload: ashishsilvers7437

Post on 23-Dec-2015

13 views

Category:

Documents


0 download

DESCRIPTION

Advice coding

TRANSCRIPT

Page 1: Your First 100 Hours of Code

How to approach the rst phase of the learning-to-codejourney and a clear path to get you through it

Erik Trautman wrote this on Feb 26, 2015 | 11 Comments (/posts/the-beginner-s-dilemma-your- rst-100-hours-of-code)

What happens when you ask for advice on learning to code?

"Try Python. At rst you'll be just fooling around, but then in 15minutes you'll be intrigued and after an hour you'll wonder wherethe time went!" -- Anon

"I don't recommend python as a rst programming language tolearn... Java is the perfect starting spot." -- Zef D

"Learn Java or C++ then take Stanford's online class in iOS appdevelopment." -- 1 nite

1 of 32

Page 2: Your First 100 Hours of Code

"Which programming language you learn and use doesn't matter."-- Zed S

"Learn code with a project in mind" -- Romain D

"Just type what you see in the book" -- McKinneley B

"If you know what to Google, you can build anything" -- Liz V

"VBA and SQL are excellent beginner's languages for almost anyprofessional or student." -- Zuhalter

"Make sure not to ask too many questions and turn into a helpvampire." -- Max

"It’s a good idea to start with a very simple programming languagethat doesn’t require setting up a lot of environment." -- Queisser

"Learn the basics of a programming language in a command line orsome kind of eval loop." -- Anon

"Use whatever your friends use." -- Peter N

"No book is going to replace getting your hands dirty and justguring things out." -- JZ

"[Do] things the right way at all costs, rather than just [make] itwork and [improve] from there" -- via Nick B

"Pick one language and stick with it until [you are] reasonably uidin it. I say go with Ruby, Python, or Clojure and forget PHP." -- James

2 of 32

Page 3: Your First 100 Hours of Code

Learning to code for the rst time is awesome and overwhelming andscary and fun. We call the sweet beginning of this exciting journey,where you're surrounded by helping hands, the "Hand-HoldingHoneymoon" because of all the great resources out there and howmuch help you're likely to receive. It's the rst of four phases of thelearning process (http://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard) and certainly the mostsupportive.

This is an easy phase in which to get advice because everyone has astrong opinion about how you should learn. Sometimes, though, thissupport and advice can be overwhelming.

If you ask a dozen people how to get started, you will probably receive15 di erent answers. Ask the Internet and you'll nd that it's rife withgiant SEO-friendly listicles (http://en.wikipedia.org/wiki/Listicle) packedfull of resources for learning how to code (see here(http://thenextweb.com/dd/2012/10/21/so-you-want-to-be-a-programmer-huh-heres-25-ways-to-learn-online/) and here(http://venturebeat.com/2013/10/31/the-7-best-ways-to-learn-how-to-code/) and here (http://www.inc.com/larry-kim/9-places-you-can-learn-how-to-code-for-free.html) and here (http://blog.ted.com/2013/01/29/10-places-where-anyone-can-learn-to-code/) and here(http://carlcheo.com/startcoding)...) and occasionally even a few tipsabout how to navigate through them.

The dilemma comes when you're faced with all those reasonable-seeming approaches and need to choose between them or riskwasting your time. The problem, therefore, isn't a lack of resources oreven a path, it's a set of criteria for guring out which path makes themost sense for you to take.

Our Purpose Here

In this post, I'll show you an opinionated approach for taking on therst 100 hours of your coding adventure. It's hardly the only one out

there but it's been an e ective jump start for thousands of studentsso far so I believe in its inherent value. Despite this, only you candecide if it's the right t.

That's why, prior to walking through the path itself, we'll look at howto actually think about this phase of the learning process. It's a

3 of 32

Page 4: Your First 100 Hours of Code

commonly missing piece which will allow you to independentlyevaluate the e ectiveness of this or any other suggested plan.

The goal of this post is to once-and-for-all answer the question "Howshould I get started with coding?" by empowering you to answer it foryourself.

Note: An underlying assumption of this post is that you do, in fact,want to learn to code. Many people only think they do... somethingwe'll cover in an upcoming post.

Syntax and the Self

In your rst 100 hours, you should accomplish 3 deceptively simplegoals:

Go fundamental -- Learn the basic syntax and constructs ofcoding.

1.

Go broad -- Familiarize yourself with the full web developmentstack.

2.

Go within -- Find your coding "match" so you can passionatelydive deeper into that area.

3.

Most students tackle the rst part, give a nod to the second part, andgenerally pay little mind to the last part. They're more likely to forcethemselves to power through a bunch of dry syntax in a languagethey hate because they've heard it's the thing to do. This approachshould really be inverted.

Learning to code is like a new relationship. You’ll spend weekendnights curled up with a glass of wine and the gentle glow of a texteditor. You’ll yell at code, you’ll ght with code, and you’ll eventuallymake up with code and build wonderful things together. It's anintellectual love driven by passion. So it should make sense that theinitial phase is a bit like a dating game and it's worth your time to ndthe right match.

4 of 32

Page 5: Your First 100 Hours of Code

The ames of [intellectual] romance...

With this in mind, there are two questions you should consider on theway to nding what you're genuinely passionate about:

What do I enjoy learning the most (ie. which technologies orprojects)?

1.

How do I enjoy learning the most (ie. which types of resources)?2.

When you can answer these questions, the path ahead becomesmuch clearer.

This is relevant because most of the knowledge you'll gather in yourrst 100 hours is completely interchangeable among all languages or

technologies anyway so it hardly matters which one you pick up. Adeep well of genuine passion for what you're studying, however, canbe critical to help you to pick yourself up after the inevitable stumbles.It keeps you fully engaged with the material instead of feeling likelearning is an obligation. Additionally, an understanding of how youlearn best will prevent you from becoming discouraged by resourcesthat don't t well with your learning style.

If all of this means that you'll be happiest when learning Haskell froma dusty old textbook, it may not be my choice but you'll pick up farmore useful knowledge than forcing yourself into a tumultuousrelationship with Javascript.

So, regardless of which path you end up taking into coding, make sureit doesn't just allow you to learn a bunch of syntax or context but alsoprovides enough room for you to nd what you're genuinelypassionate about.

I'll focus on web development in the recommendations below, but youshould be able to port the same thought process to pretty much anystack.

5 of 32

Page 6: Your First 100 Hours of Code

Key Principles

Before I show you our preferred path, let's cover a few key principlesthat guide our approach. Some of these align with conventionalwisdom and others might be contrary to what you've heard. Whileeveryone is di erent, experience has shown the following to generallyhold true:

Learn one thing at a time. Many people tell you to learn severallanguages at once. That might work for the particularly gifted, butit's a recipe for disaster with your average human. We'll covermultiple technologies but in a single-threaded progression so youcan get comfortable with the syntax of one before diving into thenext.

1.

Get a taste of the full stack. You'll often hear people tell you todive deep into one language. We agree... but not before you'vehad the chance to play with all the technologies of the web stackto give you necessary context and to help you discover what youreally enjoy.

2.

Try a variety of resources. It's easy to nd a resource whichdoesn't match your learning style. We believe you should tryseveral di erent types of resources to identify the way you learnbest. By honing in on this, you'll make all your future learningmuch more productive and you'll know when it is, in fact, not yourfault that it seems so di cult :)

3.

Have a project you want to build. This is one which people willcommonly cite and it's great advice. You will learn signi cantlybetter and nd your passion quicker if you have something you'dreally like to build. We don't, however, advocate starting on itimmediately because that will encourage major gaps infundamentals. In the rst 100 hours, unless you absolutely mustsee your project hacked together ASAP, focus on thefundamentals and use your desired project as an incentive to stickwith it.

4.

Explore... When you're just starting out is the best time to explore-- everything is new and exciting! It's okay to experiment because,as we've said, nding your passion is a major goal of this phase.

5.

...But don't dawdle. You need to explore, but also move on whenit's time. It's easy to get trapped in a loop of constantly trying new

6.

6 of 32

Page 7: Your First 100 Hours of Code

beginner resources because it's so easy and immediatelyrewarding. If you want to move forward, you've got to bedisciplined about taking on the next challenge before the currentone becomes comfortably easy.

An Overview of Our Approach

Our 100-hour approach is designed to get you the exposure to webdevelopment technologies that you need to accomplish all three goalslaid out above -- going broad, going fundamental, and going within.

It uses the best possible resources but also provides several di erentoptions for progressing through them based on your preferred style.It assumes you already understand the basic context and terminologyof web development.

Technologies Covered

The 100 hour approach breaks down into the following buckets, whichcover the "full stack" (http://www.quora.com/What-does-the-term-full-stack-programmer-mean):

HTML & CSS -- 20 hours1.

Javascript & jQuery -- 25 hours2.

The Command Line & Git -- 5 hours3.

Databases & SQL -- 5 hours4.

Ruby -- 20 hours5.

Ruby on Rails -- 25 hours6.

You'll get introduced to a half-dozen languages/libraries of alldi erent types and roles, including two very di erent scriptinglanguages -- Javascript (http://en.wikipedia.org/wiki/JavaScript)(browser side) and Ruby (http://en.wikipedia.org/wiki/Ruby_%28programming_language%29) (server side).

This layered approach is designed to give you the kind of breadth youneed while providing many di erent touch points that you can use to

7 of 32

Page 8: Your First 100 Hours of Code

determine which language really "does it" for you.

How it's Laid Out

Each step of this approach is laid out in detail below. You'll nd:

An overview of what you're learning and the estimated time it willtake.

1.

Your goal for that step -- usually something you can build to proveyou're ready to move on.

2.

Two options for learning the material using di erent styles ofteaching. You only need to use one but it's often best to try bothto help layer your knowledge and get familiar with di erentresource styles.

3.

Alternate resources which cover a spectrum of di erent stylesand can be used either to shore up holes in your knowledge or toexperiment with other teaching methodologies.

4.

Step 1: HTML & CSS20 Hours

Markup and styling combine to build the interface for every web pagein existence. HTML is the web -- everything else is there to serve it toyou. Or style it, in the case of CSS. You may not need to become anexpert, but everyone needs to understand how HTML and CSS work tosome degree.

Your Goal

Your goal is to build a copy of a simple homepage on your own, forinstance Google.com.

8 of 32

Page 9: Your First 100 Hours of Code

Option A: Codecademy's Web Track(http://www.codecademy.com/en/tracks/web)

(http://www.codecademy.com/en/tracks/web)Click to jump to the site (http://www.codecademy.com/en/tracks/web)

(http://www.codecademy.com/en/tracks/web)

Codecademy is a fully interactive in-browser tutorial which covers allthe basics with tons of support. It's too slow and "hand-holdey" forsome people and just right for others. This represents the mostsupportive learning you can get without working directly with anotherhuman but it's also the most con ning because you're stuck in theirtracks.

Your Plan: Go through the entire track.

Best For: Anyone who's starting almost literally from scratch or who isjust experimenting.

9 of 32

Page 10: Your First 100 Hours of Code

Downsides: You'll grow out of it quickly if you're a quick learner orwant to try things that are outside their scope.

Option B: Shaye Howe's HTML & CSS lessons(http://learn.shayhowe.com/html-css/)

(http://learn.shayhowe.com/html-css/)Click to jump to the site (http://learn.shayhowe.com/html-css/)

(http://learn.shayhowe.com/html-css/)

Shaye's taught HTML and CSS for years on his site and it keeps gettingbetter. It's the best parts of working with a textbook but built andoptimized for the web. It covers the material more thoroughly thanCodecademy but with much less support.

Your Plan: Go through all 12 lessons and, at the end of each, writesome markup in a code editor which uses what you just learned.

Best For: The impatient and fast-moving learners or those who prefera more text-based learning approach.

Downsides: You're pretty much on your own to build toy projectsalongside it to test your knowledge, so be sure to do so instead of justtrying to power through.

Pair With: Codepen.io (http://codepen.io), the in-browser markup andcode editor, if you prefer not to work on your local machine yet.

10 of 32

Page 11: Your First 100 Hours of Code

Alternate Resources

These are resources similar to those above which are worth glancingthrough before choosing one

Khan Academy's HTML/CSS track (https://www.khanacademy.org/computing/computer-programming/html-css) -- a greatmulti-media approach that combines text, videos, and exercises.

Learning Web Design: A Beginner's Guide to HTML, CSS, Javascriptand Web Graphics (http://www.amazon.com/gp/product/1449319270/) -- a signi cantly updated version of the greatHTML/CSS book that started my own journey into markup andcode.

GA Dash (https://dash.generalassemb.ly/) -- quick and shallowexercises. Signup (free) required.

Treehouse (http://teamtreehouse.com/)(PAID) -- combines thehand-holding of Codecademy with very beginner-accessiblevideos.

Code Avengers (http://www.codeavengers.com/web) -- analternate to Codecademy

Udacity's "Intro to HTML and CSS" course(https://www.udacity.com/course/ud304)(free by clicking the"Access Course Materials" button) -- a journey through thefundamentals on their video-and-exercise platform.

Step 2: Javascript & jQuery25 Hours

Your rst scripting language will be the browser-based Javascript.You'll need to learn its killer library, jQuery, as well so you can buildthe dynamic user experiences which are standard these days.Consider this your rst introduction to "real code".

Your Goal

11 of 32

Page 12: Your First 100 Hours of Code

Build the Etch-a-Sketch project (http://www.theodinproject.com/web-development-101/javascript-and-jquery) or something of similardi culty. You should be able to interface with the DOM and applyJavascript-based logic to whatever you nd. You can use an in-browsereditor like Code Pen (http://codepen.io/pen/) or JS Fiddle(http://js ddle.net/) if you're not ready to run scripts on your localmachine but it's best to run them locally.

Option A: Codecademy's Javascript(http://www.codecademy.com/tracks/javascript)and jQuery (http://www.codecademy.com/tracks/jquery) Tracks

(http://www.codecademy.com/tracks/javascript)Click to jump to the site (http://www.codecademy.com/tracks/javascript)

(http://www.codecademy.com/tracks/javascript)

As with the HTML and CSS tracks, Codecademy's signature tracks willslow down and hold your hand through all the tricky bits. Thechallenges will have everything you need to complete them.

Your Plan: Do the entire track for both Javascript and jQuery.

Best For: Anyone without familiarity with "real" coding and/or who ishighly visual.

Downsides: Lots of hand-holding means you need to focus more toretain the knowledge.

12 of 32

Page 13: Your First 100 Hours of Code

(http://www.codecademy.com/tracks/jquery)Click to jump to the site (http://www.codecademy.com/tracks/jquery)

(http://www.codecademy.com/tracks/jquery)

Option B: MDN's Javascript documentation(https://developer.mozilla.org/en-US/docs/Web/JavaScript) and Learn.jquery.com(http://learn.jquery.com/)

(https://developer.mozilla.org/en-US/docs/Web/JavaScript)Click to jump to the site (https://developer.mozilla.org/en-US/docs/Web/JavaScript)

(https://developer.mozilla.org/en-US/docs/Web/JavaScript)

These text-based resources dive deeply into Javascript and jQuery, asthey are supported by the respective curators of each (MDN

13 of 32

Page 14: Your First 100 Hours of Code

(https://developer.mozilla.org/en-US/) for Javascript and the jQueryFoundation (https://jquery.org/) for jQuery).

Your Plan: Read at least the "Introductory" section of MDN and the"About jQuery" and "Using jQuery Core" chapters of learn.jquery.com.Read ahead through the Events, E ects, and AJAX sections for adeeper look at things.

Best For: Textual learners and those who really just want to get to thepoint. Best if you have previous experience with coding (or have gonethrough Codecademy's courses).

Downsides: There are no exercises baked in so you'll have to set upyour own projects and exercises to help retain the material. Building iskey!

(http://learn.jquery.com/)Click to jump to the site (http://learn.jquery.com/)

(http://learn.jquery.com/)

Alternate Resources

Udacity's Javascript Basics course (https://www.udacity.com/course/ud804) is good for those who like a video- rst approach.

Khan Academy's Intro to Programming track(https://www.khanacademy.org/computing/computer-programming/programming) is a great introduction if you're quitenew to programming in general. It's well presented, a lot of fun,

14 of 32

Page 15: Your First 100 Hours of Code

and highly accessible.

Code School's Javascript Road Trip track(https://www.codeschool.com/courses/javascript-road-trip-part-1)(free/PAID) is a much more multi-media approach to things,though sometimes can feel like it's skipping material in favor of agood story.

Eloquent Javascript (http://eloquentjavascript.net/) by MarijnHaverbeke is an in-depth (and free) web textbook considered oneof the standards of the craft. It gets opaque quickly so it's not thebest resource for true beginners but it will certainly take you deepinto the language.

Treehouse's Javascript Foundations track(http://teamtreehouse.com/library/javascript-foundations) (PAID)provides a video-based alternative to Codecademy

Step 3: The Command Line and Git5 Hours

To get good with any server-side scripting, you'll also need to pick upsome basic command line usage. The moment you crack open thatwhite-on-black screen, you'll really start to feel like a developer. Git(http://git-scm.com/) is the most popular version-control system outthere and an essential tool in your developer arsenal.

Your Goal

Create Git repos for your previous projects and push them to a Github(http://www.github.com) account.

Option A: Web Development Basics(http://www.vikingcodeschool.com/web-development-basics) from VCS

15 of 32

Page 16: Your First 100 Hours of Code

(http://www.vikingcodeschool.com/web-development-basics)Click to jump to the site (http://www.vikingcodeschool.com/web-development-basics)

(http://www.vikingcodeschool.com/web-development-basics)

This is a partially text-based and partially video-based collection oflessons and links to external resources. "The Basics of WebDevelopment" section contains the good stu for our purposes here.

Your Plan: Do (at least) the Command Line Crash Course(http://www.vikingcodeschool.com/web-development-basics/a-command-line-crash-course) lesson for learning the CLI, Getting toKnow Git (http://www.vikingcodeschool.com/web-development-basics/getting-to-know-git) to introduce you to Git and Git Calisthenics(http://www.vikingcodeschool.com/web-development-basics/git-calisthenics) to marry the two by using Git from the commandline.

Best For: People who need to see it, watch it, then try it.

Downsides: It's not textbook depth so you'll need to look elsewhere toget really deep.

Option B: Learn Shell (http://learnshell.org/), TryGit (https://try.github.io/levels/1/challenges/1), andThe Git Guide (http://rogerdudler.github.io/git-guide/)

The rst two of these are more interactive resources which allow youto type directly into the browser. The third is a straightforwardbeginner's guide to Git with "no deep shit".

16 of 32

Page 17: Your First 100 Hours of Code

(http://learnshell.org/)Click to jump to the site (http://learnshell.org/)

(http://learnshell.org/)

Your Plan: Read through all three of these resources.

Best For: Interactive learners since these allow you to type directlyinto the browser for command execution.

Downsides: For greater depth, you'll need to peruse the alternateresources below. In-browser execution is okay but doesn't force youto learn (and apply) it on your own machine, which you'll needeventually.

(https://try.github.io/levels/1/challenges/1)Click to jump to the site (https://try.github.io/levels/1/challenges/1)

(https://try.github.io/levels/1/challenges/1)

17 of 32

Page 18: Your First 100 Hours of Code

(http://rogerdudler.github.io/git-guide/)Click to jump to the site (http://rogerdudler.github.io/git-guide/)

(http://rogerdudler.github.io/git-guide/)

Alternate Resources

The Command Line Crash Course(http://cli.learncodethehardway.org/book/) web-book from ZedShaw is a walkthrough tutorial of the CLI which covers prettymuch all the bases.

Git SCM (http://git-scm.com/doc) is the standard text-baseddocumentation for Git.

Atlassian's Git Tutorials (https://www.atlassian.com/git/tutorials/)provide an alternate in-depth video-plus-documentation Gitguide.

Step 4: Ruby Scripting20 Hours

Now it's time to get some use out of your command line with Ruby,the high level scripting language built for programmer happiness.

Frankly, you can learn Python (https://www.python.org/) or even PHP(http://php.net/) instead if you'd like; it really doesn't matter in this

18 of 32

Page 19: Your First 100 Hours of Code

phase. But we love Ruby because it has a massive community ofsupportive developers and just about every question in the world hasbeen answered on Stack Over ow (http://stackover ow.com/). Onceyou get familiar with its syntax, Ruby will always have a special placein your heart.

Your Goal

Your goal is to build a simple Tic-Tac-Toe (http://en.wikipedia.org/wiki/Tic-tac-toe) game on the command line which can be played withtwo players or just you vs the computer.

Option A: Codecademy's Ruby Track(http://www.codecademy.com/en/tracks/ruby) andRuby Monk (https://rubymonk.com/)

(http://www.codecademy.com/en/tracks/ruby)Click to jump to the site (http://www.codecademy.com/en/tracks/ruby)

(http://www.codecademy.com/en/tracks/ruby)

As before, Codecademy will get you over the basic syntactical hurdlesby guiding you gently through exercises. Ruby Monk will ask you tocomplete challenges that start to have some real meat to them. It's aquirky journey into some deeper aspects of Ruby.

Your Plan: Go through the entire Codecademy Ruby track and thentackle the full Ruby Monk Primer (https://rubymonk.com/learning

19 of 32

Page 20: Your First 100 Hours of Code

/books/1-ruby-primer) course to layer it on. Next, do at least the rstfour sections of the Ruby Primer: Ascent (https://rubymonk.com/learning/books/4-ruby-primer-ascent) course (which should get fairlychallenging).

Best For: Interactive learners who want a bit of hand-holding.

Downsides: Ruby monk isn't always clear what they want and some ofthe material jumps into the intermediate realm.

(https://rubymonk.com/)Click to jump to the page (https://rubymonk.com/)

(https://rubymonk.com/)

Option B: Learn to Program (https://pine.fm/LearnToProgram/) and Learn Ruby the Hard Way(http://learnrubythehardway.org/book/)

20 of 32

Page 21: Your First 100 Hours of Code

(https://pine.fm/LearnToProgram/)Click to jump to the page (https://pine.fm/LearnToProgram/)

(https://pine.fm/LearnToProgram/)

Chris Pine's Learn to Program (https://pine.fm/LearnToProgram/) is acondensed Ruby book and a good introduction to the language forpeople with a bit of scripting experience (like you have now withJavascript). Learn Ruby the Hard Way (http://learnrubythehardway.org/book/) by Zed Shaw is a text-based web book that goes into muchmore depth.

Your Plan: Go through the entire web version of the Learn to Programbook and then dive into LRTHW (or buy the full Learn to Program book(http://www.amazon.com/Program-Second-Edition-Facets-Series/dp/1934356360) and do that instead). Do the exercises presented atthe end of each chapter of Learn to Program.

Best For: Textual learners and people coming in with existing scriptingexperience who just need a translation of syntax.

Downsides: LRTHW can be a bit opaque but should be within reach.

(http://learnrubythehardway.org/book/)Click to jump to the page (http://learnrubythehardway.org/book/)

(http://learnrubythehardway.org/book/)

Alternate Resources

21 of 32

Page 22: Your First 100 Hours of Code

Treehouse's Ruby track (http://teamtreehouse.com/library/ruby-foundations) (PAID) is a video-based alternative to Codecademy.

Satish Talim's Ruby Tutorial (http://rubylearning.com/satishtalim/tutorial.html) (which he calls "study notes") is a to-the-point walkthrough the breadth of Ruby.

Why's Poignant Guide to Ruby (http://mislav.uniqpath.com/poignant-guide/book/chapter-1.html) is the strangestprogramming (comic?) book ever... and maybe it's exactly whatyou need.

Ruby Koans (http://rubykoans.com/) are exercises you candownload and use to test your understanding.

Step 5: Databases5 Hours

You can't build a web app without thinking about data. In fact, data isthe critical backbone of any true web application so it will need to betop-of-mind regardless of whether you end up working mostly in thefront end or back end.

Our goal here is simply to give you a taste for what's going on indatabases and a bit of SQL syntax which will come in handy when youactually employ a database in the future.

Your Goal

Do the SQL Zoo's (http://sqlzoo.net/wiki/Main_Page) tutorials 0(SELECT basics) through 3 (SELECT from Nobel). This should give yousome practice playing with databases without actually requiring youto do any installation work on your local computer.

Option A: Udemy's MySQL Databases for Beginners(https://www.udemy.com/mysql-database-for-beginners2/)

22 of 32

Page 23: Your First 100 Hours of Code

(https://www.udemy.com/mysql-database-for-beginners2/)Click to jump to the site (https://www.udemy.com/mysql-database-for-beginners2/)

(https://www.udemy.com/mysql-database-for-beginners2/)

This video-based course is free and has just over 2 hours of totalcontent. It provides a good overview of SQL.

Your Plan: Go through the entire course.

Best For: Video learners.

Downsides: It'll go a bit quick if you haven't seen this stu before.Consider doing the course below as well.

Option B: Stanford's Intro to Relational DBs(https://class.stanford.edu/courses/DB/RDB/SelfPaced/about) and SQL(https://class.stanford.edu/courses/DB/SQL/SelfPaced/about) Sub-Courses

23 of 32

Page 24: Your First 100 Hours of Code

(https://class.stanford.edu/courses/DB/RDB/SelfPaced/about)Click to jump to the site (https://class.stanford.edu/courses/DB/RDB/SelfPaced/about)

(https://class.stanford.edu/courses/DB/RDB/SelfPaced/about)

These two sub-courses are part of a larger Introduction to Databases(https://class.stanford.edu/courses/DB/2014/SelfPaced/about) coursefrom Jennifer Widom of Stanford. They are also primarily video-basedand represent pretty much the best the free Web currently has too er for database training.

Your Plan: Go through both sub-courses and do the quizzes theyo er.

Best For: Those who like the MOOC-style learning.

Downsides: It's a bit 1990's and a bit deep on irrelevant-to-youtechnical details but you can stick with it.

Alternate Resources

UMass Boston's CS630 Handout 1 (Database Theory)(http://www.cs.umb.edu/cs630/hd1.pdf) and Handout 2 (SQL)(http://www.cs.umb.edu/cs630/sql.pdf) are in-depth text-basedresources. Consider them beyond our scope here but interestingnonetheless.

W3 Schools' SQL Tutorial (http://www.w3schools.com/sql/) is ano-nonsense walk through the syntax and usage of SQL. Followthe "Next Chapter" links at the top right and bottom right tonavigate.

Learn SQL The Hard Way (http://sql.learncodethehardway.org/book/) from Zed Shaw is an incomplete book which walks throughthe basics of SQL. It's good because it can be followed in tutorialformat but it's not the most user-friendly in the world.

Step 6: The Ruby on Rails Framework

24 of 32

Page 25: Your First 100 Hours of Code

25 Hours

Rails (http://en.wikipedia.org/wiki/Ruby_on_Rails) is the "KillerFramework" of Ruby (and perhaps the last 10 years as well). It allowsyou to rapidly build production-ready applications while maintainingthe control you need to make them 100% customized. This website isbuilt on Rails.

Our goal here is to give you a taste of building something on Rails andgoing through the end-to-end steps of producing a functional webapp. Whether or not you use Rails in the future, this should give you agood taste of "MVC" (http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) web frameworks and a sense for whatall the fuss is about with Rails.

If you're committed to using Rails on your local machine (which you'llneed to actually build a Rails app), check out the installationinstructions here (RailsApps) (http://railsapps.github.io/installing-rails.html), here (Go Rails, Mac OSX) (https://gorails.com/setup/osx/10.10-yosemite), here (One Month Rails, Windows track)(http://installrails.com/) or here (EngineYard)(http://railsinstaller.org/en). Installing Rails usually means lots of timedebugging things on the command line (especially if you haveWindows), so bear with it! Otherwise, look into a free hosted virtualmachine from Nitrous.io (http://nitrous.io) which will have it alreadyinstalled.

Your Goal

To build the world's simplest Blog application on your own machinewithout "cheating" too much by using a tutorial. It should be able tocreate Posts, read Posts, update Posts, and delete Posts.

Option A: Codecademy's "Make a Rails App" Track(http://www.codecademy.com/en/learn/make-a-rails-app/)

25 of 32

Page 26: Your First 100 Hours of Code

(http://www.codecademy.com/en/learn/make-a-rails-app/)Click to jump to the site (http://www.codecademy.com/en/learn/make-a-rails-app/)

(http://www.codecademy.com/en/learn/make-a-rails-app/)

This fully in-browser application will not require you to do anyinstallations on your own so you can skip that rite of passage. As withall Codecademy lessons, it'll hold your hand a fair bit.

Your Plan: Do the entire track.

Best For: Anyone totally new to Rails who might not want to gothrough the installations process before trying it out.

Downsides: ...you don't have to go through the installations process,so you don't really have ownership of your code.

Option B: The Rails Guide Tutorial(http://guides.rubyonrails.org/getting_started.html)

26 of 32

Page 27: Your First 100 Hours of Code

(http://guides.rubyonrails.org/getting_started.html)Click to jump to the site (http://guides.rubyonrails.org/getting_started.html)

(http://guides.rubyonrails.org/getting_started.html)

This simple tutorial is hosted by the Rails Guides(http://guides.rubyonrails.org/), the primary documentation for theRails framework.

Your Plan: Install Rails and do the tutorial on your own machine. Tryreading it through once rst to see how much you can understand(probably not a lot yet!).

Best For: People with a bit of prior Rails experience or dedicated textlearners.

Downsides: It gets the job done but it's a bit dry. You're on your own,so you'll need to debug your own error messages.

Alternate Resources

Rails for Zombies (http://railsforzombies.org/) by Code School is afast-moving in-browser introduction to Rails. It's a good course totake after you've already had a bit of exposure to Rails because itwill otherwise probably feel a bit overwhelming.

Learn Ruby on Rails book (http://www.amazon.com/dp/B00QK2T1SY) (PAID) from Daniel Kehoe is a gentle tutorial-introduction to the Rails framework

One Month Rails (https://onemonth.com/courses/one-month-

27 of 32

Page 28: Your First 100 Hours of Code

rails/) (PAID) is a tutorial which walks you through building aPinterest clone.

Where to go Now? Choose Your OwnAdventure!

If you've followed the plan above, you've invested roughly 100 hoursto get a good sense of what the web stack looks like and a solid graspof the fundamentals of programming. You've tried out a number ofdi erent resources and technologies.

It's time to self-evaluate. Which of the previous steps did you enjoylearning the most? Which resources did you nd to be the mosthelpful? Basically, what sparked your passion?

If you enjoyed working with HTML and CSS but couldn't for the lifeof you gure out how Javascript or Ruby did their magic, that'sokay. You might be in a good position to try out web design(http://www.vikingcodeschool.com/web-design-basics) or UX(http://www.vikingcodeschool.com/web-design-basics/what-is-user-experience) or product roles(http://www.vikingcodeschool.com/web-design-basics/what-is-product).

If Javascript and building in the browser felt the most natural foryou, stick with that.

28 of 32

Page 29: Your First 100 Hours of Code

If you were most comfortable being in the driver's seat on theserver-side or thinking about data models, you'll want to lookdeeper into Ruby and Ruby on Rails. Another popular option isPython/Django.

If you loved the Javascript language but also dig working withservers and data, you might consider pursuing Node.js(http://nodejs.org/), which is part of the MEAN Stack(http://mean.io/#!/) for full-stack Javascript. You'll nd it lessbeginner-friendly than some of the other options due to itsrelative youth but the support and community are growingquickly.

Don't stress out about the decision -- once you learn one languagewell, it's much easier to jump into another later.

Regardless of which direction you choose, your goal should be to startbuilding. We'll dive much deeper into how you can navigate thisprocess in the next post, but the moral of the story is that you need toroll up your sleeves and build. Do whatever it takes to move from thetoy projects you've created so far towards constructing moremeaningful applications.

The rst time the training wheels come o and you need to buildsomething on your own is a di cult transition but it's why you'relearning this stu in the rst place. As long as you've found your geekpassion, you'll have the necessary motivation to push through andkick some butt.

You might even impress yourself along the way.

Good luck!

Special thanks to Nick Peterson (https://twitter.com/apesontape), Peter DePaulo, liningcode(https://twitter.com/liningcode), and Michael Alexander for helping to debug these thoughts.

If this was helpful, spread the love :)

Tweet (https://twitter.com/share)

29 of 32

Page 30: Your First 100 Hours of Code

From n00b to ninja, we'll help you to become adeveloper

Subscribe to get expert guidance on learning, building, andgetting hired delivered right to your inbox each week.

We guarantee your privacy 100%. Your information will not be shared.

Subscribe

About the AuthorErik Trautman is the Founder of the Viking Code School(http://www.vikingcodeschool.com/), the premier program forlearning professional web development online. He lovesmotorcycles, geek shenanigans and outdoor feats of extremebacon.

← Older Post (/posts/why-learning-to-code-is-so-damn-hard)

View All Posts (/blog)

30 of 32

Page 31: Your First 100 Hours of Code

11 Comments

• •

Peter D •

This is great! When I first started, I spent well over 100 hours total working through a bunch ofrandom resources. After the initial difficulty, my learning path looked a lot like this. One of mychallenges was trying to learn everything at once. "Learn one thing at a time" definitely fits as thefirst key principle. Another challenge that I only realized in hindsight was a lack of cogency in whereI was going. I had no idea where learning Javascript was taking me. I did not have a clue how thingsfit together until I had forced my way through a difficult concept, only to realize I had made it difficultin my approach. It was sort of like smashing through a brick wall only to realize there was an opendoor next to me. I think this is a pretty good map of those open doors.

• •

eriktrautman •Mod

I definitely struggled more than 100 hours my first time around. That's a great analogy forthe *facepalm* moments along the way.

• •

Jacques •

Excellent read. It helps put the curriculum in perspective and re-energized me after a few days ofmuddling in the desert of despair.Keep 'em coming!

• •

eriktrautman •Mod

Thanks Jacques, I'm glad to hear it!

• •

Artem Arbatskiy •

Hello, Erik! Thank you for this awesome article and for the Odin Project as a whole!I want to make a little rectification to the article - one can take all Udacity cources for free.Paid option just gives you possibility of working with mentors, but all videos and tests are availablefor free.

• •

eriktrautman •Mod

Hey Artem, I'm glad it's been helpful! Thanks for pointing out Udacity's free option, I'veupdated the post to reflect it.

• •

Dan V •

This is very helpful, thanks! I was initially overwhelmed by all of the different programminglanguages out there. I had tried CodeAcademy (HTML/CSS/JS/JQuery) but at the end of that stillfelt a little lost at sea. I am now working through the steps in The Odin Project and things are fallinginto place much better for me and your post here reinforces that.

eriktrautman •Mod

There are as many languages as you can imagine. Take the Bash on Balls framework, forexample... But if you find one (or at least a particular stack) that feels better than the rest,

31 of 32

Page 32: Your First 100 Hours of Code

© Viking Education Inc 2015

Viking: The premier program for learning professional web developmentonline

The Viking Program

Curriculum

(/#curriculum)Methodology

(/#our-program)Instructors

(/#curriculum)Schedule

(/#our-program)After the Program

(/#faq)FAQ

(/#faq)Apply

(/apply)

Knowledge Base

(/prep)The Viking Blog

(/blog)Web Development Basics

(/web-development-basics)Web Design Basics

(/web-design-basics)Web Engineering Basics

(/software-engineering-basics)

Web Markup and Coding

(/web-markup-and-coding)

Other Stu

Join Us: Growth

(/growth-for-code)Join Us: Design

(/design-for-code)Sitemap

(/sitemap)Contact Us

(mailto:[email protected] Login

(/login)

32 of 32