A community for mentoring new programmers

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.

Categories: Coding, Collaboration |

About Martin Lugton

Cambridge History graduate; currently working in charity digital communications and learning about digital technology.

38 Responses to A community for mentoring new programmers

  1. I am very interested in this. I have been struggling with trying to learn programming for more than a year (in my free time mostly), and I still feel that I am missing (almost) everything. I have a long list of websites that can partially do the work, but I think that very few are tailored for the need of humanities. It would be very nice to create a learning space for humanities programming (or coding) such as the one you are proposing. I am keen to contribute to that.

    • Thanks Giorgio 🙂 Let’s see if there are any other people who’d be interested!

      • Shaun says:

        Let me throw my lot into the mix.

        So here we are a bunch of interested, motivated people who have tried roughing it by ourselves and at the end of it felt that we need just a little push here and there to keep us on the right track and keep us moving. We’ve all probably googled something like ‘coding mentor’ and, after going through a lot of semi-helpful places, we ended up here.

        So, why not begin? We have someone willing to help, and we have a bunch of people willing to learn. We may be few, but so what? We can start, can’t we?

        Giorgio, Mary, Jason, London, Cjane and Martin…let’s pull together and get this done. I’m tired of being in the same place as year back and I wanna get it on and move forward. So come on!

        Martin, you’re the one who brought us here, so lead on. Do something about this.

        I’m gonna post this as individual replies to everyone, as well.

    • Shaun says:

      Let me throw my lot into the mix.

      So here we are a bunch of interested, motivated people who have tried roughing it by ourselves and at the end of it felt that we need just a little push here and there to keep us on the right track and keep us moving. We’ve all probably googled something like ‘coding mentor’ and, after going through a lot of semi-helpful places, we ended up here.

      So, why not begin? We have someone willing to help, and we have a bunch of people willing to learn. We may be few, but so what? We can start, can’t we?

      Giorgio, Mary, Jason, London, Cjane and Martin…let’s pull together and get this done. I’m tired of being in the same place as year back and I wanna get it on and move forward. So come on!

      Martin, you’re the one who brought us here, so lead on. Do something about this.

      I’m gonna post this as individual replies to everyone, as well.

  2. Marry says:

    Thankyou for sharing I am new at this and I wish to be a good programer and your post has just made me more strong then before. thanks for this boost…

    • Shaun says:

      Let me throw my lot into the mix.

      So here we are a bunch of interested, motivated people who have tried roughing it by ourselves and at the end of it felt that we need just a little push here and there to keep us on the right track and keep us moving. We’ve all probably googled something like ‘coding mentor’ and, after going through a lot of semi-helpful places, we ended up here.

      So, why not begin? We have someone willing to help, and we have a bunch of people willing to learn. We may be few, but so what? We can start, can’t we?

      Giorgio, Mary, Jason, London, Cjane and Martin…let’s pull together and get this done. I’m tired of being in the same place as year back and I wanna get it on and move forward. So come on!

      Martin, you’re the one who brought us here, so lead on. Do something about this.

      I’m gonna post this as individual replies to everyone, as well.

  3. Martin, I have been teaching myself programming for roughly one year now. I have taken a stab at it over the past decade though and have been an unsuccessful on every try. This is mainly due to the issues you have presented in your post. I have tried Udacity, Udemy, coursera, codecademy, team treehouse, lynda, code school and many more. It’s funny running into your post because I have recently thought of a really great idea for a website similar to what you are proposing. I have drawn a wireframe to show what the idea would entail. I feel as though the programming tutorials and schools available online are just not doing what it is we truly need to establish a real source of learning. I would love to discuss this further with you when you have some free time.

    • london2013 says:

      Yes! After that, it would probably be best to see if we could pull together a group of interested people.

      What’s the best way to be in touch?

    • Shaun says:

      Let me throw my lot into the mix.

      So here we are a bunch of interested, motivated people who have tried roughing it by ourselves and at the end of it felt that we need just a little push here and there to keep us on the right track and keep us moving. We’ve all probably googled something like ‘coding mentor’ and, after going through a lot of semi-helpful places, we ended up here.

      So, why not begin? We have someone willing to help, and we have a bunch of people willing to learn. We may be few, but so what? We can start, can’t we?

      Giorgio, Mary, Jason, London, Cjane and Martin…let’s pull together and get this done. I’m tired of being in the same place as year back and I wanna get it on and move forward. So come on!

      Martin, you’re the one who brought us here, so lead on. Do something about this.

      I’m gonna post this as individual replies to everyone, as well.

  4. cjane says:

    wow! yes this is the very first article that I have run across that really makes critical point regarding learning code. I have been trying for years to code and I feel its taking forever. I just feel like some of the online classes mentioned above miss vital critical part in learning and thats the “middle man” the mentor who can understand the problem and give one on one intervention. Years I have searched for places where I can meet other programmers like meetups, but I end up meeting people with the same problem. Beginners searching for experts. There is a huge need for this.

    • Shaun says:

      Let me throw my lot into the mix.

      So here we are a bunch of interested, motivated people who have tried roughing it by ourselves and at the end of it felt that we need just a little push here and there to keep us on the right track and keep us moving. We’ve all probably googled something like ‘coding mentor’ and, after going through a lot of semi-helpful places, we ended up here.

      So, why not begin? We have someone willing to help, and we have a bunch of people willing to learn. We may be few, but so what? We can start, can’t we?

      Giorgio, Mary, Jason, London, Cjane and Martin…let’s pull together and get this done. I’m tired of being in the same place as year back and I wanna get it on and move forward. So come on!

      Martin, you’re the one who brought us here, so lead on. Do something about this.

      I’m gonna post this as individual replies to everyone, as well.

  5. Shaun says:

    Let me throw my lot into the mix.

    So here we are a bunch of interested, motivated people who have tried roughing it by ourselves and at the end of it felt that we need just a little push here and there to keep us on the right track and keep us moving. We’ve all probably googled something like ‘coding mentor’ and, after going through a lot of semi-helpful places, we ended up here.

    So, why not begin? We have someone willing to help, and we have a bunch of people willing to learn. We may be few, but so what? We can start, can’t we?

    Giorgio, Mary, Jason, London, Cjane and Martin…let’s pull together and get this done. I’m tired of being in the same place as year back and I wanna get it on and move forward. So come on!

    Martin, you’re the one who brought us here, so lead on. Do something about this.

    I’m gonna post this as individual replies to everyone, as well.

  6. Martin Lugton says:

    Thanks for the nudge, Shaun.

    Let’s get this community started! We can start small and build it up from there.

    I think the first step is to get a rough idea of what we want to set up, and then build it using the simplest tools to hand. (Probably using WordPress, maybe making use of ‘commons in a box’).

    From there we can get interacting, and pulling in other people to the community.

    Jason has mentioned some wireframes he has, and I’ve got a few thoughts about what the site would need. Let’s arrange a time for an initial online hangout, and get some ideas thrown around.

    Let’s aim to get something up and running in July or August.

    Sound good?

    • Martin Lugton says:

      Shall we have a Google+ hangout on Sun 21, Sat 27, or Sun 28 July?

      I’ll come having had a think about what set up we’d need, and what we could implement quickly and simp;y. Should be very straightforward, but it would be good to think about the user experience and what would be helpful to everyone.

      • Shaun says:

        Any of those dates for a hangout sounds good to me. Though I’m in the GMT+5.5 timezone so if you could take that into account, it would be great.

        I’m also liking the idea of using Commons In A Box along with WordPress.

        Anyway, hoping everyone here jumps in again and we get this show on the road.

        Oh and I had a tiny bit success making something. Isn’t much, but is all I can do for now: http://www.openprocessing.org/sketch/103532

  7. hey everyone, its nice to see we are all getting motivated. In my last post a few months ago, you can see that I was talking about an idea I had to help us programmers learn more effectively. I’m in the same boat as all of you. I’ve been learning HTML / CSS for a while now. I’ve been building PSD to HTML websites for about 10 years but for the past year I’ve been really learning straight hand coding HTML / CSS responsive websites using frameworks like bootstrap, foundation, watching courses on lynda, team treehouse, doing the codecademy tutorials, etc.

    I think my HTML / CSS skills are better now, but obviously where I think we are all having trouble is REAL programming. In my case Ruby on Rails, PHP / MySql is what I have been teaching myself for about 6 months to 1 year. And like everyone, I keep hitting a wall. Here is my issue with programming in general:

    1. I see HOW things are done the way they are.
    2. I even understand WHAT the code does.
    3. I’m starting to understand the MVC framework and why it works well.
    4. I’m starting to get how front end & back end come together (but not well).
    5. Finally starting to barely play around with JavaScript / JQuery and understanding how to integrate it, but just by using the documentation. Not really creating it myself (which is what I’d like to do).

    Here’s my issue. I don’t understand WHY things work really. Or WHY things are done a certain way. Why do you modify this file? WHY does this code work the way it does? How do you decide how to build a function, or an algorithm.

    Here’s an amazing example for a website I would LOVE to build on my own, but can’t quite figure out how to get past the first few parts of it. Grabea.com (Grab an Idea) is a website idea I had about a year ago, it’s kind of like Twitter but it lets you post ideas you have (using hashtags & categories also), and let others search the ideas by category, and collaborate with you on those ideas. Once you have reached the number of collaborators you feel you need to create this idea, you can close the group and make it private so you can work on the idea as a team. This is kind of like a Pre-Kickstarter.

    Anyway, I was trying to build this in Ruby on Rails, but got stuck after creating the login, signup, profiles, feed. I get stuck because I don’t know how to build the collaboration system, or the unique friending system, because it’s not really friends, its temporary collaborators being added from the feed, not from a profile. It’s a little hard to explain like this, but I’m sure most of you get what I’m saying. I also don’t know how to build the private group area where teams can work on their ideas. I just don’t even know where to begin, and I feel like I never will, unless I have someone help me, and as you all know, that’s the hardest part about this, is finding a Mentor to help you get to where you need to be.

    Now, my last part of this long article (I Apologize), is the idea I had to help us programmers learn more effectively. I hope you guys like this, because I thought it out quite thoroughly a few months ago, and here is a flow chart to show how it would work:

    If that wasn’t self explanatory, here is how it would work:

    So you have an idea for a website or a mobile app. You post that idea on this website (learn2code.com or whatever). Members of learn2code can vote the ideas up or down based on if they think it’s a good idea or not (like stack overflow). Once the idea is voted up high enough the website will assign an instructor to it. And then the students that were interested in the class with a minimum of 10 can then pay up to $100 or more to take this class. At this point, the instructor will assign some prep work to the students in order to get them up to speed as to what they will be doing in this class so that they are not lost. The prep work can be to complete some lessons from websites like codecademy and the other free sites we have been using.

    Okay now the fun begins, when the course starts it will be a screen share using join.me or some other type of software where everybody can be on the same screen at the same time and have a chat window that everybody can see at the same time. When the instructor talks everybody hears it and when the instructor starts coding everybody can see it in real time as they explain every single detail of every single thing. If anybody has a question they can simply ask it and the instructor along with any assistants they may have can explain these things live during the course.

    Also during the class students can collaborate with the code and the instructor can say here you do this part while they watch and then if the students get stuck the instructor can ask why they tried to code that way and explain what they did wrong. Then the instructor can show the correct way to code it and explain why they did that way. And then of course the instructor can give us homework every single day after class that we have to complete and if we can’t do the homework, then also help us with the homework and explain to us how to get it right.

    I think in the end, this is the only way to truly learn how to program besides having a mentor in person. You would be learning with an instructor live and be explained every single detail of every single line of code so that you truly understand why and how things are being done.

    Oh, and the best part is that the website that you will be learning how to build is one of your own that you truly wanted to build. As opposed to team treehouse and a lot of these other websites where they teach you how to build a T-shirt company or some other crap website, that doesn’t help me when I want to build Grabea. The closest thing I could find was on team treehouse teaching me how to build a form of Facebook, but again I got stuck after I finished the course because it did not get me far enough. I can’t figure out how to modify the code enough to do what I want to do, that’s where an instructor would teach me how to do exactly what I need to do.

    I’d love to hear what everybody thinks about my post and my idea and I would love to start doing something with you guys I am ready whenever you are!

    • The image didn’t show up, so here is a link to it:

      Learn2Code image

      • Thanks Jason – interesting ideas.

        Conceptual guidance from someone more knowledgeable in the terrain is really important. This can help you form concepts and start thinking about challenges in the right way.

        Grab an Idea looks really interesting. I like the pre-kickstarter analogy, and it sounds like it could be a really fun and creative space. It might be one stage further than what some people might need when starting out with programming.

        I’m inclined towards getting a social space up and running, using existing platforms and systems, and then building up complexity from there.

        The main question on my mind at the moment is how best to set this up and how much would need to be formalised / baked in to the design from the start.

        I guess we won’t want to just make it question-based – that would just be replicating stack overflow.

        So how do we focus in on the relationship building? Could the site become a space where new knowledge is created and shared with and for new programmers, or would it just be a place for matches to be formed?

        Thinking about how to match people up, I guess we’d want:
        1) community-curated list of ‘getting started with programming’ for new starters, outlining some different areas for getting started.
        2) new people make an initial post about what they’re interested in learning, and what they know already (do we need to formally badge people as mentors or mentees? might be useful to distinguish between levels of expertise)
        3) people say their communication preferences (ideally people would be happy to share things on the forum, but people could work privately too). People would probably also want to say how they’d like to work with other people: roaming support to other mentor / mentees.

        One model that people might like would be to have monthly supervisions: an hour-long chat via video hangout with mentor and mentee. The mentee could send over their work in advance, for the mentor to look at, and the time could be spent going over what they’ve produced, what they learned, any problems they had along the way, then setting some objectives together for the next month. Different people will work differently, but that might be a helpful model for some people.

        How long would mentorship last? Would it be project based?

        I don’t think we need to stress about design too much – we can refine as we go as WordPress is easy to tinker with.

        Do we have a consensus on a meetup day? Is everyone GMT or GMT + 5? Or shall we just keep bouncing things around on here? Might be the easiest option.

        Do we need financial incentives or can we rely on people sharing through goodwill / for reputation / (for badges?!) I’d hope for the latter, but it does seem like there’d be a market for the former.

        There’s an overlap with MOOC (massive open online courses) and OER (open educational resources). MOOCs have been criticised for not being social or ‘connected’ enough (connectivist moocs excluded)
        A paragraph towards the end of this article got me thinking about how this space could be used to gather useful resources, signpost and mentor, and how these are all quite related

        http://www.elearning-africa.com/eLA_Newsportal/oers-and-moocs-old-wine-in-new-skins/

        “In doing this, we have the opportunity to overhaul resource use (especially the use of our human resources) and the nature of teacher-student interaction so that students can develop key attributes required for success in the knowledge society, including higher order thinking skills, lifelong learning habits and the ability to think critically, communicate and collaborate, as well as to access, evaluate and synthesise information. To do this, we should be harnessing OER and MOOCs to liberate the time of educators so that they can focus on providing more meaningful support to students.”

        • Shaun says:

          It’s true that there is a big market for mentoring, but not everyone would be able to afford a hundred bucks. We have to keep in mind that whatever we come up with has to be for the whole world, and in a lot of places a hundred bucks is just too much. So, should we deny those people the opportunity to learn and grow? Personally if I push a bit, I could come up with a hundred bucks, but I WOULD have to push. I can think of several circumstances in which someone has the will to learn, but not the resource to come up with a hundred bucks. It’s why they’re looking to the web in the first place.

          Instead how about Free and Premium services? In the Free model, mentees could forego the face-to-face video capability and instead just opt for forum or email communication.

          I like the idea of not defining mentors-mentees explicitly. Not everyone is good at everything and we need to leave people the option of both learning AND teaching.

          The primary goal needs to be for matching up mentors and mentees. There are Q & A sites out there, there are tutorial sites out there, and there are example sites out there. But I haven’t struck upon a site that definitively pairs up Mentors and Mentees. There are people out there who would be glad to help out others with their experience and knowledge and we know there are more than enough people eager to learn. We just need to bring these people together and then let them get on with it. It needn’t even be a single mentor-mentee pair. One mentor could take more than one mentee who are interested in the same field. That way one finds more than a mentee. One finds a code-buddy as well. More than often the mentees can solve problems simply by discussing things with each other and wouldn’t even have to take up the mentor’s time. Sometimes, all we really need is someone to just talk to about what we are doing(Rubber duck debugging).

          Bringing like-minded people together is the most important thing.

          I’m up for a meetup anytime between 6.30 PM Saturday – 6.30 PM Sunday GMT (for me, that works out to be midnight Saturday to midnight Sunday). Just let me know in advance what time-slot you prefer and I’ll be there.

  8. Elijah Lynn says:

    I think there is a big space for mentoring. I just came across https://learn.thoughtbot.com and noticed they have mentoring available. Then I came to search for other mentoring services since they mostly do Ruby/Rails stuff and I am in PHP/Drupal right now. But still, I would (probably will) pay the $100/month to chat with a mentor every two weeks. It will accelerate my career greatly to have a mentor I can ask silly questions to.

    It would be nice to have access to mentors in certain areas though. Like Ubuntu development for one and PHP/SQL for another.

    Anyways, big market I am willing to bet!

  9. Right, I’m ready to create a basic site and give this idea a test run.

    Can anyone suggest any improvements to the following plan?

    a) I’m going to get a domain and hosting, and install Commons in a Box.

    b) I’ll suggest that new community members post by answering the following:

    1) What I want to learn (feel free to be really vague here. we can help you think through what you’d like to learn or where to start finding out what you’re interested in)
    2) What my context is – what i know already; what I spend most of my time thinking about
    3) How I’d like to communicate – smaller check-ins, hangouts?
    4) How might I be able to help other people (this is probably better than a formal mentor / student divide, as different people have different things to share/learn at different times.)
    5) What i’m looking to help other people with (not necessarily the same as what you want to learn.)

    c) I reckon it would be useful to build up a wiki page – where more experienced members can start to tease out the questions that will help guide people towards their starting point. Lots of people might come to the site needing some pointers for getting started.

    d) Maybe instead of having a generic introductory thread, each new person could start a new thread to introduce themselves.
    Maybe this could be the site for them working out what they want to work on and meeting up with a mentor?
    Maybe project teams or groups could form. We’ll give people flexibility and see what they come up with.

    • Shaun says:

      I’m all up for it. I especially like the idea of project teams and groups. Who knows, things could escalate nicely and teams that got together primarily for a learning purpose could be churning out apps that make an impact out there.

      I don’t like the idea of people’s needs in coding to be too vague. Maybe that could be a different section altogether? Somewhere where they can take part on discussions with more experienced members and figure out what they really want to begin with. Once they’ve decided that, they could formally ask for a mentor.

      Apart from projects arising naturally within groups, how about site-wide projects that can undertaken by anyone? Parameters and standards could be provided and people could have a stab at it using different languages and framerworks. The end result being the same, it would be interesting to see what sort of approach each person(or group) took and how it is better or worse than anyone else’s. The best entry from each such prompt could be awarded(something in the form of honor points) and the coder asked to write a formal article detailing how s/he went about implementing the project, so everyone else can learn from it. There could be several levels of difficulty or the projects so people who are just getting their feet set and aren’t extremely advanced can also have a stab at coding.

      One of the things I personally find difficult while learning to code is that without a formal project to work on, I don;t know what to do. Learning the syntax is all very well, but unless you do hands-on coding, the thing doesn’t really seep in. Having a well-laid out project to work on, really helps.

      That’s by two pesos worth.

      Eagerly waiting for the site to be up.

  10. I’m getting started on the site today.

    http://www.programmingmentors.com/

    So far I’ve set up a domain, got WordPress installed, and am now working on some basic setup.

    I’d like the front page to be clean and inviting, so I’ve been de-cluttering it.

    I reckon we want to have a quick mission statement, and then devote the rest of the home page to a latest activity feed.

    • Shaun says:

      Great to see this is beginning to move forward. Really excited here. I wonder where everyone else is.

  11. Great looking forward to working with everyone on this!

  12. Trying to get registration set up at the moment – doesn’t seem to be firing correctly.

  13. Guys, TechCrunch just wrote an article entitled “Codementor Is An Open Marketplace That Provides Developers With One-On-One Programming Help” for a website called CodeMentor.io and it does what we have been asking for, it’s amazing. As it states on the website:

    Get Mentors On-Demand – Codementor connects you with experienced mentors for instant help via screen sharing, video, and text chat.

    Solve Urgent Issues – Get instant help from experts for topics including Ruby, Python, PHP, JavaScript, CSS/HTML, iOS, and more.

    Build Projects Faster – Codementor helps you overcome key challenges with timely advice and speeds up your development process.

    Sure it’s not free, but it certainly solves some of the problems we have been talking about. I signed up for the Beta, and am looking forward to working with Mentors. Let me know what you guys think overall!

    • Thanks for sharing, Jason. I’ve come across a few paid mentoring communities before, so I’ll be interested to see how this one works out. Let us know how you get on with the beta 🙂

Comments are closed.