> Sorry it's taken me this long to set up, but these models suggest a few ways one might attempt to make "casual programming" more attractive, by relaxing the normal constraints: > - give people a surplus of resources, so just about anything they create works[3] (the "flower arranging"/"spirograph" approach) > - give people resources that don't combine well, so they can build a few pretty things but not much else (the "modern lego kit" approach) > - in normal programming, choice is "demonic": one's program needs to avoid messing up for any situation the environment can throw at it; if one offered an "angelic" environment, which only offered situations in which the program as written could possibly succeed, the job is made much easier. (the "slow pitch softball" approach) > - a judicious selection of exercises and incremental test cases would aid the beginner by strongly hinting at the best next step (the "paint by numbers" approach) > - alternatively, someone who put a lot of effort into creating "commonly failing" test cases might couple them with explicit hints for probable fixes (the "programmed instruction" approach) > - instead of asking for complete programs, concentrate on "what is the next edit" puzzles (the "newspaper chess problem"/"shallow bug" approach) > - what else?
I've recently been trying to learn a foreign language using Duo Lingo. Based on mg experience there, I would also propose an algorithmic 'fill in the blank' kind of format for absolute beginners. First step could be 'pick the right verb'. Second step would be 'pick the right verb with the right singular/plural usage'. Third step would be 'pick the right verb with correct singular/plural usage and tense'. Basically an increasing level of difficulty with fill in the blank kind of problems. I feel that the real life language learning resources would map quite well to programming language learning. In complement with learning programming per se (as opposed to just the language), I think this kind of exercise would be attractive to me as a casual novice learner. -- Rajesh
