The best VPN 2024

The Best VPS 2024

The Best C# Book

Everyday Utilitarian

Spread the love

Followed up inA Better Way to Learn Programming? Notes on The Odin Project.

Now you should know enough to fail forward on a project of your own. Youre off the bunny slopes and now its time to ski down the hill. Personal projects are the most exciting and useful ways to learn code, and you now should know exactly enough (and not much more) to try your own Rails application. So make something! I made aJob Board, others made aSkillshare. Hartl had you make a Twitter clone, but you could try to create a clone of another popular app like Reddit. It doesnt have to be useful, because the idea is just to learn code.

v1.7.22 – Made punctuation consistent in changelog.

Some other ways to learn the right amount of Ruby on Rails to progress to step three is to sign up forCode Schoolandwork through all the Ruby classes. This costs money, but is worth it. This is a decent method in my opinion and I believe is the preferred method of Ozzie Gooen.

v1.6.14 – Added more information on App Academy.

v1.7.21 – Added information about The Odin Project.

v1.4.9 – Added Codility to the list of problem sets.

v1.5.12 – Reorganized some of the steps.

v1.1.2 – Added alternatives to Hartls tutorial.

Ive got good news and bad news for you. The good news real programming is actually a lot more fun and interesting than Codecademy. The bad news Codecademy is not real programming. Codecademy is a good supplemental learning guide, but it isnt comprehensive enough. So were going to look to something a bit better.

Additionally, you might find out that programming is not a good fit for your skills and interests, and you have to be okay with that. Keep in mind that true programming skill only comes from the long haul. There is no real learn X language in two hours even 100 hours of learning will only give you a beginners knowledge of one particular language. Programmer hero status will only be achieved after many years of work. So its important you really like it and stick with it, if you want to get anywhere. Programming also seems to come best if you have multiple, uninterrupted, consecutive hours to devote to it it appears much harder if its just 30 minutes here, 30 minutes there.

Once youre here, if you want to get really serious into Data Science, Im pretty sure youll have to learn Hadoop and/or MapReduce. But you should have done the hard part already.

At this point, you are a certified beginner in Ruby on Rails. Congratulations! At this point, you could probably get an internship or Junior Developer position at a rapidly expanding tech company. Not too bad for ~200 hours of work.

If you dont know any programming at all, it would be a good idea to get a feel for it onCodecademy. Pick eitherthe Python lessonor theRuby lesson. Spend about 5-10 hours on one of them (no need to finish it).

There are multiple paths to getting a programming job, learning programming, or whatever goal you may have.Theres no one true way, and theres 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. Ive designed a guide here based on my personal experience and had it tweaked based on feedback from other programmers. This guide is heavy on web development and Ruby on Rails because those are the things Ive had the most experience with, they seem like good places to start, and they seem quite employable. That doesnt mean that learning other languages is not a good idea. This guide is designed with the mind to try and find your interests as soon as possible. But it still might not be precisely right for you. Your mileage may vary.The best thing to do is just start, somewhere.See if this guide works for you, tweak if it doesnt. Let me know.

This may be hard, but Googling around andStackOverflowshould get you farther than you think. It also could be a really good idea to seek out a personal mentor or two, who can walk you through inevitable points where you get stuck.

UPDATE:Thanks to someone in the comments, I found a new resource for learning programming calledThe Odin Project, and dare I say it, I think its better than my guide.I took detailed notes on it here, and I urge you to read them if youre interested in a slightly different take on learning programming.

I dont think its necessary to complete the course, but feel free to finish it at this point if you wish.

v1.8.22- Last Update: 22 Apr 2014 1:50p EDT – by Peter Hurford (with lots of help)

Consider creating anAnki deckof information to know for interviews.

Lastly, it could be a good idea to learn some more about algorithms this is a good idea even if youre not aiming for a job. First, reaTry to sign-up for and work through the Coursera class onAlgorithms IandAlgorithms II. Its best if you can do them while theyre live, but not necessary. You can also supplement this work by skimming through theAlgorithms textbook.

Do some google searches for interview questions beyond what you read about in Cracking the Coding Interview some questions are basic trivia unrelated to coding, such as questions about hexadecimal or how the internet works.

In addition to work in front-end and back-end, another popular programming career is data science. This is a bit of enthusiasm on my part, but statistical programming can be pretty fun and open up a whole new world about what programming can do. And statistics is, next to programming, one of the great skills to know.

If you cant (dont worry!), read through Shay HowesBeginner HTML/CSS GuideandAdvanced HTML/CSS Guide(though advanced is a bit of a misnomer here). After youre done, try to re-create the site.

So you wanna learn how to code? Whatever your motivation, computer programming and general computer know-how are good skills to have. Programming knowledge can be potentially high value for careers or start-up opportunities, and with not too much time investment, you can figure out if programming is something you would enjoy and be good at.

Buck Shlegeris doesnt like Hartls tutorial and prefers that peoplecomplete the Codecademy class for Ruby completelyand then work throughTest Firsts Ruby Tutorial. Ive not personally tried this, but Buck seems to have turned out pretty well, so it cant be that bad. Buck then says after the Test First tutorial to then also sign up for Code School and work through all the Ruby classes.

Buck and Chris Hallquist (who went to App Academy) also say thatHack Reactoris the second-best program if youre not able to get into App Academy (it is somewhat selective).Heres a full list of all available bootcamps, with details.

Its worth noitng that App Academy might be best for people in the US.Makers Academyseems pretty good for people near London, though.

If youre not looking for a job, or just want to take your skills to the next level, theres still more guide. I now suggest you learn some good tests for JavaScript and jQuery. Mocha is a nice platform for testing your front-end code. Work your way throughthe Mocha tutorial.

v1.3.8 – Added more info on when one can apply to an internship / Junior position.

Familiarize yourself with basic job etiquette like thanking interviewers by e-mail afterwards.

If youre aiming for a Senior Developer job at a tech company, it would be really helpful to tie this algorithm knowledge to how youll need to know it in the interview. Read throughCracking the Coding Interview.

But more importantly at this point, you should now be able to know if programming is for you. Did you complete your personal project? Was it fun? (It should be fun.) Was it hard? (It should be hard.) If you enjoyed yourself and found yourself able to put in a fair amount of time on it each week, then congratulations programming might be for you! But be honest with yourself, and dont force it just because programming seems glamorous.

v1.4.10 – Added info on Hack Reactor.

Create a list of companies you want to apply to. Ask people to add to your list.

However, if youre interested, now would be a good time to pick it up. If youd like, work your way throughLearn Python the Hard Way, skimming a bit as necessary. Also, give a look throughThink Python, though youve probably learned much of it already from completing Learn Python the Hard Way.

If you dont know stats or want a refresher, work throughUdacitys Intro to Stats class. Then work throughCourseras Data Analysis class its much better if you can catch it while live, because its a pretty dynamic class. After that, work throughAdvanced R Programmingand then try your hand at someKaggle tutorials and competitions. Thistutorial on the Titanic is good, and hasa companion guide that teaches more R.

Its a good language to know, but that being said, several of us dont think its worth the time investment if youre solely focused on getting into the start-up world and dont have a particular use for it.

Now its time to get a little more advanced and learn more about what JavaScript can do. Work your way throughLearn Advanced JavaScript.

If you feel like youre struggling at this step, you could consider working through another Ruby/Rails tutorial to re-learn some of the stuff in a different context. I likeAgile Web Development with Rails. No need to do this if you feel like youre going well, though.

I think now is a good time to switch gears. Ruby on Rails is a language that does back-end, or helps you get information on the server to the user. But we also want to give you some experience in front-end, or making that information usable and well presented. Hartls tutorial gave you some intro to this and you probably worked on some of this for your personal project, but now its time to take it to the next level.

When you complete this guide, make sure you never copy and paste the provided code always retype it by hand. You wont really learn it if you just copy and paste. Moreover, try all the provided exercises in each section. Thats how you expand your knowledge.

Create a GitHub account if you havent already and put some projects there.

This advice is based on my personal experience, plus advice given to me (in rough descending order of magnitude) by Richard Batty, Chris Hallquist, Robert Krzyanowski, Ozzie Gooen, and Buck Shlegeris.

BentoBoxis another site with a lot of resources for learning programming. While less structured than this guide, it offers more depth, and provides resources for learning many things that are not contained in this guide. Maybe you could start learning PHP or Java, maybe you might take up building mobile apps, or who knows? BentoBox provides some resources to help with all of that as well.

RailsCastscost money, but theyre an excellent resource for learning how to do particular things in Rails.

My guess is that it should take you 30-60 hours to get through the tutorial. UseBeeminderor something if you feel like youre not doing a good job at getting the hours in.

Work your way throughThe Node Beginner Book. If you want to learn more about Node.js, consider also working throughNode.js in Action.

Also, continuing with this guide couldnt hurt. The stuff after this guide appears to give much less marginal returns for entry-level jobs, but theyre still important.

v1.1.4 – Added call for action for feedback.

Seek out people to give you advice on how to apply and perhaps give you internal referrals in a company (very valuable to have).

v1.2.6 – Added info on programming bootcamps.

If you do this, see how you feel after the 5-10 hours are up. How fun was it? How much of a struggle was it? How much time were you able to devote to it per week? Is this something you can see yourself doing?

