I get a lot of people genuinely interested in learning. In my opinion code academy sucks cause of the false sense of accomplishment it gives. Thoughts? Strategies?
Tell them to get a good book. The value of having a single source from complete beginner to intermediate programmer written in the same voice with full knowledge of what you have completed so far at each point should not be undervalued just because web resources are free.
What I have been telling my friends recently is to check out an online course. This one course named CS50x has been amazing in teaching people about CS and programming. So, tell them to see <a href="https://www.edx.org/course/harvardx/harvardx-cs50x-introduction-computer-254....as" rel="nofollow">https://www.edx.org/course/harvardx/harvardx-cs50x-introduct...</a> it starts in a few days and can be taken throughout 2014.
I totally agree with wturner on the learning curve, as I'm also a 'noob'. I've taken up learning to code in the past year and it is very energy and time-consuming! I started with sites like CodeAcademy, but I've since turned to MIT OCW to give me a more thoughtful and full background in computing. And I want to know about a lot more than creating pages and formatting for the web.
I always tell people to find a problem to solve and learn coding on the way, rather than thinking of learning to code as an end goal, to more so think of it as another tool to problem solve, which you can learn how to use on your journey to build something to solve the initial problem.
If they are still in school, tell them to take a class. I really got started (other than some BASIC in elementary school) with Java classes in high school. The structure of the class, regular assignments, and the fact that I would get a meaningful grade made me work a lot harder at it than I otherwise would have. Not that I wouldn't have worked hard, but as with any pursuit raw passion only gets you so far and a good instructor will help you apply yourself in the right areas and progress that much faster.<p>If getting a class isn't an option, there's always something like Learn Python the Hard Way, or if they have issues following just text, Land of Lisp is pretty gentle and friendly, if not as immediately applicable to say, mobile development.
Clean Code by Robert C. Martin. It's not a book to learn how to code but a book that gives good habits on how to write clean code which I think is very useful regardless of languages.
Ask them why they want to learn it and insist they find something they are passionate about building as an end result. As far as really learning,
tell them it will take 3-5 years of studying every day, building projects and adopting the process as a lifestyle. Most of the marketing shit around learning programming is fluff. BTW This is coming from one of the people you are speaking of who was (and still kind of is) a 'noob'. I just happen to have a technical background outside of code to help ramp me up. Other than that tell them to try it out and see if they like it. The learning curve will inevitably make you cry. But after you reach a certain point you can begin getting really creative which is very very empowering! This takes muscle memory and imbuing yourself in the culture, concepts and tools.
They have to commit. They have to apply themselves <i>every day</i>. It's not just that programming is a complex topic, but because so much at being good at it is being mechanically efficient at it. I've worked with learning coders who had a bare familiarity with their operating system, nevermind the command prompt.<p>Not being able to use Ctrl/Cmd-F to quickly locate code snippets in your text editor. Not using keyboard shortcuts...the seconds it takes to move from task to task quickly build up, and so does the frustration and urge to quit.<p>Everyone wants coding to be about amazing creations and The Future...but a lot of proper coding is just hard work and good habits. When that routine is in place, learning AND producing code is significantly easier.
First, don't refer to them as noobs unless you are trying to degrade them. Second, I recommend Introduction to Systematic Program Design on Coursera. It matches the same intro course for which CompSci students pay Universities thousands of dollars across North America.
I wouldn't neglect the theory. Bad habits picked up can take years to break.<p>Find the best book ever written for your language of choice, its Crockford's book for js I imagine - don't know about other languages.<p>I would NOT learn to write code from random web resources. A good portion of the code on sites is horrible. There's alot of horrific PHP code floating around out there.<p>Except, find someone on Github who is blowing your mind with their stuff and read through their gists and projects. Succinct and easy to understand code is best. I did this for two hours last night and got more out of it than a month reading weak stuff and the more mediocre books..
I tell them to apply to a developer bootcamp. Schools like this are popping up everywhere because there really are people who are willing (and eager) to hire the students once they graduate. I'm currently attending (and about to graduate from) a developer bootcamp in Austin TX, and I can absolutely recommend this route. Yes, it's impossible to learn everything in such a short amount of time, and attending a bootcamp may not be for everyone, but if one is serious about learning to code, it's a pretty efficient way to learn a new skill.
Get them to make something on <a href="http://neocities.org" rel="nofollow">http://neocities.org</a> because it's not hard, it has visual results they can show to anyone, and once they're comfortable with the basics of the site have them read a javascript book.<p>Moving quickly and freely (in any direction) at the beginning helps keep interest levels up, where an 800 page book on Java might squash their energy. Plus, if you only have the basic-basics of web stuff you start to chafe pretty quickly, and that's great motivation.
It depends on what they mean. If it's a physics grad student who wants to learn coding, I assume they need to do high performance work and point them straight to C so they can learn the fundamentals first on memory management, the stack, and so on.<p>Usually, I ask them what they want to do with code and go from there. Sometimes, I realize that all they really want to learn is HTML and CSS. Other times, I really do feel like the "hardcore" approach would be more fulfilling, albeit slower.
There are many things you could tell someone to get them started in programming. Here's one:<p><a href="http://docs.python.org/2/tutorial/" rel="nofollow">http://docs.python.org/2/tutorial/</a><p>Offer to answer questions when they have them.<p>If they get through that, talk about what kind of programming they'd like to do, and point them toward their first resource. Offer to help. If they actually still want to code, they'll go from there.
Personally, I learn better by doing. There are some great free courses available over at <a href="https://tutsplus.com" rel="nofollow">https://tutsplus.com</a> that are quite good. I also found the <a href="http://onemonthrails.com" rel="nofollow">http://onemonthrails.com</a> pretty good for beginners. However, that one is a paid course, but it's pretty cheap
A few good books. I like Python as a first language, but to each their own.<p><a href="https://github.com/karan/Projects" rel="nofollow">https://github.com/karan/Projects</a> has a good set of first projects, ranging from straight algorithm practice to actual app and full project work. My younger brother is following something very similar, and it's working quite well so far.
There are a bunch of better online resources than Codecademy. Grok Learning (<a href="https://groklearning.com" rel="nofollow">https://groklearning.com</a>) has a good introduction to programming course using Python.
I would say read this:
<a href="http://www.techendo.co/posts/how-to-learn-to-program-in-10-easy-steps" rel="nofollow">http://www.techendo.co/posts/how-to-learn-to-program-in-10-e...</a>
Ask them what they want to build. Learning code for the sake of it will always be disappointing. You learn better coding towards a project then just aimlessly learning concepts.
A Jedi’s strength flows from the Code. But beware of the dark side. Messy coding, poor indentation, bad structure; the dark side of the Code are they. Easily they flow, quick to join you in a fight. If once you start down the dark path, forever will it dominate your destiny, consume you it will, as it did Obi-Wan’s apprentice.