UPDATE: Programming Mentors has now been created. It’s a community where people support each other in learning programming.
The site is newly created, and hasn’t yet been promoted. Please come over and help build this new community.
This post is a reflection on and response to yesterday’s session “Learn & Teach: Programming for Beginners – I can haz codings>??!”
What’s the problem?
It can be hard to learn programing on your own. Whether you want to be able to solve a specific concrete problem, or whether you’re simply curious to understand the power and potential of programming, making a start can be difficult.
Often beginners approach this problem by choosing a language and attempting to learn it. But it can be hard to make a good choice – you don’t know what the different types of language are, or which of them could be useful for the sort of work you might be interested in doing. You might choose a language that is less approachable than others, or embark on a particular course of study that is unhelpful or even counter-productive.
As you try to make a start learning programming, there are lots of things that you don’t know. Worse still, there are lots of unknown unknowns. You’re a smart and driven person, but your ignorance in this new area is pretty total. You don’t know where your new knowledge could take you, and you don’t know how to interrogate your way through this unfamiliar realm. You’re in darkness, surrounded by a space of unknown size and dimensions, and you don’t know what questions to ask to begin shedding light.
This means that existing knowledge spaces and repositories aren’t always helpful. Extensive documentation for programming already exists, and communities like Stack Overflow drill down into most problems you’ll encounter. But they require a significant level of prior understanding. Finding the answer to a question online requires you to be able to formulate a query, and beginners often don’t know how to express the problem they’re having, let alone be able to articulate it in the phrasings that an experienced programmer would use. Even if a beginner does come across information on the topic they’re interested in, they might not be able to understand the answer when they get there. Or the problem they’re experiencing might be so trivial as to not be reflected anywhere online.
How might we improve the situation?
So how do we help people venture into programming as a new area of knowledge? I think that beginners need a mediator to help understand and clarify their goals, needs and aims, and to propose positive actions they can take to build their understanding and move towards their goals.
Does an online mentoring community for new programmers exist?
To my knowledge such a space doesn’t yet exist. There are “massive open online courses” teaching programming – eg Coursera’s CS101, Udacity’s CS101, or EdX’s CS50 – that have dedicated discussion spaces. These are helpful, as they give learners the opportunity to engage at their own level of understanding .
But these spaces can be noisy, large and impersonal. Open Study is another attempt to wrap a social element around courses, but there’s still a problem of the connections between people existing for the solving of a specific problem, rather than being closer or long-lasting. And there’s still the problem of formulating good questions, and of knowing which direction to take with one’s learning.
So I think that mentoring could be a great addition to open question and answer forums for learners.
What could an online mentoring hub for budding programmers look like?
We could create a community space designed to help new and potential programmers get on their feet. Here are some ideas about what the space could look like:
I would like to find out if this would be a useful community to try and build:
If you have any thoughts, or think this is a good idea, please leave a comment here. If this is a useful project to embark on, I’m ready to roll up my sleeves and get building.
]]>