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.
Comments
- Anonymous
December 22, 2008
Olá Otávio, Entendi a proposta: por um lado, trabalhar as capacidades desejadas para o framework; por outro lado, tratar a usabilidade do framework, o quanto ele é aderente ao time de desenvolvedores. Creio que as duas frentes são importantes para o sucesso do projeto. Talvez a usabilidade até seja mais forte que a relação de capacidades finais implementadas. Já acompanhei equipes que tiveram uma boa visibilidade do framework, construído com uma boa abordagem e usabilidade, apesar do próprio framework ser modesto em suas capacidades, sem muito apelo de produtividade. Parece contraditório, mas pense em um framework que oferece recursos simples para construção de aplicações CRUD - Create, Read, Update, Delete. Com a evolução do framework, novas capacidades foram adicionadas como tratamento de erros, configuração, cache de dados, exportação de métricas de performance, etc. Veja se estamos falando de uma abordagem assim:
- Selecionar um conjunto mínimo de capacidades para o framework;
- Definir com o time de desenvolvedores o melhor método de publicação e integração do framework, garantindo a melhor usabilidade para a equipe (seja via templates, bibliotecas implementadas, wizards, guias de automação integrados ao IDE, etc);
- Implementar as capacidades e métodos de consumo do framework;
- Testar com a equipe de desenvolvimento a nova versão do framework;
- Selecionar um novo conjunto de capacidades para o framework;
- Ir para o passo 2; Com certeza, o processo de construção de um framework de desenvolvimento é vivo, contínuo. É o que ocorre com o .NET Framework e deve ocorrer com nossos frameworks domésticos também. No final de seu post você cita uma nova direção para o tema: a importância do mapa de investimentos, da justificativa do projeto sobre uma base financeira real. Estamos num novo momento que já é chamado de Nova Economia, onde redução de custos, otimização de investimentos e busca por novos mercados representam o foco nas empresas. Talvez a discussão sobre frameworks domésticos e maior produtividade nas equipes de desenvolvimento seja um assunto obrigatório nos próximos meses... Vamos aguardar!!! :) Abraço Grande. Waldemir
- Anonymous
December 23, 2008
Perfeito! Este é o espírito que tentei passar. Obrigado pela ajuda! Abraços, Otavio