E agora, qual tecnologia eu uso?
Para cada problema comum, existe um leque de tecnologias com abordagens diferentes de resolução. Como decidir entre uma tecnologia ou outra?
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 conhece-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 o por quê. Se esbarrar com uma limitação que atrapalhe seu projeto, pule para avaliação da próxima tecnologia.
Toda tecnologia possui limitações, e é mais importante conhece-las do que navegar no mar de vantagens que ela oferece.
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.
O conceito da tecnologia está alinhado com os conceitos que o seu projeto carrega?
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.







