Na minha humilde opinião, você descobre quando você necessita, quando você utiliza e com experiência. Explico melhor:
- Necessita: Quando você está trabalhando em um projeto e precisa fazer uma feature nova mas o nativo não suporta, aí você pesquisa e descobre novas libs, novas ferramentas, novas APIs, etc.
- Utiliza: Quando você está trabalhando em uma empresa e no projeto tem uma lib, uma API, ou algo do tipo que não conhecia.
- Experiência: Você vai iniciar um projeto novo ou uma feature nova e sabe que vai ter que utilizar uma lib ou uma API, logo se lembra de quando trabalhou em um projeto uma vez que utilizava uma lib que atende ao que precisa.
Apesar de tudo isso, a base do conhecimento sempre vai ser a pesquisa.