Hacker News new | ask | show | jobs
by sambe 3504 days ago
I agree with the sentiment. Do note that people said exactly the same about mobile phones in Africa - shouldn't be a priority. The article you link wouldn't have been written had we said "no, first give them water and blankets". Maybe the benefits turn out to be surprising even in deprived areas?

As for web-based vs native, I can see it going either way. If connectivity is too unreliable and/or expensive then native will win. Many people in the developing world spend a lot of time with no credit on their phones.

The biggest problem I see with teaching people computing these days, which is only partly addressed by cheaper computing devices and IDEs, is the sheer number of tools and abstractions to learn. What order do you teach in? What if there's no teacher? Version control, testing, frameworks etc. are all great things, and a certain proportion of people will need to learn them at some point. For others it's overwhelming, and for most it at least hinders the teaching process. Too much "ignore this for now" can be demotivating and confusing. Yet, it's also not enough to start with just a BASIC prompt any more. People have now seen all the cool modern things you can do and want to do it themselves, so moving an X across the screen is not motivating either. I have found completely dedicated environments like https://scratch.mit.edu to be great for younger kids, but not sure how the rest of the learning curve should be shaped.

1 comments

> What order do you teach in?

Not the same for everyone... here's a weak attempt at answering:

Kids:

1. Visual 2D: https://scratch.mit.edu/

2. Visual 3D: https://minecraft.net/en/

3. Interacting with real world: https://www.lego.com/en-us/mindstorms

4. Machine learning (why? it's the future!): http://stats.stackexchange.com/questions/22504/what-can-one-...

Adults:

1. Take class(es) on using a computer or phone. Many don't have confidence for things we take for granted.

2. Online tutorials: http://javascript.info/ http://iwanttolearnruby.com/ https://wiki.python.org/moin/BeginnersGuide/Programmers https://netbeans.org/kb/articles/learn-java.html https://msdn.microsoft.com/en-us/library/aa288436(v=vs.71).a... or go to school.

3. Learn enough to contribute to an open source project.

4. Get a job coding or code at your existing job, if allowed. On the job experience is essential.

I think the gap between 1) and 2) for adults is gigantic, because of the issues I mentioned. I don't think you've really addressed the complexity of all the stuff surrounding programming.

I don't doubt there are long lists of links to starting programming, as there are for every conceivable subject (also "go to school" doesn't work for the disadvantaged/developing countries).

The point is keeping someone's enthusiasm alive and making good use of their time. In the "golden age" you would see, say, Space Invaders, and it would be within your ability (even as a teenager) to reproduce it, starting from the BASIC prompt and short manual that came with your computer. If you want someone to work efficiently now, on the things they want to work on (fun/visual/relevant to their life), they need to learn a lot more to get started. That's an improvement over the past in many ways, because it was simply not possible to work as efficiently then (e.g. no high-quality libraries, only basic line editing). In a way, people want more and can do more. But planning how to get there is harder.