A Better Way to Learn Programming? Notes on The Odin Project

Follow up to “So You Wanna Learn How to Code? Going from Zero to Programmer Hero in One Guide, for Great Justice”.

I’m currently working as a computer programmer at a start-up in Chicago. I’m getting paid to write code. It’s pretty neat. Most notably, I was not a Computer Science major in college, and I only took two CS classes. I got the job nearly entirely through about 700 hours of self study.

Best of all, you can do it too!

I wrote a guide on how to go from “zero to hero” in computer programming. I got a lot of people I know who program to contribute. I think it’s a pretty good guide, linking a few resources together into a coherent curriculum. In fact, I think it is the best guide you could find, short of working full-time to develop a complete online curriculum of their own.

Well, turns out someone did work full-time to develop a complete online curriculum of their own.

Enter The Odin Project.

Visit there, and find a complete curriculum, focused on Ruby on Rails, that takes you from zero to hero in a fulfulling way. Best of all, they focus on doing projects, so you actually learn by doing.

I went through it and now, after a few months, I’ve completed the curriculum in entirety. I must say, I’m forced to admit defeat. I find it much easier, more thorough, and more motivating than my own guide. I recommend people follow through it instead of follow my own guide.

…That being said, I do have some modifications I’d like to see to The Odin Project. So consider doing The Odin Project, except with the following modifications. I advise that you read these notifications in their entirety before starting The Odin Project, and then follow them as they come up.

Things You Should Skip

The first thing you should know about The Odin Project (TOP) is that they tend to overload on large heapings of repetition. For real beginners, this is often a feature and not a bug. However, don’t be afraid to skip through things or skim things if you already understand them. It is frequently unnecessary to do every reading unless you’re confused on a concept. This is doubly true for “Additional Resources” – the initial allegedly “required” resources are already more than enough, and you should rarely need to consult any of the “Additional Resources”.

Here are some things I particularly advise skipping, to save time:

When TOP links you to a YouTube video that’s longer than 10 minutes, it’s probably unnecessary. Skim the videos or ignore them entirely. Don’t forget you can speed them to 1.5x (or often even 2x) to get through them quicker, as they tend to be pretty slow.

Course “1: Introduction to Web Development” is cute and fun to read, but, in my opinion, not really necessary. Skip it if you’d like. If you do read it, try and skim. Don’t spend too much of your time here.

For “Web Development 101 » The Basics » 2: How Does the Web Work?”, I don’t think you really need to spend nearly that much time understanding the internet. It might come up on an interview question or two, but a thorough understanding isn’t really necessary outside the interview. Just watch the “Not Tubes” video and then move on to the next lesson.

Skip “Web Development 101 » Web Development Frameworks » 3: Backbone.js” it’s more confusing than helpful and you end up reviewing it in its proper detail later, after you understand more stuff.

Things You Should Do More Of

Overall, I think you should be skipping more of TOP and getting through it faster than they tell you to, so you get to the good stuff quicker. However, there are a few cases where I think TOP doesn’t have you do enough, and slowing down is warranted.

In “Web Development 101 » The Front End » 4: jQuery Basics”, you’ll get a chance to do lessons from either Codecademy or Code School. I personally found it highly to do lessons from both, because they emphasize different things and the repetition is useful. Code School does a better job of explaining in my opinion, so I highly recommend doing all of Code School’s lessons first, then do all of Codecademy’s lessons. Also, TOP tells you that the remaining sections on events are extra credit, but I think that they’re important to do, so I’d instruct you to fully complete both Codecademy and Code School lessons for jQuery.

In “Ruby Programming » Intermediate Ruby » Project: OOP”, I chose to do some additional work: make an AI for the Tic-Tac-Toe program that plays optimally. I think this was a worthwhile learning experience, and I urge you to try it.

I don’t think you should build a copy of Tic-Tac-Toe in JavaScript as TOP has you do – Snake an Minesweeper seem like enough. But I do think there is an important lesson to be had with Tic-Tac-Toe and JavaScript: a much better exercise to make an Ajax front-end for the Ruby Tic-tac-toe you already created earlier in the courses. After you complete “Javascript and jQuery » Better Forms with jQuery and AJAX » Project: Infinite Scroll and Submitting a Form with AJAX”, do this.

Let’s Fix The Learning Ruby Section

