It's impossible to write a Drupal module or fix bugs (issues) without some guidance. Some useful links for module development and issue handling are listed here.
Drupal project issues
The main guide towards issues, mainly bugs, feature requests tasks etc.
Drupal - Reviewing Patches
When the code to fix a bug is written it is first released as a patch for the community to review (issue status Needs Review ["CNR"]). The steps to go through are listed here.
Kristen.org - RTBC Cheat Sheet
A more concise list of steps to take when reviewing patches.
Drupal - Updating Drupal core manually
Manual for updating Drupal 9.
Drupal - Creating custom modules
Mainly a set of tutorials on Drupal module building. The main page refers to the latest edition of Drupal while links to module development for older supported versions are available.
Drupal - Developer documentation
If the information you need is not in the tutorials it's good to have a look at the developer documentation. It contains the API documentation and Coding Standards.
Drupal Core uses components of Symfony to create and show pages. Having a look into the Symfony documentation might be required if you want to adapt the rendering of pages, e.g. it has some clues on how to output a downloadable file rather than an html page to show.
Drupal - Automated testing
For writing tests in Drupal. That would be the proper way to check whether your code performs as expected.
Drupal testing depends on PHPUnit, check the manual for extra documentation.
OS Training - Howto create a subtheme of bartik in Drupal 8
Something to check, I suppose it also works for Drupal 9. As the default theme for this side Bartik making a subtheme would prevent having to redo modifications after updating core.