App Academyis widely considered to be the best program andtheres been lots of discussion of it on LessWrong. App Academy basically does Step 2-17 from this guide, 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 youre interested in getting more information on applying and/or getting coached through the process.Heres an interview with Buck about App Academyfor more information.

Skip this if you already know HTML and CSS pretty well. Neither is particularly hard, but both are completely essential for front-end development. That is,could you re-create a simple personal website like thisby hand, with minimal looking up of things online? Feel free to try. Even if youve never done HTML and CSS before, you might have picked up enough to do it.

If you feel like you enjoy programming and want to make a career about it, but havent 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.

You should now know enough about programming that youre off on your own. If youve found a good mentor, they can tell you what to do next. Or maybe now you can land a programming job and learn programming in a real-world context. Good luck!

Design patterns are reusable solutions to common programming problems. Theyre really good to know. Lets learn some JavaScript design patterns. Work your way throughJavaScript Design Patterns.

Heres a good test Can you implementFizzBuzzin either Python or Ruby? Can you implementbubble sortin either of those languages? If you answered no to the first question, definitely do this step. If you answered yes to the first, but no to the second, consider doing this step. If you answered yes to both, definitely skip this step.

Create a nice portfolio website for your work (likeChrissormine).

Read throughAlexeis account of getting a software job.

v1.4.8 – Added another re-evaluate period.

We now seem to know more JavaScript than Ruby, so it would be good to catch up here. Lets read through Peter CoopersBeginning Rubyand then David BlacksThe Well Grounded Rubyist.

Work your way throughDeveloping Backbone.js Applications. You could then consider also learning Angular.js by working throughthis tutorialandthese videos.

Besides building your portfolio with projects, another good idea would be to complete some problem sets.Project Eulerasks you to solve math problems in any programming language, which is a good test of creativity and math deForces Problem Setsare similar.

Also, let me know (Peter Hurford on Facebookorby email) if you try this guide, so I can get feedback on how it goes for you. Feel free to also reach out to me with comments on how to improve the guide Im still relatively new to programming myself and have not yet implemented all these steps personally!

Codility challengesalso more closely approximate what you might encounter in an interview, with the two-star problems being about the difficulty you should expect, according to Chris Hallquist.

Earlier, I mentioned that you knew enough to consider applying to a programming job. At this point, this is even more the case. You now know the beginnings to both a front-end and back-end framework and can build sites on your own. If you were interested in applying to a job, consider looking into that now. Think now about if thats right for you.

Rails handles most of the SQL for you, and youve probably already learned some SQL through other tutorials. But at this point it could be nice to just get it done.SQLZoois a nice interactive tutorial here. Lets complete it now.

Well start with the undisputed base language for front-end development JavaScript. Lets start by working our way through the entireEloquent JavaScripttextbook.

Ive never personally gone to a boot camp (and dont 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 bea lot betterthan trying to go through this guide yourself. If youve got the time, its definitely at least worth investigating.

I personally enjoyed Hartls tutorial a lot and think its a really great set-up to not just Ruby on Rails, but many other things (e.g., GitHub, getting a text editor, etc.). But if you disliked it, dont fear! It doesnt mean programming is right for you, it just means youre different than me.

Exercismis also good theyre not nearly as math-oriented, but instead offer Ruby and Python (and other) challenges where you try to make code work a given test suite.

v1.6.18 – Added reference to list of Bootcamps.

v1.8.22 – Added clarification for people who live outside the US.

v1.6.19 – Added link to interview with Buck.

v1.5.11 – Added more info on getting a job.

UPDATE:Thanks to someone in the comments, I found a new resource for learning programming calledThe Odin Project, and dare I say it, I think its better than my guide.I took detailed notes on it here, and I urge you to read them if youre interested in a slightly different take on learning programming.

Earlier, in Step One, I had you look at either Python or Ruby. 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 hasgood support for statistical programmingand has a platform calledDjangothat acts similarly to Rails.

At this point, Im going to recommend to you to completeMichael Hartls Ruby on Rails tutorial. Ruby on Rails is already a really popular and useful language right now, and is a very employable language to know if you want to go into the start-up / tech world. The guide also provides useful introductions to many other important supporting technologies, like GitHub, RSpec, and Heroku. Youll also learn critical concepts like Model-View-Controller and test driven development.

You now know a lot of Rails and JavaScript, and its time to bring it all together. Make something cool. Much cooler than your last app. Show off both your front-end and back-end skills.

It seems good to try to get a breadth of challenge from all four, though Id stick more to Exercism and Codility if youre looking for a position in web development / software engineering.

v1.1.3 – Added my contact information.

v1.3.7 – Added an explicit step for HTML/CSS.

v1.4.11 – Added FizzBuzz test for the first step.

v1.1.6 – Added more info about multiple routes to intro.

Leave a Comment