5 ms·
What to tell noobs who want to "learn coding"?
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?
- lemonberry 13y agoTell them to build things from the get go. Give them some ideas on what to build. Tell them it's ok to suck.
- wturner 13y agoAsk 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.
- dccoolgai 13y agoCode or code not. There is no learn.
- jchung 13y agoI was trying to figure out how to explain the attitude shift that got me over the "want to learn" hump into actually learning, but I think you just nailed it. Once I started coding, I learned to code. Perhaps the advice is "pick a project (of your own design or someone else's, it doesn't matter) and start working on it."
- punkghetto 13y agoI 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.
- WoodenChair 13y agoTell 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.
- invalidOrTaken 13y agoI agree with this completely, and I'll make a specific claim: eloquentjavascript.net is the best book to use. ---it's an online book that lets you run code right in the book ---it's the language of the REPL that everyone has access to (in the browser) ---js is dynamically typed, which I think is easier for people to grok (I learned Java first, and for months I was puzzled by this "public static void main (String args[])" that I had to start everything with. Public? static? main? void? JS has none of these, and while it's debatable whether that's a good thing or a bad thing, it's an unqualified good thing when first learning to code.)
- WoodenChair 13y agoI don't know that book, but I just want to be clear that I did not mean to imply that free == bad. On the contrary, there are superb freely available books like Structure and Interpreation of Computer Programs. However, there are also superb books that cost significant amounts of money ($40+). Learning to program is worth a $50, or even $100 investment in a great book if the free books don't match what you're attempting to learn. They're able to sell for that price because they provide value that free alternative resources do not. My main point is that in my opinion books, interactive or not, are still the best source for learning to program for many, if not most new programmers.
- hnriot 13y ago"public static void main (String args[])" - that would put anyone off, and for good reason, it's total bollocks. Either "main" is special or it's not, if it is why tell java stuff it already knows. If the jvm wants to run something that's public and called main and has a method signature of string array then why not dispense with all the nonsense - the answer's simple - it's java - the most verbose boiler-plate laden language out there designed for groups of mediocre developers. Despite needing dozens of lines to even basic stuff, it forces people into some form of homogeneity to keep teams of "java certified" developers in jobs. if you want to learn to program, open Terminal, type ipython and go from there. When lost google stackoverflow, repeat. Forget books, there are way better, more up to date online resources.
- semerda 13y agoTell em to Build something. Best form of learning. Practice makes perfect. Theory will be used along the way.
- Peretus 13y agoI 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.
- jared314 13y agoI've been interested in the idea of developer bootcamps recently, because it might make a good trade school for developers looking to retool into a new language/stack. But, I have yet to meet anyone, in my circle of friends, who has acquired their coding skills from them. What is the business model around them like?
- Peretus 13y agoThe schools usually charge somewhere between $6,000-$20,000, with most falling somewhere around $8K-$12K. The Maker Square has cohorts of around 40 students, split between two buildings, with multiple instructors in each room who help students as needed. We start at 9:00am and leave the space around 5-7pm every evening. We don't have class on the weekends, so those usually end up being study days.
- jared314 13y agoIs it a school lesson like structure, similar to what you would get with a CS degree track, or a more a focused project-oriented structure, with increasing difficulty?
- Peretus 13y agoThe structure is highly focused and project-oriented. There isn't really an occasion where one would be likely to ask "Ok, so how am I going to use this in the real world?" In the beginning, the day is usually split into two parts: frontend and backend. Each day there is a 'microproject' that covers what you learned that day, and each Friday there is a project that covers what you have learned up to that point. There is very little theory, though the instructors are constantly recommending books and other reading material for things they gloss over. Towards the end of the course, the frontend and backend lessons are integrated into projects that students complete while pair-programming.
- Comkid 13y agoI 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.
- lowglow 13y agoI would say read this: http://www.techendo.co/posts/how-to-learn-to-program-in-10-easy-steps http://www.techendo.co/posts/how-to-learn-to-program-in-10-e...
- lowglow 13y agoAlso, Check out http://schools.techendo.co/ http://schools.techendo.co/ for reliable schools. We're also going to start offering a graduate and leadership school for dev school graduates called campendo: http://campendo.co/ http://campendo.co/ If you're a dev school graduate I'd love to meet up with you over coffee and understand how we can improve the experience with Campendo.
- greenyoda 13y agoI'm very skeptical of any "learn to program" list that begins with "Buy a MacBook Air". You can learn to program just as well on that cheap PC laptop you already own, and a MacBook Air is a very expensive investment for someone who may or may not become a professional programmer. Also, learning git isn't something that a novice programmer should need to struggle with. It's hard enough figuring out the concepts of programming without having to add on all sorts of other stuff. You don't need git to write a 100-line program. Finally, the whole list is very skewed toward web development, which not everyone is interested in. People who work in science or business might be more interested in learning how to write programs that manipulate data (e.g., using Python to automate what they would otherwise do with Excel). Others might want to learn how to write games for PCs or iPads. Web apps written in Rails might appeal to the startup crowd, but they're hardly fundamental steps toward learning programming.
- joshuapants 13y agoIf 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. 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.
- runawaybottle 13y agoI think this sums it up succinctly: http://norvig.com/21-days.html http://norvig.com/21-days.html
- dpweb 13y agoI wouldn't neglect the theory. Bad habits picked up can take years to break. 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. 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. 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..
- harvestmoon 13y agoI learned to do some MySQL from a random website. Code wasn't great. I didn't learn in detail, either. And it used mysql_query(). Ideally, a book from the last year or so would have been better!
- avelis 13y agoClean 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.
- infinitebattery 13y agoWhat 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 https://www.edx.org/course/harvardx/harvardx-cs50x-introduction-computer-254....as https://www.edx.org/course/harvardx/harvardx-cs50x-introduct... it starts in a few days and can be taken throughout 2014.
- bung 13y agotesting: https://www.edx.org/course/harvardx/harvardx-cs50x-introduction-computer-1022 https://www.edx.org/course/harvardx/harvardx-cs50x-introduct...
- timdawborn 13y agoThere are a bunch of better online resources than Codecademy. Grok Learning (https://groklearning.com https://groklearning.com) has a good introduction to programming course using Python.
- danso 13y agoThey have to commit. They have to apply themselves every day. 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. 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. 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.
- wudf 13y agoFirst, 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.
- primitivesuave 13y agoA 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.
- ams6110 13y agoIt used to be so easy: a) Buy a C-64, TI-99/4A, TRS-80, etc. b) Turn it on c) start programming.
- Groxx 13y agoNow it's: a) Buy a Raspberry Pi ($25 vs $hundreds (converted to today) when those were released) b) Turn it on c) Start programming (since it starts up into a programming environment of some kind, IIRC) If anything it's easier now, and much much much more available to people who don't have $1400 to drop on the new C64 hotness: http://en.wikipedia.org/wiki/Commodore_64 http://en.wikipedia.org/wiki/Commodore_64
- cardeo 13y agoPersonally, I learn better by doing. There are some great free courses available over at https://tutsplus.com https://tutsplus.com that are quite good. I also found the http://onemonthrails.com http://onemonthrails.com pretty good for beginners. However, that one is a paid course, but it's pretty cheap
- Groxx 13y agoGet them to make something on http://neocities.org http://neocities.org 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. 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.
- banachtarski 13y agoIt 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. 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.
- deleted 13y ago[deleted]
- erichurkman 13y agoA few good books. I like Python as a first language, but to each their own. https://github.com/karan/Projects https://github.com/karan/Projects 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.
- a3n 13y agoThere are many things you could tell someone to get them started in programming. Here's one: http://docs.python.org/2/tutorial/ http://docs.python.org/2/tutorial/ Offer to answer questions when they have them. 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.
- Apreche 13y agoIf you want to make a chart, by all means use Excel. But what if you want to make a chart maker?
- greggawatt 13y agoAsk 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.
- umren 13y agoi always recommend books on specific field they want to learn, if they do it then they really want it, if not.. well..