Todo projeto de software possui necessidades comuns, que resolvemos aplicando alguma tecnologia, tais como: ORMs, Containers de IoC, Frameworks web, etc. Para cada problema comum, existe um leque de tecnologias com abordagens diferentes de resolução, o que nos leva à seguinte questão: como decidir entre uma tecnologia ou outra?
Muitas pessoas sentem dificuldade na hora de decidir, dentre todas as tecnologias atuais, qual é a mais indicada para resolver o seu problema. O que é normal, afinal, algumas tecnologias são tão parecidas que só pesquisando a fundo é possível compreender suas distinções.
O problema é que nem sempre há tempo para pesquisar profundamente uma tecnologia e levantar toda a informação necessária para tomar uma decisão; então, costumo usar um processo de eliminação simples: avaliação de limitações e alinhamento de conceitos.
Toda tecnologia possui limitações, e é mais importante conhecê-las do que navegar no mar de vantagens que ela oferece. Ao invés de avaliar o que uma tecnologia faz, busque quem teve problemas com ela, em quais cenários ela não atendeu e porquê. Se esbarrar com uma limitação que atrapalhe seu projeto, pule para avaliação da próxima tecnologia.
Na página do Entity Framework, por exemplo, você encontra várias características legais que vendem bem a tecnologia, porém, a mesma tem uma performance horrível no banco de dados Oracle, o que exclui a ferramenta desse cenário, independente do quão legal ela seja.
Depois de eliminar tecnologias avaliando suas limitações, busco um alinhamento de conceitos. Uma tecnologia usa um conceito para resolver o problema, conceito esse que o time que criou a tecnologia julgava ser o correto. A questão é: o conceito da tecnologia está alinhado com os conceitos que o seu projeto irá carregar?
Um conceito que geralmente trabalho é que classes de negócio não devem carregar tecnologia. O XPO, da DevXpress, por exemplo, trata a persistência dos objetos com uma classe base nas classes de negócio, já o NHibernate utiliza de estratégias de mapeamento separadas das classes de negócio. Conceitualmente, é o NHibernate que está alinhado com o projeto.
Esse método simples de avaliação é indicado apenas para auxiliar na tomada de decisão quando não há informações suficientes sobre as tecnologias em questão. É recomendável investir tempo de pesquisa e estudo para as tecnologias eleitas pelo método, de preferência, com provas de conceito.
Outra prática eficaz é realizar pesquisas quando não há necessidade direta. Pesquisar por pesquisar. Quanto mais tecnologias você conhecer profundamente, mais bagagem tratá para as suas decisões. Reserve um tempo específico para aumentar o seu cinto de utilidades ou apenas melhorar sua expertise nele.