I’ll be honest – TOP is great, but I don’t like the TOP’s approach to learning Ruby much at all. It just throws too many resources at you, and you never learn everything you need at once. So, when you get to “Web Development 101 » The Back End » 2: Ruby Basics”, freeze. We’re going to fix this.

Skip this lesson entirely. Do not do “Web Development 101 » The Back End » 2: Ruby Basics” – just mark it as complete and move on.

Instead, go to Codecademy’s Ruby Track and complete it entirely. Throughout the course, TOP will make you complete it all eventually anyway in stages, so we might as well get it out of the way now. This way, you’ll get a better mastery of some things that come up in TOP before they’re introduced.

Then, after your done with Codecademy’s Ruby Track, read Chris Pine’s “Learn to Program” and then read Chapters 1-3 of Peter Cooper’s “Beginning Ruby”. Also review Tutorial Point on Ruby Loops, which is a resource I like that isn’t in TOP, and important for the things TOP focuses on.

This counts as you completing this lesson. Go on to the next lesson “Testing Basics”. Note that you have completely ignored tryruby.org, “Ruby in 100 Minutes”, and Ruby Monk and this is for the best, because I don’t think they’re very good resources, and you should have already learned everything they teach 2-3x over through the resources you did consult. Doing it five times seems like overkill (see “Things You Should Skip”).

-

Since you did things a little out of order, you’ll need the following clean-up.

When you get to “Ruby Programming » Basic Ruby » 2: Ruby Building Blocks” you’ll realize that you’ve been plopped in quite well, having already completed assignments 1-5. Continue from assignment 6. Skip assignment 9.

When you get to “Ruby Programming » Basic Ruby » 3: Advanced Ruby Building Blocks” skip all the assignments and go straight to the Code Quizzes. Complete those. If you do well (>87% on each), continue. Otherwise, go back and review, and try again. Try to really understand why you got each question wrong.

When you get to “Ruby Programming » Intermediate Ruby » 1: Object Oriented Programming”, skip assignment 1 because you have already done it.

Reorder the JavaScript and jQuery Readings

For “Javascript and jQuery » The Basics and the Browser » 2: Javascript Basics”, I think now is a better time to do some of the readings that TOP puts off for later. So read the following links now and not later:

1.) “Agent Cooper on Comparing JS and Ruby”

2.) “Ruby vs. Javascript Functions”

-

For “Javascript and jQuery » Deeper into Javascript” and “Javascript and jQuery » Advanced Browser Work”, I have different opinions than the authors of the Odin Project. In my opinion, the readings make more sense when they are presented like this:

1.) “JavaScript Objects in Detail”

2.) “JavaScript Prototype in Plain Detailed Language”

3.) “OOP in JavaScript – What You Need to Know”

…Now, pause to build something object oriented. I don’t think re-creating Tic-tac-toe in JavaScript is necessary – Minesweeper and Snake should already be enough. So build something object oriented, but simpler. I’m not very good at exercises, but maybe build a town full of people objects, and then make professions (like doctor, police officer, etc.) that inherit from “person” but do special things.

…Now back to reading.

4.) “JavaScript Variable Scope and Hoisting Explained”

5.) “Understand JavaScript Closures with Ease”

6.) “Understand JavaScript Callback Functions and Use Them”

7.) “Understand Asynchronous Code in Layman’s Terms” (a reading not in TOP that I added)

8.) “Callbacks, Listeners, and Promises”

9.) “Understand JavaScript’s ‘This’ with Clarity and Master It”

10.) “JavaScript Apply, Call, and Bind Methods”

11.) “Understand JavaScript Function Prototype”

12.) “Non-Blocking JavaScript and CSS in Modern Browsers”

13.) “Organizing JavaScript Code”

…Now do the Minesweeper project.

Then do the readings in “Javascript and jQuery » Advanced Browser Work » 3: Using Canvas to Draw and More” and then complete “Javascript and jQuery » Advanced Browser Work » Project: Building Games with Canvas”.

You’re now ready to go onto “Javascript and jQuery » Better Forms with jQuery and AJAX” as normal. Don’t worry too much about the stuff you skipped – it was either really unnecessary (a third review) or something I’ll have you come back to later.

Consider a Programming Bootcamp

This is mentioned in passing in TOP, but I thought I’d put it right here where you can see it, and spend more depth on it.

