De acordo com minha experiência: como você não pode eliminar a dependência da biblioteca, você e sua equipe devem saber o suficiente para resolver o problema.
Como programadores, temos pouco tempo, então devemos escolher o que tem maior prioridade. O problema deve ser resolvido, o mais rápido e gentil possível. Somente esse motivo torna o "aprender tudo sobre as coisas" um tanto redundante.
O que eu quero adicionar aqui é "dependência". Como comunidade, todos somos dependentes dos outros. Nós apoiamos os Giants para construir nosso aplicativo: Java, .NET, API ... E confiamos nos Giants sobre seu trabalho; porque funciona para muitas pessoas. Se você tiver um problema sobre a estrutura ou API, há uma boa chance de que outras pessoas tenham enfrentado isso em algum lugar, e há uma solução / solução alternativa.
O único problema aqui: talvez, em algum lugar, em um critério restrito, os gigantes entrassem em colapso. Por exemplo, o flash não é suportado em alguns sistemas operacionais e há muitas coisas que não poderíamos fazer sem ele. Essa possibilidade é mais que zero, mas, neste caso, temos pequenas coisas que podemos fazer. Somente nesses casos, o conhecimento sobre "o que está por trás dos panos" se mostra útil, pois aponta onde o problema realmente está e pode criar uma grande solução alternativa; mas não sei se o tempo que investimos realmente vale a pena.
Para lidar com essa possibilidade, acho que há uma solução: porque a maioria dos programadores pode facilmente captar o "trabalho superficial" de uma biblioteca, e apenas às vezes precisamos de alguém que seja muito compreensivo: vamos dividir a equipe para fazer isso. Tentando fazer parte de uma equipe que cada um experimentou cerca de 1,2 bibliotecas / ferramentas úteis / "conjunto de habilidades" envolvidas : uma tem boa experiência com jQuery, outra especializada em banco de dados, ... Isso ajudará muito a minimizar riscos.