In my experience (self taught and also CS major), the best way to get better at programming is to consistently adopt a few core habits: Read good code, read your own code (I often review the day’s commits before bed), and prioritize defensive programming above all else. If you do these things, you will naturally evolve into a better programmer as you gain more experience.
After replicating a bug, I usually follow a process that looks roughly like this. I try each step, and if it's not resolved by then, I move onto the next.
1) Examine git log to hopefully determine which commit introduced the bug, in order to narrow the search space
2) Set breakpoint when the bug becomes observable, attach debugger and identify root cause of bug.
3) Verify that any function calls to dependencies are correct according to documentation, and any conditionals are working as expected (double check logic too)
4) Try a bunch of google searches
5) Read dependency documentation more closely, and read its code on GitHub to understand how it works
6) Ask for help in an IRC channel if available
7) Re-evaluate priorities