Motivating people to start and keep learning Python
Earlier in the summit, it was mentioned that they could always divide their students up in to 20% who will succeed if you don't get in their way, 20% who will fail no matter what, and 60% who will either fail or succeed depending on your efforts. The top 20% are folks who are so passionate about their area of interest that they can jump over any hurdles in their way. These are your hackers and makers, who will probably succeed no matter what.
I'm concerned about the middle 60% who are interested in programming, but need some additional fuel for their interest, either due to a lack of confidence, being scared, not realizing that their problems are in scope for their programming skills, being intimidated or turned off by programming communities, or not having the skills to seek out problems on their own.
In traditional academic tracks, there is the extrinsic motivation of passing classes and getting a piece of paper which can motivate some folks to learn something that they otherwise would not. Without that stick, in environments like free classes or user groups, folks are often only left with just intrinsic motivation.
How can these folks be brought to the point that they can transform their initial interest into successfully solving real problems in these sorts of environments?
Is this just a question of confidence building and mentorship? What strategies can be used to keep this set of folks engaged? Does anybody have success stories to share?
Transcribed suggestions from awesome table discussions
Keep it fun. People who are having fun are always more engaged.
Encourage everyone to know what their goal is (getting a job, solving a particular problem, building a particular thing) and remind them of that to keep their intrinsic motivation up.
Encourage folks to work on what they are interested in. One person's success story with keeping high engagement and high collaboration in a classroom centered around making it an open-ended project class where students had the agency to pursue their own interests and more importantly were free to "fail" (in the sense of programming) while still being assured of "passing" (in the sense of grades). That freedom created high engagement.
Pair programming was mentioned by several people as a good way to keep people engaged. In particular, being deliberate about the people that are paired. Pairing two people of the same ability together allows people to feel safe in not knowing the answers; if both don't know the answer, then maybe it's a good question! Pairing two people of different abilities lets them push each other in interesting ways. Doing this and being explicit about one of them being the "expert" enables that expert to have an excuse to be more open about sharing knowledge. In general, collaboration was seen as a good way to keep engagement high.
Creating external structures to keep people engaged in learning outside of the "official" learning environment of the classroom or workshop were suggested as being critical. One suggestion was to have a StackOverflow-style or Piazza forum for homework, where students could both feel comfortable asking questions and also in sharing their knowledge with others. Also, encouraging friendship and having social reinforcement for attending classes or user groups was seen as extremely valuable.
Along those same lines, mentorship is important. A number of folks suggested that user groups could be a good source of mentors. The Code Mentors Boston meetup was suggested as a practical solution in this vein.
Many programmers are introverts and it's important to respect that some people will do better with 1 on 1 time rather than a group with 15 people hacking away on laptops. Trying to address the social needs of different students might help them stay engaged.
Open source was also seen as an opportunity to get people more engaged. In particular, http://learnprogramming.github.com/ has some good structure to get keep people engaged and has a mentorship and social structure built in.