Show HN: LearnStreet - The Best Place to Learn How to Code
101 points| teamls | 13 years ago |learnstreet.com | reply
We’ve built a site where you can learn Python, Ruby, and JavaScript in a fun, engaging and interactive way. How is LearnStreet different from other learn-to-code sites you ask?
UI/UX: A key aspect of LearnStreet’s courses is its distinct UI/UX. In order to see this, simply sign up!
Multi-modal: Our courses are designed for beginners, and we have multiple ways to help you learn, including live chat, Twitter, Q&A, hints, videos and background material. If you don’t know which language you want to pick up, check out our teaser videos in the Courses page! http://www.learnstreet.com/lessons/languages/javascript
Code Garage: If you already know how to code, check out Code Garage where you can try your hand at cool coding projects like building a Mastermind game or a Sudoku Solver. http://www.learnstreet.com/cg/simple/projects/javascript
Dev Tool: We’ve culled the web to provide some key resources beyond the core programming language that will help you gain a better understanding of what it takes to become a competent coder. http://www.learnstreet.com/dev_tools/
We just launched about a week ago and would love to get your feedback. We are looking for expert coders to help build out our other courses so check out the Contribute section on our site as well.
Coding Starts Here!
-The LearnStreet Team
[+] [-] justjimmy|13 years ago|reply
What's HTML used for? What's CSS? What's the bigger picture? What's the difference between java and javascript? Why are there so many languages. What are all these terms you are spitting out? Can we get some real world analogies so we can grasp some concepts?
But every single lesson from all these startups starts with type 'this' in or 1+1.
I don't think coding lessons should start with 1+1. It should start what coding is, what the language is, why I am learning it and what I could do with it and most importantly, what is different about it compared to rest of the languages. You got Python, Java, HTML, CSS, Ruby, C+ and the list goes on. I think it'd be very beneficial to have a map, that shows every day stuff that people use and list how it was built. ie: iPhone are built on 'X', Android are built on 'Y', Websites are normally built with 'Z', but you can add 'A', 'B' and 'C' to make it even better etc.
To me, the approach taken by these sites are almost identical. And they're all missing something…
[+] [-] russelluresti|13 years ago|reply
Instead, you teach development by having people start coding as soon as possible. You get them playing with the code, manipulating values, and seeing the outcome. Once they see that they're creating something and they enjoy doing it, that's when you explain it to them. Khan Academy has taken this approach and it has proven extremely effective in getting children to start coding.
It's really basic game theory - you don't have to explain the entire backstory or all the controls to get someone playing a game. You drop them in a situation and go "OH SHIT YOU'RE UNDER ATTACK - PRESS X TO ATTACK." You give them one instruction and get them hooked. After that, you can then go through the basic tutorials that explain the menu system and or what numbers mean or how you level up or whatever. But the point is to explain things to them as they need to know them and not before.
The point is to get people coding as quickly as possible. If someone has to read 60 pages of introductory text, they're not going to do it. It's asking for too much up front.
[+] [-] hluska|13 years ago|reply
The problem that I see with your approach is that it is really hard to explain certain concepts to people without any experience. For example, if I wanted to explain the difference between Java and Python, I would likely have to get into the difference between static and dynamic typing. I can't think of a way to explain a type system to someone who can't write a basic program.
Another concern I have is that too comprehensive a resource could actually teach bad habits. If I would have learned from one source, I wouldn't have learned how to debug via Google. I can't tell you how many times knowing how to answer questions with a search engine has saved me!
Great comment though - I bet the developers love reading feedback like this!!
[+] [-] AlexBlom|13 years ago|reply
The problem is I see this knowledge break when 1) it is applied to a more difficult problem that 2) is outside of the scope of the provided loop.
Spending time understanding the conceptual elements (when, where, why) before the how doesn't give immediate results, but it saves many headaches down the road and makes future tools / languages much easier to learn.
[+] [-] helen842000|13 years ago|reply
I mean it doesn't sound too good if you say, 'oh I've learned to use Python' and someone asks you to show them & you have to show them inside of the learnstreet tutorial as you don't know any other way.
I do think it's great people are investing time and effort into this area but it just needs some context so that people can actually walk away with skills from it.
[+] [-] swanson|13 years ago|reply
You should change your Github OAuth permissions. I'm never giving you access to private repos - and would only give you access to public repos if you were creating a repo for me to do the Code Garage stuff (it isn't clear if you do that or not).
I'm happy to auth with Github if you just request my public profile.
[+] [-] msarchet|13 years ago|reply
[+] [-] teamls|13 years ago|reply
We’ve built a site where you can learn Python, Ruby, and JavaScript in a fun, engaging and interactive way. How is LearnStreet different from other learn-to-code sites you ask?
UI/UX: A key aspect of LearnStreet’s courses is its distinct UI/UX. In order to see this, simply sign up!
Multi-modal: Our courses are designed for beginners, and we have multiple ways to help you learn, including live chat, Twitter, Q&A, hints, videos and background material. If you don’t know which language you want to pick up, check out our teaser videos in the Courses page! http://www.learnstreet.com/lessons/languages/javascript
Code Garage: If you already know how to code, check out Code Garage where you can try your hand at cool coding projects like building a Mastermind game or a Sudoku Solver. http://www.learnstreet.com/cg/simple/projects/javascript
Dev Tool: We’ve culled the web to provide some key resources beyond the core programming language that will help you gain a better understanding of what it takes to become a competent coder. http://www.learnstreet.com/dev_tools/
We just launched about a week ago and would love to get your feedback. We are looking for expert coders to help build out our other courses so check out the Contribute section on our site as well.
Coding Starts Here!
-The LearnStreet Team
[+] [-] shaufler|13 years ago|reply
Some criticism: You should show JS syntax errors instead just showing a generic error message. I understand you don't want to scare newbies away with compiler errors, but your solution just makes debugging more difficult.
You should show syntax errors, but translate the default JS error messages into something friendlier. Codecademy does this for their intro lessons.
[+] [-] techpeace|13 years ago|reply
Looks like a great product, though! Keep it up.
[+] [-] intellegacy|13 years ago|reply
[+] [-] lowglow|13 years ago|reply
[+] [-] moistgorilla|13 years ago|reply
[+] [-] jfarmer|13 years ago|reply
Very nice! We can always use more absolute-beginner tutorials in the world.
Just started the Ruby tutorial:
"Great! So what just happened here? To begin with, let's define what you typed 2 + 2 as instructions. The ruby console reads your typed instructions, interprets it, and then acts on the instructions the way you gave it. This step is called evaluation. Instruction when complete are called an expression. If the instructions you have typed are incomplete (for example, if you typed 2 + and hit enter), this console will show an error message. The instruction you typed, 2 + 2 is an expression. It is important to remember that evaluation of an expression always returns a value. This value is what is shown as result on the console. In this case, 4 was the result of the evaluation."
If someone honestly knows nothing about coding, you've probably just lost them right there. Questions a beginner would ask:
* What is a "ruby console?"
* What instructions? I typed "2+2."
* What does "interprets" mean?
* How can instructions be complete? Were they ever incomplete? How do I know when they're complete?
* "Returns?" "Value?" "Result?"
In a few sentences, with jargon highlighted:
I type instructions into a console which turn into expressions when they're complete. The console evaluates the expression and returns a value, which is shown as a result on the console.
A beginning programmer won't have the mental models necessary to make sense any of that. It's context-free. Most of those words have no prior associations, and those that do will lead them astray. Metaphor is your friend.
For reading, I recommend Bret Victor's essay on Learnable Programming: (http://worrydream.com/LearnableProgramming/) and Mindstorms by Seymour Papert (http://www.amazon.com/Mindstorms-Children-Computers-Powerful...).
[+] [-] teamls|13 years ago|reply
[+] [-] alexholehouse|13 years ago|reply
[EDIT] - any reason for the downvote? I'm totally fine with being wrong, or have I just completely missed something?
The reason I brought it up was because when you select Ruby, one of the motivational messages opens with, "Twitter uses Ruby to power 400M incredible tweets every day."
http://www.readwriteweb.com/cloud/2011/04/twitter-drops-ruby...
[+] [-] jitl|13 years ago|reply
Their front-end, however, remains Ruby. The link you posted is just about search infrastructure.
[1]: http://twitter.github.com/
[+] [-] aaronbrethorst|13 years ago|reply
http://tess2.uspto.gov/bin/showfield?f=doc&state=4008:ir...
http://www.geekwire.com/2012/exclusive-amazoncom-buys-teachs...
[+] [-] kyro|13 years ago|reply
Does anyone have any suggestions or good resources that are tailored to my level?
[+] [-] skyhook_mockups|13 years ago|reply
Instead what worked really well for me is to find a practical problem that I wanted to solve (maybe with the goal of making money from it). It turns out that just about any interesting project that you dream up for yourself will have aspects that are outside of your current knowledge/ability. Then as soon as you hit these parts start looking for reference materials, documentation or tutorials specifically related to this problem. Before you know it you're learning new stuff.
And the upshot of this approach is, that if you stick with it you may end up with a functional product at the end, which you can sell.
Also read other people's code. I find it really humbling to read well crafted code. It also motivates me to continue refining my own code.
[+] [-] allsystemsgo|13 years ago|reply
In any case, I'm still plugging away, but I have learned about doing basic math, variables, etc etc quite a lot. I'll keep going but, in the end, what I want to make is a fully functioning and actually USEFUL web app that LOOKS and FEELS professional.
So many of these online resource just take you half way. They try to be SO user friendly and approachable, but in doing so the tutorials are filled with too much useless fluff. "We are different because we make learning FUN!"
Or, the tutorials are just far too advanced.
[+] [-] crntaylor|13 years ago|reply
It won't teach you how to use any frameworks. It won't teach you how to write a particular language (well, you'll learn a bit of Scheme, but that's a by-product). Instead, it will teach you to think computationally, which is a far more valuable skill.
I can't emphasise enough how much that book improved my programming. Everyone should read it. If you read that book beginning to end and do all the exercises, I don't think it's an exaggeration to say that you will instantly be in the top 1-10% of programmers worldwide.
[1] http://mitpress.mit.edu/sicp/full-text/book/book.html
[+] [-] nicolethenerd|13 years ago|reply
It manages to cover material fairly quickly and talk you through getting a working webapp up and running (and deployed!) while still taking the time to explain the little things that a more experienced dev might find obvious.
[+] [-] chudi|13 years ago|reply
If you want to understand what the computers does and on what level you just need to start reading books or going to courses
Books about algorithms and data structures (Cormen et al) Any book introductory to Operating Systems is a must (Tanenbaum or Silberschatz operating systems)
[+] [-] pendext|13 years ago|reply
[+] [-] teamls|13 years ago|reply
[+] [-] eranation|13 years ago|reply
[+] [-] unknown|13 years ago|reply
[deleted]
[+] [-] jkeesh|13 years ago|reply
Our philosophy is that the key to teaching beginners is on providing help from real people, and that is what we are doing at CodeHS. Would be grateful for any feedback from the HN community.
[+] [-] JPonczek|13 years ago|reply
[+] [-] quad_copter_cat|13 years ago|reply
[+] [-] rurounijones|13 years ago|reply
When I log in with Github why do I have to enter my name and email on the sign-up form?
You guys already got permission to read that from github, if you want to offer flexibility then at least put in the defaults and let me edit them.
Also "Email Id" could be named better.
[+] [-] sdesai|13 years ago|reply
[+] [-] DGCA|13 years ago|reply
[+] [-] zio99|13 years ago|reply
[+] [-] teamls|13 years ago|reply
[+] [-] JosephHatfield|13 years ago|reply
[+] [-] lutusp|13 years ago|reply
[+] [-] unknown|13 years ago|reply
[deleted]
[+] [-] swagv|13 years ago|reply
[+] [-] bromang|13 years ago|reply
[+] [-] teamls|13 years ago|reply