"Official" mentorship program

This recent post mentioned some things about OCaml advocacy and making the language more approachable to new users:

This reminded me of the years I actively participated in the F# community, especially one initiative that I thought was a great idea, the mentorship program:

This happened several times per year (3?) and lasted for 6 (or 8?) weeks each time. Details are a bit hazy, as I last participated in 2021. Mentors and mentees would get paired up based on interest, skill levels, and time zones. There was no specific curriculum, so it was up to each pair to decide what they wanted to work on and when/how to meet. I participated once as a mentee, which was really useful to go from intermediate to more advanced. After that, I mentored several beginners in the language at subsequent iterations. This event was coordinated by the F# Software Foundation, but the links all seem to 404 now :frowning:

Would people here be interested in trying to get something similar started for OCaml? Or is there already some effort I’m not aware of?

8 Likes

Many members of the community participate in Outreachy. See, e.g., invitations for the most recent round Outreachy Mentors Wanted

I would also be in support of a more informal or parallel program, in case that’s what you have in mind :). It’s nice idea!

3 Likes

Thanks, I was not aware of the Outreachy program.

I would also be in support of a more informal or parallel program, in case that’s what you have in mind :slight_smile:

Yes, that’s indeed what I had in mind. The F# one was VERY free form, as it was completely up to mentors and mentees what they wanted to do and how they wanted to go about it. For example, when I participated as a mentee, my mentor and I spent several sessions talking through the code in a major F# codebase, which was very informative for me. As a mentor, I answered questions, helped with whatever my mentee was working on, or worked through Exercism problems with them.

This was really a community event where everyone involved was a volunteer.

3 Likes

This would be nice.

I would like to be a mentor.

2 Likes

Thanks for mentioning Outreachy @shonfeder <3

With my OCaml-community-coordinator-for-Outreachy hat on, I thought I would add a few bits:

Outreachy internships are also pretty free form. The only caveat (usually, though we’re happy to make exceptions) is that your project exists before it is advertised as a possible internship. You can peruse OCaml Outreachy Internships for a sense of the breadth of possibilities here! That being said, some big projects, like the OCaml compiler, can be a little awkward given the different phases of an Outreachy project.

This sounds very similar to how Outreachy-style internships are run :))

I recognise Outreachy might not quite fit what you are imagining here (Outreachy is more structured and setup for “anyone from any background who faces underrepresentation, systemic bias, or discrimination in the technical industry where they are living”[1]), but if you have any questions or might be interested in mentoring in the future then do let me know!


  1. ↩︎

3 Likes

I am very new to OCAML and would be very interested in having a mentor. I am slowly working through solving tasks, but there are cases where I am doing bad imperative things or not using good convention

2 Likes

Thanks for the additional context. This does sound quite close in some areas and quite different in others:

your project exists before it is advertised as a possible internship

Correct me if I’m wrong, but this wouldn’t work for cases where the mentee is working on a project they want to get help on, or if they are just learning OCaml through e.g. AoC, Exercism, or LeetCode and want some help along the way, right?

None of this is meant to detract from Outreachy, thanks for offering this to the community and being involved in running it!

1 Like

This is exactly the type of situation I had in mind. Where are the tasks you’re solving coming from?

If you haven’t already, check out the MOOC and this book.

1 Like

Fantastic, thank you. I hadn’t seen the first course. Have looked at the book and have it saved. I am working though the Cornell Course.

I’m working on a pet project, a Bible browser / API. Its my default for new languages. It’s a nice task for exploring, because there’s a decent chunk of tasks to workshop. E.g. parsing the data (usually from text, xlsx, or xml), transforming, loading, database, web stack, etc. It gives me something a little more aspirational than a todo app. I am alternating between experiments in watching course materials, playing in utop, and building out features.

Progress is slow but steady, as I don’t have a done of time for the project, and I am spending a lot of time on the theory. Problems like… my code compiles, but I’m manually matching cases for every data type because I couldn’t get wildcards to compile properly. Or, I think I get lists, and I kind of get how to use them in utop or basic scripts, but I don’t quite grok how to manipulate them when the xlsx parser library is already outputting through an iterator. Packaging seems simple but I’ve gotten stuck on silly things a lot.

In other words, basic beginner stuff that could probably be answered by a skilled dev in a few minutes once a week or fortnight. I come from a mostly python webdev background, with some geospatial and some data engineering, and this is my first FP. I am loving it, but it is a little embarrassing how much it feels like learning to program for the first time.

I think this is a pretty common sentiment for many. One good thing about OCaml is that it doesn’t force you to use only FP concepts. There are perfectly acceptable imperative escape hatches, which can be useful while learning. You can always revisit a piece of code later and rewrite it in a more functional style.