Trial and error is always the best, but you need to get an idea of what you need to do in order to use trial and error. I would start out with tutorials, and maybe a textbook for reference.
All the methods you listed are great ways to learn. Each person learns differently than the other. The individual that is trying to learn needs to figure out which learning method is best suited for them, and they can figure that out with trial and error
with the methods you listed.