I'm torn about all of these types of apps. On one hand, I think it's great to invite people into the world of coding and doing so in a user friendly matter. No doubt Grasshopper and a handful of similar apps are well designed, but is it really the right way to go about things?
I remember vividly learning to code at age 11. I had an old computer, windows would constantly crash and the only thing I could access really was QBASIC.
Alongside a book with code snippets, I would simply write a line of code, hit run and see what happens. Then, go back to the code and 'go rogue' (meaning: change the numbers a bit and make the line 5pixels instead of 2 for example). This is where the magic happened, because I actually coded something. It wasn't part of an educational application, it was the real deal inside the real editor with a real output.
The learning always came from trial and error and in a way is very similar to how I still code things (when I'm not designing SaaS products for awesome B2B companies)
The book might be replaced with Google & Stackoverflow, but the principles are the same.
The magic of coding, I believe is in writing something that is real.
Great thoughts! I completely agree that learning to code is a lot about trial and error. One of key things that we decided to do with Grasshopper is make it possible for people to write real code, but on their phones. From the very beginning, it's possible for users to "go off the rails" and write code, run it, and see what happens. We didn't want to do fill-in-the-blank stuff, since there's only one right answer. We constrain the code editing environment to be relevant to the puzzle at hand, but that's mostly so we don't overwhelm beginners.
We also have a Playground (available in the left-hand menu) where users can just play around using the Grasshopper coding environment.
Would love to keep getting your feedback on how we can make everything more real and keep that magic. :)
I think it's an important signal that in every thread like this rather than say "wow, I wish I had something like grasshopper when I was a kid", we start waxing nostalgic about QBASIC. (I'm right there with you btw).
A lot of us grew up learning with tools, not toys (except you, logowriter, you're cool). Then we went and made the tools totally unapproachable. So now kids get the opposite approach: toys, not tools.
Teaching software like grasshopper is an experiment, and we're about to see the results. The first version of Scratch came out in 2003. Obviously this is super fuzzy, but for the sake of argument call 2003 the border between the QBASIC/getting a Sam's teach yourself C book at B&N era and the Scratch era. So a hypothetical 8 year old who started learning with scratch in 2003 is now 23 years old. The kids who grew up on this stuff are about to start showing up in adult life, and it'll be interesting to see how they turn out.
> Alongside a book with code snippets, I would simply write a line of code, hit run and see what happens. Then, go back to the code and 'go rogue' (meaning: change the numbers a bit and make the line 5pixels instead of 2 for example).
Grasshopper does pretty much this, but with a nicer UI and adapted to the constraints of a tiny phone screen. It gives you a code window and a graphics window and you get to write code and see what the code does. It's is a JavaScript environment which is modern-day web-world filler of BASIC's niche.
It is worth pointing out that your style of learning might be different than others', and gender has been found to be one such difference [1]. There are quite a few studies that have found tinkering to be done far more often by males, but is not necessarily more effective.
How far does it make sense to take this? Take it too far, and all tutorials are bad.
IMHO there needs to be a balance between guided learning and self-directed exploration.
Too little guidance and you can't get your bearings, causing you to get stuck and unable to cross what should be relatively minor hurdles.
Too much guidance (or too little interest exploration) and you end up not really understanding why things are the way they are or what is possible beyond the very narrow range of things you've been taught.
My experience with coding was using the old BASIC books (like the ones at https://www.atariarchives.org/ ), and stubbornly typing my way to make these games work.
When they didn't, I found it enormously satisfying to find out how to work around the problem being expressed in print; there were enough variations in BASICs for different machines that the listing for a TI 99/4A program wouldn't work in straight AppleSoft BASIC, for example.
But the time between typing all the code and finding out if it worked was grueling. I'm not sure if the students of today would be satisfied with that large a report-back loop.
The magic of coding, especially early on, is in realizing that you, a user, can deterministically control a computer (like you stated in going rogue). This has nothing to do with writing something that is real, it has to do with cause, effect, action, reaction.
I also started with Qbasic. I learned from the examples in the on-line help system. The first one I vividly recall running and changing was the CIRCLE example; probably the first code I ever wrote.
I tend to agree with Bret Victor on this one (http://worrydream.com/LearnableProgramming): changing numbers randomly is a terrible way of learning programming. We can, and and should try and do better. The microwave analogy in the 'Read the Vocabulary' sections is very apt.
We're super excited to be announcing Grasshopper today! We're hoping that it'll make learning to code accessible to more adults that are interested in applying coding skills to their careers, hobbies, or just for fun.
Please let us know what you think, ask questions, all that jazz. We're still in the process of learning and making changes, so all feedback is super helpful.
My teenage daughter showed me Grasshopper yesterday. She was very excited about her progress, showing off the puzzles that she had solved and the code she had written. She hates schoolwork, but she really loved the app. I think it's a fantastic way to approach that often daunting initial learning curve.
I tried looking for a video of someone using the app so I could get a more clear idea of the sorts of things it would teach. This is the first thing I came across: https://www.youtube.com/watch?v=lsA2bGdrkaQ
I found it interesting to hear the kinds of reactions the kid was having to it: if you skip around the video you'll see the most common reactions are jumping around between distress, frustration, and anger.
I don't think that's because this is a bad app.
Instead, I think that's probably a natural part of learning to program—and of programming even once you've learned. It's kind of a strange thing that something which can bet net enjoyable (oftentimes) can also so typically elicit those kinds of reactions (of course adults are better at suppressing them, but the impact must still be there).
You would think that someone at Google could use their own search tools to look up a name for a coding tool before using one that's already been in existence for years. http://www.grasshopper3d.com/
You're assuming they care. Google was aware of a startup called Inbox that did stuff with email, yet they went ahead with their own app called inbox, steamrolling the startup.
I have no reason to suspect the same thing isn't happening here.
Seeing the response on HN to these kinds of tools/toys makes me wonder if they're marketed incorrectly.
These things aren't really teaching "how to code" (what we associate with stuff like Java, Python, etc.), but "how to think like a computer" or "how to break down and solve problems." I wonder if there would be an equally pessimistic reaction if the headline and marketing material said that instead.
I think a lot of being a successful developer comes from being able to think a certain way, and I think that these types of games/toys can definitely help children learn to think that way. I remember the Dr. Brain games giving me some of my first glimpses into this kind of literal, step-by-step thinking.
I'm now tired because I played with it instead of going to sleep :(. I must say, it's well-executed and feels lightweight (which is a surprise both considering applications of this kind, and considering applications coming from Google).
I must say I love the attention to details! I was impressed by the effort that seems to have went to design the error detection - I start to mess with an example, and the messages tell me exactly what I'm missing at the right level of abstraction. Like, I forgot to to the next line when drawing blocks, and the popup explains I should use newLine(). Or, in another case, the popup telling me that yay, I have row 1 and 3 of the solution correct, and need to work on row 2. Etc.
Also the little details made me smile - like being able to replay the "jumping grasshopper" animation on success screen by tapping the grasshopper.
The keyboard model used in Grasshopper is something I first seen in Hacked (http://www.hackedapp.com/), and it seems to be catching on, which is great! Now I really wish someone would make a keyboard for Lisp like that; I could do some work while standing in a bus...
So here's the question: does this product reflect any of the research into teaching programming or is it just "somebody had an idea"? There is nothing on the website I could find that addresses this.
We know a reasonable amount about teaching programming, and in particular we know that traditional methods are really bad. Most people, when they teach programming, reproduce the poor traditional methods used to teach them.
There is already a large quantity of "learn to code" apps and sites. We don't need more. We need more quality.
Long ago I had an Apple Newton. The funnest thing for the Newton, by far, was a program that would evaluate statements or code snippets of NewtonScript on the device. It let you try little programs while you were waiting for something.
As far as I can tell, if a child is on a Google account with parental controls, it is impossible for them to log into the app. This kinda sucks for a nice educational app.
I would've recommended this to people I know that want to learn to code, but I wouldn't wish JavaScript to be my worst enemy's first coding language...
Really? I think JavaScript is the perfect language to learn with. Yes it has its quirks and weird edge case, but from someone with no programming background I think JavaScript is one of the easiest and most practical language to learn.
I think a lot of the "bad stuff" can be seen as an advantage. Like for example:
- Lack of strong typing
- User don't have to bother with the data type at first, they go directly into the logic
- Typecasting when comparing
- faster for quick comparison. E.g. if a user wants to check if the input of the user is equal to a certain number, he doesn't have to cast it as an int/float/whatever before, he just does "10" == 10 and it just works.
And also, its greatest strength I think is the fact that it's the language of the web, and web development has the lowest "barrier to entry", because all you need is a notepad and a browser and you can easily develop and test.
Anyway, as many people have pointed out, I don't think it matters that much what language you start with, because it makes you learn the logic of programming, which is then transferable to all other languages anyway.
No one is going to learn to be an effective programmer using a smartphone.
I do expect a lot of people to install it, use it for 5 minutes, and never bother with it again. It's a perfectly suitable way to push people out of programming because there's no way you can get a real feel for it with a smartphone. All of the 'learn to "code"' applications that don't involve writing actual software seem like a giant waste of time and effort to me.
[+] [-] fairpx|8 years ago|reply
I remember vividly learning to code at age 11. I had an old computer, windows would constantly crash and the only thing I could access really was QBASIC.
Alongside a book with code snippets, I would simply write a line of code, hit run and see what happens. Then, go back to the code and 'go rogue' (meaning: change the numbers a bit and make the line 5pixels instead of 2 for example). This is where the magic happened, because I actually coded something. It wasn't part of an educational application, it was the real deal inside the real editor with a real output.
The learning always came from trial and error and in a way is very similar to how I still code things (when I'm not designing SaaS products for awesome B2B companies)
The book might be replaced with Google & Stackoverflow, but the principles are the same.
The magic of coding, I believe is in writing something that is real.
[+] [-] fearofpoets|8 years ago|reply
We also have a Playground (available in the left-hand menu) where users can just play around using the Grasshopper coding environment.
Would love to keep getting your feedback on how we can make everything more real and keep that magic. :)
[+] [-] smogcutter|8 years ago|reply
A lot of us grew up learning with tools, not toys (except you, logowriter, you're cool). Then we went and made the tools totally unapproachable. So now kids get the opposite approach: toys, not tools.
Teaching software like grasshopper is an experiment, and we're about to see the results. The first version of Scratch came out in 2003. Obviously this is super fuzzy, but for the sake of argument call 2003 the border between the QBASIC/getting a Sam's teach yourself C book at B&N era and the Scratch era. So a hypothetical 8 year old who started learning with scratch in 2003 is now 23 years old. The kids who grew up on this stuff are about to start showing up in adult life, and it'll be interesting to see how they turn out.
[+] [-] gowld|8 years ago|reply
Grasshopper does pretty much this, but with a nicer UI and adapted to the constraints of a tiny phone screen. It gives you a code window and a graphics window and you get to write code and see what the code does. It's is a JavaScript environment which is modern-day web-world filler of BASIC's niche.
[+] [-] azhenley|8 years ago|reply
[1] ftp://ftp.cs.orst.edu/pub/burnett/chi06-genderTinker.pdf
[+] [-] dannyr|8 years ago|reply
Also, some people who want to learn how to code may be older and they can't travel back in time to code when they are 11.
[+] [-] adrianmonk|8 years ago|reply
IMHO there needs to be a balance between guided learning and self-directed exploration.
Too little guidance and you can't get your bearings, causing you to get stuck and unable to cross what should be relatively minor hurdles.
Too much guidance (or too little interest exploration) and you end up not really understanding why things are the way they are or what is possible beyond the very narrow range of things you've been taught.
[+] [-] taserian|8 years ago|reply
When they didn't, I found it enormously satisfying to find out how to work around the problem being expressed in print; there were enough variations in BASICs for different machines that the listing for a TI 99/4A program wouldn't work in straight AppleSoft BASIC, for example.
But the time between typing all the code and finding out if it worked was grueling. I'm not sure if the students of today would be satisfied with that large a report-back loop.
[+] [-] ryanisnan|8 years ago|reply
[+] [-] ashleyn|8 years ago|reply
[+] [-] everdev|8 years ago|reply
[+] [-] kot-behemoth|8 years ago|reply
[+] [-] fearofpoets|8 years ago|reply
Please let us know what you think, ask questions, all that jazz. We're still in the process of learning and making changes, so all feedback is super helpful.
- Laura (Grasshopper Founder)
[+] [-] kjhkhhhhhb|8 years ago|reply
[+] [-] ronilan|8 years ago|reply
Why?
[+] [-] JeanMarcS|8 years ago|reply
So I couldn't test it.
[+] [-] ssambros|8 years ago|reply
[+] [-] rubinelli|8 years ago|reply
[+] [-] bsndev|8 years ago|reply
[deleted]
[+] [-] westoncb|8 years ago|reply
I found it interesting to hear the kinds of reactions the kid was having to it: if you skip around the video you'll see the most common reactions are jumping around between distress, frustration, and anger.
I don't think that's because this is a bad app.
Instead, I think that's probably a natural part of learning to program—and of programming even once you've learned. It's kind of a strange thing that something which can bet net enjoyable (oftentimes) can also so typically elicit those kinds of reactions (of course adults are better at suppressing them, but the impact must still be there).
[+] [-] s1mon|8 years ago|reply
[+] [-] fragmede|8 years ago|reply
I have no reason to suspect the same thing isn't happening here.
[+] [-] esprehn|8 years ago|reply
[+] [-] iseyler|8 years ago|reply
[+] [-] ris|8 years ago|reply
[+] [-] colordrops|8 years ago|reply
[+] [-] sdrothrock|8 years ago|reply
These things aren't really teaching "how to code" (what we associate with stuff like Java, Python, etc.), but "how to think like a computer" or "how to break down and solve problems." I wonder if there would be an equally pessimistic reaction if the headline and marketing material said that instead.
I think a lot of being a successful developer comes from being able to think a certain way, and I think that these types of games/toys can definitely help children learn to think that way. I remember the Dr. Brain games giving me some of my first glimpses into this kind of literal, step-by-step thinking.
[+] [-] TeMPOraL|8 years ago|reply
I must say I love the attention to details! I was impressed by the effort that seems to have went to design the error detection - I start to mess with an example, and the messages tell me exactly what I'm missing at the right level of abstraction. Like, I forgot to to the next line when drawing blocks, and the popup explains I should use newLine(). Or, in another case, the popup telling me that yay, I have row 1 and 3 of the solution correct, and need to work on row 2. Etc.
Also the little details made me smile - like being able to replay the "jumping grasshopper" animation on success screen by tapping the grasshopper.
The keyboard model used in Grasshopper is something I first seen in Hacked (http://www.hackedapp.com/), and it seems to be catching on, which is great! Now I really wish someone would make a keyboard for Lisp like that; I could do some work while standing in a bus...
[+] [-] Cynddl|8 years ago|reply
[1]: http://www.grasshopper3d.com/
[+] [-] tsieling|8 years ago|reply
Edit: a Google account sign in, however, isn't that charming. I got a 404 on trying to log in. Oh well.
[+] [-] noelwelsh|8 years ago|reply
We know a reasonable amount about teaching programming, and in particular we know that traditional methods are really bad. Most people, when they teach programming, reproduce the poor traditional methods used to teach them.
There is already a large quantity of "learn to code" apps and sites. We don't need more. We need more quality.
[+] [-] pinkumbrella|8 years ago|reply
[+] [-] jacksmith21006|8 years ago|reply
https://kotaku.com/google-s-new-word-game-is-fun-but-weirdly... Google's New Word Game Is Fun, But Weirdly Into Brands
[+] [-] slim|8 years ago|reply
[+] [-] georgeecollins|8 years ago|reply
[+] [-] ketchers|8 years ago|reply
[+] [-] alimbada|8 years ago|reply
[+] [-] ananaskiller|8 years ago|reply
I think a lot of the "bad stuff" can be seen as an advantage. Like for example:
- Lack of strong typing - User don't have to bother with the data type at first, they go directly into the logic
- Typecasting when comparing - faster for quick comparison. E.g. if a user wants to check if the input of the user is equal to a certain number, he doesn't have to cast it as an int/float/whatever before, he just does "10" == 10 and it just works.
And also, its greatest strength I think is the fact that it's the language of the web, and web development has the lowest "barrier to entry", because all you need is a notepad and a browser and you can easily develop and test.
Anyway, as many people have pointed out, I don't think it matters that much what language you start with, because it makes you learn the logic of programming, which is then transferable to all other languages anyway.
[+] [-] z3t4|8 years ago|reply
[+] [-] unknown|8 years ago|reply
[deleted]
[+] [-] linuxftw|8 years ago|reply
I do expect a lot of people to install it, use it for 5 minutes, and never bother with it again. It's a perfectly suitable way to push people out of programming because there's no way you can get a real feel for it with a smartphone. All of the 'learn to "code"' applications that don't involve writing actual software seem like a giant waste of time and effort to me.