If you feel like you enjoy programming and want to make a career about it, but haven’t been doing so well at self-teaching, you could consider going to a programming bootcamp. These are more-than-full-time intense programs that teach you programming and help you with job placement. Here, you set aside 10+ weeks, enroll in the site, learn from the program, and hopefully pop out with a job on the way.

I’ve never personally gone to a boot camp (and don’t plan to). Keep in mind that a bootcamp is neither necessary nor sufficient to land a good programming job. But for people with the time and inclination, it could be a lot better than trying to go through this guide yourself. If you’ve got the time, it’s definitely at least worth investigating.

App Academy is widely considered to be the best program and there’s been lots of discussion of it on LessWrong. App Academy covers exactly the same material as this guide (and not much more or less), but gives you support, formal teaching, and a good learning environment. Buck Shlegeris is a TA at App Academy and is happy to be a contact if you’re interested in getting more information on applying and/or getting coached through the process. Here’s an interview with Buck about App Academy for more information.

Buck and Chris Hallquist (who went to App Academy) also say that Hack Reactor is the second-best program if you’re not able to get into App Academy (it is somewhat selective). Here’s a full list of all available bootcamps, with details.

It’s worth noitng that App Academy might be best for people in the US. Maker’s Academy seems pretty good for people near London, though.

When You Can Get a Job

TOP does a lot to make sure you know a wide variety of material before going on to look for a job in the final step. However, I think you might be able to hit that last step earlier than you might think. Even better than a Coding Bootcamp is an internship with a company, which not only will let you learn loads, but will also pay you money to do it! An unbeatable deal! And you can still learn more on the side! I recommend trying to do some work toward applications (completing all of Course 7 “Getting Hired as a Web Developer”) right after finishing Course #4 “Ruby on Rails”.

More Things to Learn

This is sort of more of an afterthought than it probably should be, but it could be useful to learn Python. Python is somewhat popular in the start-up world, though not nearly as popular as Ruby on Rails. However, Python is really popular in the academic world. It has good support for statistical programming and has a platform called Django that acts similarly to Rails. It’s probably good to learn Python so you’re not “pidgeonholed” into only one type of programmer job (though the demand is definitely there).

Ultimately, Python is a good language to know, but that being said, several of us don’t think it’s worth the time investment if you’re solely focused on getting into the start-up world and don’t have a particular use for it.

However, if you’re interested, now would be a good time to pick it up. If you’d like, work your way through “Learn Python the Hard Way”, skimming a bit as necessary. Also, give a look through “Think Python”, though you’ve probably learned much of it already from completing “Learn Python the Hard Way”.

-

Once you’ve completed all of TOP, I really think you should start applying for jobs (I mean, if you want one), because the best learning will come from being on the job. However, while you’re applying (or after you have the job), here are some things I think you might want to focus on, to extend your skills even further beyond what TOP asks for:

-

ERB, which you have been using to display Ruby in HTML, is nice, but HAML is also popular. Haml makes a trade-off that allows you to write code faster, but has a steeper learning curve and is hard to understand. Read through the HAML Tutorial. For a project, take a project you have done where you wrote views in ERB, and re-write all those views in Haml. Make sure it works.

-

It could be a good idea to learn CoffeeScript. Skim through the Tuts Plus Coffeescript Tutorial, then through http://coffeescript.org/. Next, the tutorial at CarbonFive. Finally, watch Coffeescript in action in this RailsCast.

As a project, make a Coffescript function that prints out the first twenty numbers in the Fibonacci sequence. That should be good enough, but feel free to re-do some of your JS stuff in CoffeeScript if you’d like. You also might want to read through http://coffeescript.org/ a little more thoroughly to get a better understanding of what it can do. You’ll also benefit from reading through CSS Tricks’s jQuery Coffeescript Cheat Sheat to get an idea of how to do jQuery stuff with Coffeescript.

-

It could be a good idea to learn Knockout.js. Do this tutorial.

-

You might want to learn some Data Science. This deserves a post of it’s own, but you could thumb back to “Optional Step Twenty-four – Learn Some Data Science” in my guide.

Conclusion

In my guide, I said the following, and it equally applies here:

There are multiple paths to getting a programming job, learning programming, or whatever goal you may have. There’s no “one true way”, and there’s going to be a lot of conflicting advice on what is the “best” way to learn. Honestly what is best is going to vary person by person, and based on your interests and goals.

