As someone who likes to tinker with code and learn new things but finds it very difficult to actually bring a project to a level of polish where I feel happy announcing it to the world, I have found that sharing knowledge is an easy and effective way to contribute back to the commons. I've written a small number of blog posts sharing things I've learned during my tinkering, which other people appear to have found quite helpful.
I also think, in some ways, someone who has just learned something is very well placed to educate others about it. There are arguments against that of course - someone who has just taught themselves about a topic may not be aware of the pitfalls or may only know how to do things in a sub-optimal way. But on the other hand, that person still remembers what it was like to not know anything about the topic so I think they can better communicate the basics to others who still don't know anything about it.
I also think, in some ways, someone who has just learned something is very well placed to educate others about it. There are arguments against that of course - someone who has just taught themselves about a topic may not be aware of the pitfalls or may only know how to do things in a sub-optimal way. But on the other hand, that person still remembers what it was like to not know anything about the topic so I think they can better communicate the basics to others who still don't know anything about it.