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:
- The space will have a culture of generous, patient explanation, and a drive to empower individuals in their learning.
- It won’t replicate resources that exist elsewhere. It’s primarily a hub for interactions, signposting and curating good resources.
- It will be a space in which one-to-one mentorship can be carried out.
Mentors can help beginners frame their understanding, and point then in the direction of useful resources. A programming mentor is an adviser, an enabler, a clarifier. They don’t do the learning for the beginner; rather they direct the beginner to the learning, and make sure that they have the right tools for the hunt. They help the beginner set up the right mental models for their learning.
- It will give new programmers the opportunity to share their experience.
- It won’t be affiliated to any particular course or way of study. Rather, it will take an overview of the discipline of programming, and support people in the direction that suits them best.
- It will be a space for advertising in-person meetups. Mentors and mentees could meet up; groups could discuss common challenges, share and celebrate achievements, and learn collaboratively on small projects overseen by mentors.
I would like to find out if this would be a useful community to try and build:
- Does such a space already exist?
- Would such a community/platform be valuable?
- Would you like to help build this space?
- Would you like to join such a community, as a mentor or mentee?
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.