top | item 16869809

(no title)

fairpx | 7 years ago

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.

discuss

order

fearofpoets|7 years ago

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. :)

smogcutter|7 years ago

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.

gbear605|7 years ago

FYI, the first public release of Scratch was in 2007 [1], so that's really a more accurate border. I'm aware of this because I started using Scratch in 2008. I'm a computer science student in college now, and I've had a couple of internships. From my experience, Scratch was a great start. I learned a lot from it, and I really credit it with getting me into the field, although I likely would have irregardless of Scratch. Either way, I don't think that it necessarily will be bad for toys to replace tools.

[1]: https://web.archive.org/web/20070120041500/http://scratch.mi...

themarkn|7 years ago

At 15 I sat with a book about QBASIC and got to a certain point, got stuck, and had nobody around me to ask for help and no idea what to do. I decided I wasn't smart enough for programming and stuck to basic html and CSS for years and years. I avoided CS in college. I turned out ok, but: I can code! I was wrong when I gave up, but I didn't know that because the resources weren't approachable enough for me. And maybe my determination and self-belief wasn't as strong back then. I wanted to be a game developer really badly growing up. And then I found a book that taught me I couldn't program.

I like the new stuff better!

taneq|7 years ago

A lot of us also grew up with tools/toys like The Games Factory, which got us excited and left us wanting more. And then we got into QBasic (which I sure do feel nostalgic about) and Borland C++ (which, on Windows 3.1, I really do not feel nostalgic about :P ) and MS Visual C++ (Visual Studio 6 was awesome!)

flukus|7 years ago

I'm more worried about the tablet/phone generation. This was when our machines fundamentally shifted to toys not tools. We lost the input methods necessary for tools and things like the file system are abstracted away. We'll have a generation of programmers that have never seen a command prompt and no concept of what a file is.

My nephews (10 & 12) are learning programming at school for which they both had to have an iPad for some shitty programming interface. They didn't learn anything about logic because the animated graphics were too distracting, they learned how to manipulate sliders to adjust things like speed and that's about it.

infectoid|7 years ago

This would make a great AskHN.

It would be interesting to know if anyone on HN in their early 20s or lower were first introduced to software development via scratch or some other means.

cicero|7 years ago

At my school, we teach Scratch in 5th grade (US, age 10) and I teach Python in 6th grade. I think Scratch and the like are good starts, so I'm glad to see more offerings. Even so, stepping up to Python is a big step from the blocks languages.

Last week I started the 6th graders on MicroPython on the BBC micro:bit. So far it is going well, and I think it will capture some of the aspects of the QBASIC on DOS experience. Today I will show them how to do images on the 5x5 LED matrix, which will be much simpler than trying to do graphics on Windows. Even so, they will still learn about X-Y coordinates and pixel brightness levels.

ashleyn|7 years ago

Qbasic was never quite the professionals' system like C and Assembly was, but looking back, I was at least using the same system that non-technical managers who regretted firing the developers were clumsily banging out solutions with.

gowld|7 years ago

> 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.

azhenley|7 years ago

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.

[1] ftp://ftp.cs.orst.edu/pub/burnett/chi06-genderTinker.pdf

dannyr|7 years ago

Learning comes in different ways.

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.

tzahola|7 years ago

So, older people can learn programming easier with... a cartoon grasshopper?

adrianmonk|7 years ago

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.

Jemmeh|7 years ago

Exactly. And the thing with old computers is they were kind of limited in scope because of hardware limitations. That in itself kind of gave you an idea of where to start because there wasn't much else on there. OP even mentions basically being stuck with QBasic. Now there's an endless field of where you could possibly start at. It's so useful to have some guidance of where to start.

Imo it's also much faster. Yes I can trial and error figure out a way to fix my car, but why would I not use a manual?

taserian|7 years ago

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.

ryanisnan|7 years ago

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.

ashleyn|7 years ago

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.

everdev|7 years ago

QBASIC age 11, same here. Haven't stopped learning or loving it :)

kot-behemoth|7 years ago

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.

fragmede|7 years ago

The app does! Or at least, instead starting off with a `drawRectangle` function that takes a full set of x-y coordinates and 3 numbers for RGB for fill color, it starts off with "drawBox(red)" (remember, this is an introduction to programming) and builds from there.

Check out the user video someone else linked on this page!