-

Like I said before, “I’ve designed a guide here based on my personal experience.” It’s entirely possible that TOP is right about something and their original method was better for you, and I was wrong to disagree. It’s also entirely possible TOP is wrong about something for you, and I didn’t catch it, because it didn’t come up for me.

Your mileage might vary. I’m not better than TOP – they have their way, and I have mine. I just wanted to write up my experience. The best thing to do is just start, somewhere. See if this guide works for you, tweak if it doesn’t. Let me know.

Appendix: How Long Will All This Take?

I did the math, and my estimates add up to a minimum of 234 hours of work, scaling up to the 900+ hour range if you go slow and do all the extras. TOP believes that it takes ~1000 hours to become a good web developer. This sounds generally correct, but your mileage may vary. I personally got away with about 700 hours, and I wasn’t even doing it all that efficiently, because I didn’t find TOP for awhile.

Here’s a time breakdown:

  • Course 1: Introduction to Web Development – 0hrs, skip it unless you find it interesting.

  • Course 2: Web Development 101 – 45hrs-80hrs
    • The Basics – 3-7hrs
      • 1: How this Course Will Work – 2min
      • 2: How Does the Web Work? – 10min
      • 3: How Does Your Computer Work? – 30min, if you’ve never used the command line before
      • 4: Terms to Know – 10min
      • Project: Installations – 2-6hrs if you’ve never done the installations before
    • The Front End – 12-34hrs
      • 1: Introduction to the Front End – 30min
      • 2: HTML and CSS Basics – 30min - 6hrs depending on how familiar you are with CSS/HTML.  Skip steps 3-5 here.
      • Project: HTML/CSS – 1-5hrs, depending on how familiar you are with CSS/HTML.
      • 3: Javascript Basics – 4-9hrs
      • 4: jQuery Basics – since you do the entire Codecademy course here as I recommend AND Code School, like 5-8hrs
      • Project: Javascript and jQuery (Etch-Sketch) – 1-5hrs
    • The Back End – 19-23hrs
      • 1: Introduction to the Back End – 0-30min
      • 2: Ruby Basics – here’s where we implement the Ruby fix, which will take ~11hrs
      • 3: Testing Basics – 2-3hrs
      • Project: Ruby (TestFirst) – 4-6hrs
      • 4: Databases – wow, I think I skipped this lesson somehow.  I’m not sure the material is essential, so a 2hr skim ought to do it.
    • Web Development and Frameworks – 8-8.5hrs
      • 1: Introduction to Frameworks – 15-30min
      • 2: Ruby on Rails Basics – 2hrs
      • Project: Ruby on Rails (Basic Blog App) – 6hrs for a beginner, though I could do it now in 20 minutes
      • 3: Backbone.js – Skip this per my recommendation
    • Additional Important Topics – 1-4.5hrs
      • 1: Git Basics – 1-2hrs
      • 2: The Cloud, Hosting, and Software as a Service (SAAS) – 0-1hr (skippable)
      • 3: Security, SSL, and Best Practices – 0-1hr (skippable)
      • 4: FTP Basics – 0-0.5hrs (skippable)
    • Tying it All Together – 1-3hrs
      • 1: How are Websites Built in the Real World? – 0-2hrs (skippable)
      • 2: Principles of Good Programming – 1hr
      • 3: Conclusion – 5min
  • Course 3: Ruby Programming – 83-133hrs
    • Basic Ruby – 10-14hrs
      • 1: How this Course Will Work – 15min
      • 2: Ruby Building Blocks – Start from step 6 because of the Ruby fix earlier.  Should take 2hrs.
      • Projects: Ruby Building Blocks (various Ruby scripts) – 3hrs
      • 3: Advanced Ruby Building Blocks – 30min if you get the Code Quizzes right, per my Ruby fix.
      • Project: Advanced Building Blocks (sorting algorithms) – 4-8hrs
    • Intermediate Ruby – 33-36hrs
      • 1: Object Oriented Programming – 5-8hrs
      • Project: OOP (Tic-tac-toe) – Because I add the AI to this project, it took like 16hrs, and this is even with skipping Mastermind.
      • 2: Files and Serialization – 2hrs
      • Project: Serialization and Working with Files – 10hrs, though I spent time adding an AI to the Hangman too (to guess the word based on letter frequency and knowledge of the dictionary)
    • Ruby on the Web – 7-12hrs
      • 1: Bringing Ruby Online – 1-2hrs
      • Project: Ruby on the Web (Twitter Spambot and Web Server) – 6-10hrs
    • A Bit of Computer Science – 8-15hrs
      • 1: A Very Brief Intro to CS – 0.5-1hr
      • 2: Recursive Methods – 0.5-1hr
      • Project: Recursion (Fibbonachi, Merge Sort) – 2-4hrs
      • 3: Common Data Structures and Algorithms – 1hr
      • Project: Data Structures and Algorithms (Binary Trees, Knights Travails) – 4-8hrs
    • Testing Ruby with RSpec - 11hrs
      • 1: Introduction to RSpec – 1hr
      • Project: Testing Ruby (Past tests, Connect Four) – 10hrs
    • Git - 2-5hrs
      • 1: A Deeper Look at Git – 1-3hrs
      • 2: Using Git in the Real World – 1-2hrs
    • Conclusion – 12-40hrs
      • Project: Ruby Final Project – I haven’t actually done this one yet, it’s on the to-do list.  But 12-20hrs looks right.  Maybe +10-20hrs if you add an AI. ;)
      • 1: Conclusion – 5min
  • Course 4: Introduction to Rails – 106-200hrs
    • Introduction to Rails – 40hrs
      • 1: How this Course Will Work – 5min
      • Project: Getting Your Feet Wet (Hartl Tutorial) – the entire Hartl tutorial took me 40hrs.  This is split up over multiple projects here, so this bit won’t actually take 40hrs.
      • 2: A Railsy Web Refresher – 0.5hrs
      • Projects that are part of the Hartl tutorial omitted.
    • Databases and Active Record – 11-16hrs
      • 1: Databases and SQL – 1hr
      •  Project: SQL (SQLZoo) – 4-5hrs
      • 2: Active Record Basics – 1-2hrs
      • Project: Building With Active Record (Reddit) – 5-8hrs
    • Forms and Authentication – 5-10hrs
      • 1: Form Basics – 1-2hrs
      • Project: Forms – 3-6hrs
      • 2: Sessions, Cookies, and Authentication – 1-2hrs
      • Projects that are part of the Hartl tutorial omitted.
    • Advanced Forms and Active Record – 18-28hrs
      • 1: Active Record Queries – 2-3hrs
      • 2: Active Record Associations – 2-3hrs
      • Project: Associations – 5-8hrs for the additional EventBrite project
      • 3: Active Record Callbacks – 2-3hrs
      • Projects that are part of the Hartl tutorial omitted.
    • 4: Advanced Forms – 2-3hrs
      • Project: Advanced Forms (Flight Booker) – 5-8hrs
    • APIs, Mailers and Advanced Topics – 32-105hrs
      • 1: APIs and Building Your Own – 1-2hrs
      • 2: Working With External APIs – 1-2hrs
      • Projects: Building and Using APIs (Kitten API) – 5-8hrs
      • 3: Mailers – 1-2hrs
      • Project: Ruby on Rails Mailers – 1-5hrs
      • 4: Advanced Topics – 3-4hrs
      • Project: Ruby on Rails Final Project!!! – Uh, this really depends on what you pick, but a good 20-80hrs ought to be enough, depending on how good you want to make it for your portfolio
      • 5: Conclusion – 0-2hrs (skippable, but not as skippable as the other ones I say are “skippable”)
  • Congratulations, at this point you can definitely get a job.  Enjoy being paid to learn, and pick up the rest in your free time while not at work.
  • Course 5: HTML5 and CSS3 – 16-46hrs
    • Basic HTML Page Structure – 5min-5hrs
      • 1: How This Course Will Work – 5min
      • 2: HTML5 Basics – 0-2hrs
      • 3: Linking Internal and External Pages – 0-30min
      • 4: Working with Images, Video and Other Media – 0-30min
      • Project: Embedding Images and Video – 0-1hr
      • 5: What’s New in HTML5 – 0-1hr
    • Displaying and Inputting Data – 1-4.5hrs
      • 1: Tables in HTML – 0-30min
      • 2: Ordered and Unordered Lists – 0-30min
      • 3: Forms for Collecting Data – 0-30min
      • Project: HTML Forms (with Mint) – 1-3hrs
    • CSS3 – 4-10.5hrs
      • 1: CSS3 Basics – 30-90min
      • 2: The Box Model – 30-60min
      • 3: Floats and Positioning – 30-60min
      • Project: Positioning anx Mloating Elements – 1-3hrs
      • 4: Best Practices – 30min
      • 5: Backgrounds and Gradients – 0-30min
      • Project: Building with Backgrounds and Gradients – 1-3hrs
    • Design and UX – 3.5-10hrs
      • 1: Introduction to Design and UX – 30min-3hrs
      • 2: Fonts and Typography – 30min
      • 3: CSS Grids – 30-90min
      • Project: Design Teardown – 2-5hrs
    • Responsive Design and CSS Frameworks 5.5-9.5hrs
      • 1: Responsive Design – 30min
      • Project: Building with Responsive Design – 2-4hrs
      • 2: CSS Frameworks like Bootstrap and Foundation – 1hr
      • Project: Using Bootstrap – 2-4hrs
    • Advanced CSS3 – 2-6.5hrs
      • 1: Animations, Subtle Effects and Compatibility – 30min
      • 2: Using CSS Preprocessors to Save Time – 30-60min
      • Project: Design Your Own Grid-Based Framework – 1-5hrs
      • 3: Conclusion – 5min
  • Course 6: JavaScript and jQuery – 69-138hrs
    • The Basics and the Browser – 6-9.5hrs
      • 1: How This Course Will Work – 5min
      • 2: Javascript Basics – 2hrs, less because you already did the bulk of the work earlier, but more because you have the two extra readings I move
      • Project: On Screen Calculator – 2-4hrs
      • 3: jQuery Basics – 30min-1hr
      • Project: Manipulating the DOM with jQuery (Restaurant Page) – 1-3hrs
      • 4: Organizing Your Code and More – 30-90min
    • Events, Effects, and Widgets – 8-18hrs
      • 1: Working with Events and Effects – 30-60min
      • Project: jQuery and the DOM (Snake) – 5-10hrs
      • 2: Using jQuery UI to Build Widgets – 30-120min
      • Project: Creating an Image Carousel/Slider in Javascript – 2-5hrs
    • My JavaScript Fix – 7-9hrs for the readings, 15-20hrs for the projects
    • Better Forms with jQuery and AJAX – 8-17hrs
      • 1: Validating Form Inputs Using jQuery – 1-2hrs
      • Project: Validating a Form with jQuery – 3-5hrs
      • 2: Submitting a Form Without Reloading by Using AJAX – 1-2hrs
      • Project: Infinite Scroll and Submitting a Form with AJAX – 3-8hrs
    • Linking to APIs and Your Rails Back End – 6-17hrs
      • 1: Working with Javascript APIs – 1-3hrs
      • Project: Putting Google Maps Onto Your Site – 1-3hrs
      • 2: Using Ruby on Rails For Your Back End – 1-3hrs
      • Project: Where’s Waldo (A Photo Tagging App) – 3-8hrs
    • Server Side Javascript and Javascript Frameworks – 17-44hrs
      • 1: Node.js and Server-Side Javascript – 1-3hrs
      • Personal Note.js Project – 3-20hrs
      • 2: Using Templates – 30-90min
      • 3: Javascript MV Frameworks Like Angular.js and Backbone.js – 1-2hrs
      • Angular and Backbone Tutorials – 6-12hrs
      • 4: Workflow Tools, Tech Stacks and Dependency Management – 2-5hrs
    • Finishing Up with JavaScript – 2-3hrs
      • 1: Javascript Testing with Jasmine – 2-3hrs
      • Project: Final Project – up to you. 0-80hrs? Let’s look to my extras instead?
      • 2: Conclusion – 5min
  • My Extras – 165-326hrs
    • Personal Angular or Backbone Project – 3-20hrs
    • Knockout Tutorial – 1-2hrs
    • Knockout Project – 3-20hrs
    • Python Tutorials – 20-40hrs
    • HAML – 30-60min
    • CoffeeScript Tutorials – 3-5hrs
    • CoffeeScript Practice – 5-8hrs
    • Data Science Learning – 130-230hrs
      • Udacity Intro to Stats – 40-50hrs
      • Coursera’s Data Analysis – 50-80hrs
      • Advanced R – 30-80hrs
      • Kaggle Work – 10-20hrs