Try to understand and study paradigms first.
Technologies follow paradigms, such as object orientation, events, sequencing, and so on. The important thing is you understand what you are writing, know how to plan and design before writing or worse, copy something you could have done better. The main characteristic of a good developer is to understand the problem and have the solution before writing anything.
In this way, I understand that you should start with introductory courses in Object Guidance, Design Patterns and Programming Logic. This is enough to start and then apply to any language, Java, Groovy, Python, C #, and so on.
After this you will be able to guide yourself in a much more objective way, the path of the stones will become more useful.