I had several people show up to help on C++! That was a great experience and I decided to put together this post to help anyone else wants to join in too.
The aim here is to help onboarding and reduce friction.
How can I help?
Firstly, regarding contributing to the syllabus, I’ve found that this area can be quite hard work for everyone.
It’s worth understanding that I’ve not been vocal about the plans for the syllabus. It is quite a lot of work and I haven’t had the time to write a public update yet. Maybe this post can help people who want to invest time into building the track.
Some contributors went ahead and submitted a complete concept text. That’s a lot of helpful work, but sometimes it’s overlapped with ideas that are already out there. I’ve found that sometime the time I need to implement a “foreign” concept idea into the structure I had planned can take more of my time than writing the text from scratch.
I am grateful for all the support from the community to extend the track, but I’d like to ask people to chat about work they’re wanting to do on the syllabus before jumping in, so that we can all get aligned
If you have never committed to an open-source project
Don’t start out too big. If you see something that can be improved, please get in contact. The Discord server and the forums are perfect for this. You can talk about your ideas and get help on getting started. Be it fixing typos or building an analyzer. Don’t invest too much time before you go public, because someone might have done initial work for the exact thing that you can build upon.
If you are a seasoned C++ dev
Please do the exercises and the tree and give feedback on your journey! Especially if you have looked into things like the test files and the architecture and have found room for improvements. Many things have been implemented for a reason, so don’t feel discouraged if your ideas are not picked up instantly. We will try to explain the reasoning. It might be an Exercism strategy, a server cost factor, or because changing things is a lot of work.
If you don’t know where to start
A great place to start is the Practice Exercises. Maybe you have done some Practice Exercise that was a lot of fun on another track? It might be helpful for C++ students to solve that one. Even better when it teaches something that other existing exercises don’t have. Over 70 Practice Exercises have not been implemented yet, so there is a lot to do, and this tends to be more “quick win” style work!
If you really want to work on the syllabus
I don’t want to block anyone from helping, I am very happy to share the load, but contributing to the syllabus is often a lot more work than people might initially think. Every concept node in the tree is there for a reason. Sometimes the C++ mechanics build naturally upon one another, sometimes it is difficult to make interesting exercises without teaching other concepts first. There are also quite a lot of concept exercises on other tracks, that have proven to be useful to students. Often the inclusion of these sets a certain structure in the tree.
For example, imagine there is a some C++ mechanic that is important to know, like for-each loops. These are strange to teach without containers and difficult to understand without iterators. It would be nice to know constness and references to really use them. Also, function overloading and overriding to write custom iterators. That might call for pointers in the end. Just writing some text on constness is cool, but it has to fit into the big puzzle. Writing all connected concept exercises into fun little compounds is the other part of that small initial text.
As you can see, there are a lot of things that might seem easy to improve have not been implemented for a good reason. So before you commit a ton of work, please get in contact!
Finally, if you’d like to help, please don’t feel discouraged by this wall of text. I am really happy if the track can grow with your help, and look forward to helping understand where you can get involved!