Produtividade – Introdução

Durante toda minha carreira a busca da produtividade no desenvolvimento de software tem sido uma constante. Afinal, desenvolver software de qualidade em pouco tempo é o objetivo de todo desenvolvedor.

A busca pela produtividade começa lá na faculdade, quando aprendemos Orientação à Objeto. A promessa de reuso de classes cria a idéia de que a programação OO já é naturalmente mais produtiva. E conforme vamos evoluindo, passamos a conhecer frameworks, plataformas e até geradores de sistemas, todos com a promessa de ser o holly grail de produtividade. Some-se a isto a idéia de que processos podem ajudar no sentido de que tarefas simples possam ser executadas por pessoas inexperientes, todas contribuindo para fazer software bom e rápido, e temos o cenário atual da indústria de desenvolvimento de software.

Depois de alguns anos a gente começa a separar o joio do trigo e ver que esta questão é extremamente complexa, muito mais do que conseguimos perceber no início da nossa carreira. Tecnologia ajuda, mas de maneira nenhuma garante produtividade (muitas vezes, é o contrário). Processos idem, muitas vezes geram mais tempo perdido do que economizam. Esta série é sobre minha visão atual a respeito de produtividade, minha e da minha equipe. De maneira nenhuma acho que esta é uma receita universal que possa ser aplicada a qualquer time. Muito ao contrário, acho que cada time tem características e pontos fortes que serão mais expressivos com determinado conjunto de ferramentas e processos.

É importante notar que em todos os itens a minha visão é muito pragmática. Conhecer teoria é importante, mas ela evolui e conceitos de hoje podem não ser os de amanhã. Assim para eu usar algo, eu tenho que perceber um ganho imediato, nos desenvolvimentos sendo realizados. Usar tecnologias ou processos porque alguém diz que é legal ou pela promessa de um dia gerar algum ganho não é algo que eu faço. Mas, é claro que é muito importante estar atualizado. Por exemplo, esta semana estou adaptando a nossa infra-estrutura para usar um tipo de validação baseado em jQuery que me foi recomendada por um membro da equipe e que faz todo o sentido e vai gerar produtividade hoje.

Assim, em uma série de posts, vou descrever o que eu adoto como infra-estrutura para as aplicações desenvolvidas pela nossa equipe e minha opinião sobre a razão para usar e como estão sendo utilizadas. Ao final, um post sobre o nosso estágio atual e o que ainda estamos sentido falta.

Uma conclusão, no entanto, é clara para mim. O desenvolvimento de aplicações de médio ou grande porte é muito complexo – e não sei se um dia vai se tornar simples. Ser produtivo implica em utilizar uma série de tecnologias e conceitos que não são fáceis de aprender. Assim, não é possível ter gente inexperiente e ser produtivo ao mesmo tempo. Isto é assunto para um post específico também, mas adiantando, não acredito que haja, no desenvolvimento de sistemas, tarefas simples o suficiente para ocupar pessoas inexperientes por completo. No mínimo, uma grande supervisão é necessária, o que por si só já diminui a produtividade. Claro que treinar é necessário, mas hoje eu separo muito bem o trabalho de produção do de treinamento. Se há treinamento envolvido, a produtividade vai cair, sempre. Isto parece óbvio, mas foram muitos anos até que esta conclusão fosse assimilada.

O próximo post é sobre princípios gerais de produtividade que eu aplico.

, , , , ,

  1. Deixe um comentário

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: