Eu costumo trabalhar mais com aplicativos da web e, embora eu esteja tentando ser geral, minha resposta pode não se aplicar à sua área de programação.
Eu também vou usar "framework" synonymical com "library".
Antes de implementar um framework, é preciso considerar algumas coisas, aqui estão alguns exemplos gerais.
# 1. O framework economizará tempo e esforço?
A resposta a esta questão é quase sempre sim . Frameworks tendem a ser construídos para resolver problemas específicos e resolvê-los muito bem. Por exemplo, frameworks como EntityFramework podem salvar você inteiramente da gravação de código SQL. O que pode ser fantástico se a sua equipe de programação não for fluente em SQL.
Estruturas são construídas para, a) adicionar uma interface amigável ao programador para componentes complexos ou b) adicionar abstração a componentes já conhecidos (ou estabelecidos).
O último (ou mesmo o primeiro em alguns casos) pode realmente entrar no caminho do desenvolvimento. Isso se aplica especialmente quando você ou sua equipe de programação vai implementar um novo framework, no qual eles nunca trabalharam antes.
Isso poderia desacelerar seu processo de desenvolvimento, o que poderia ser caro.
# 2 A escala da sua aplicação
Diz-se que "vale a pena fazer qualquer coisa que valha a pena" , mas geralmente não é esse o caso. Provavelmente, não há uma boa razão para implementar uma estrutura super dimensionada se o ponto de sua aplicação for imprimir "potato" .
Quando você está desenvolvendo um aplicativo (seja web, desktop, móvel ou qualquer outro tipo de aplicativo concebível) - se você acha que o tamanho do seu framework "anões" sua implementação (talvez futura) dele, então isso pode seja um grande sinal de alerta de que sua estrutura pode simplesmente inchar seu aplicativo. Uma boa anedota seria se você incluísse o jQuery, apenas para adicionar uma classe "carregada" ao seu body-tag quando o documento estivesse pronto. Fazer isso apenas com JavaScript nativo pode ser um pouco mais difícil , mas não incha seu aplicativo.
Por outro lado se um framework faz muito trabalho sujo no interior (ie frameworks de banco de dados), então pode ser viável implementá-lo, mesmo se você está apenas "parcialmente" usando o framework. Uma boa anedota seria não tentar construir seu próprio driver ADO.NET ou MongoDB, apenas porque você não precisa utilizar toda a biblioteca.
Às vezes, os frameworks vêm com código aberto (e com licenças 'do-que-você-quiser'). Isso abre uma nova possibilidade em que uma equipe de programação só pode optar por partes de uma estrutura.
Isso, finalmente, volta às questões # 1 e # 3.
# 3 Impacto.
Às vezes, implementar um framework pode impactar diretamente o usuário final.
Isso é especialmente verdadeiro para aplicativos da Web, pois ter grandes estruturas do lado do cliente pode afetar negativamente a experiência do usuário final. Os usuários com máquinas mais lentas podem ter uma renderização lenta, problemas de desempenho com o javascript ou problemas semelhantes causados por máquinas insignificantes. O usuário com conexões lentas pode ter um tempo de carregamento lento (pelo menos inicial).
Mesmo em outros aplicativos de tipos, os usuários finais podem ser afetados negativamente por suas dependências de aplicativos. As estruturas, pelo menos, sempre ocupam algum espaço em disco, e se você estiver desenvolvendo um aplicativo móvel (ou até mesmo um aplicativo de desktop), isso pode ser necessário para ser levado em consideração.
As estruturas do lado do servidor (ainda mais específicas da Web) provavelmente não afetarão seus usuários finais, mas afetarão sua infraestrutura . Algumas estruturas têm dependências elas mesmas que podem exigir que você reinicie seu servidor da Web, apenas o serviço ou o servidor por completo.
Algumas estruturas também podem ser muito pesadas em recursos.
Isso, claro, vincula os pontos 1 e 2.
É tudo apenas um grande "círculo de considerações", e não existe um método científico real para decidir se você deve implementar um framework ou não.
Corbin March resumiu muito bem:
The groups I've worked with all do the same thing - make a guess at
costs and benefits, choose the most productive route, and hope they're
right. It's not terribly scientific - one part intuition, three parts
experience, one part susceptibility to marketing, one part cunning,
and five parts rank opinion.
Também é importante não ser elitista . Frameworks são ferramentas que devem ser usadas. Eu conheço pessoas de ambos os extremos; de um lado você tem o cara que torna a vida muito difícil para si mesmo, do outro lado você tem o cara que constrói aplicações lentas e inchadas.
Todos os frameworks têm casos de uso, é apenas uma questão de implementá-los para os propósitos corretos.