Capacidades, Usabilidade e Retorno de Investimento

Poucos dias atrás o Waldemir me comentou que não achou muito clara a minha proposta de abordagem de framework neste blog. Vou tentar esclarecer aqui um pouco mais.

Fazer um framework é uma questão de “como conseguir o aumento da produtividade no desenvolvimento de aplicações?”. São dois os focos da minha proposta:

Capacidades: um framework visa disponibilizar capacidades verticais ou horizontais que facilitem a programação. Seja pelo uso de atributos, injections, classes ou outras técnicas, um framework visa diminuir o esforço para incluir certas capacidades em uma aplicação, como cachê, autenticação e outros num framework horizontal, ou taxas, conversões de moedas num framework financeiro;

Usabilidade: todo framework tem um programador como usuário final. Um framework deve facilitar a vida deste programador para que ele seja mais produtivo. Para tanto, ele deve ser simples, inteligível e resolver problemas complexos, caso contrário, o framework está fadado ao desuso.

Para quem conhece o MSF (Microsoft Solution Framework), estou aqui dando importância a dois papeis: o do product manager e o do user experience.

Neste caso, o product manager é o advogado do financiador do framework – normalmente o diretor de tecnologia ou o CIO. Ele(a) está interessado no aumento da produtividade e qualidade das aplicações a serem produzidas, e entende que isto pode ser feito através da oferta de certas capacidades ao programador final.

O papel do user experience, neste contexto, è o de advogado do programador que usará o framework final. Ele(a) sabe que a sua empresa tem uma política de contratação de desenvolvedores e que esta visa certa qualidade/preço de acordo com o mercado em que atua. Ele(a) sabe (ou pode testar) a complexidade que este desenvolvedor deve suportar e a documentação/ treinamento que ele(a) deve ter.

Portanto, o que tentei dizer anteriormente é que devemos levar estes dois fatores a sério e usá-los como princípio para o início de um framework. Caso contrário, teremos um investimento sem perspectiva de retorno.

E aí, uma outra questão: arquitetos deveriam levar a questão econômica em consideração e justificar um investimento como este em uma base financeira real. É difícil conseguir investimentos da empresa sem falar a língua ($) da alta direção.

Para os iniciantes, interessados nesta questão, eu sugiro dois livros: Agile Management for Software Engineering e Making the Software Business Case.