For some of my work with data collection and data analysis, I do a bit of coding. I have had no formal training at this, but I enjoy it very much. My programming language of choice is Python. I have also found some of the text analysis packages for R to be very useful. A good way to get started is to get Anaconda, which is an open data science platform including both Python and R, alongside many of the most popular packages for those languages. You can download it here, and it has lots of tutorials.
I share some of the things that I code, as well as notes and tutorials for the code of others, on GitHub, which is an online place to host, share, edit, comment, and collaborate on coding projects. My philosophy is to share even scripts and tools that are really basic, both as notes to myself if I want to do similar stuff again, and because there is always the chance that it may help someone else.
For creating, documenting, and sharing code, I have increasingly started to use Jupyter Notebooks. These are a form of interactive documents that allow for extensive commenting and explanations, and for snippets of code to be run within the notebooks themselves.