O desenvolvimento ideal seria…

17/08/2011 -

A cada dia surgem novas tecnologias, ideais, conceitos!
Saber, aprender e manter tudo o que se inventa é sempre complicado.
O ao meu ver o processo ideal de desenvolvimento seria:

  1. Pesquisa
  2. Implantação
  3. Manutenção

Vamos tomar como exemplo o caso: implantar um CDN (Content Delivary Network) para imagens em no site de um cliente feito em ASP.Net

Etapa 1) A ideia de “Pesquisa” é encontrar as novas tecnologias, estudar, fazer pequenos testes, assim baseado no caso de CDN, existem diversas empresas que prove serviços de armazenamento em nuvem, dá para usar Storage simples como o Nirvanix que tem toda uma API já em .Net desenvolvida, ou meus usa os Blob Windows Azure, ou serviços de Storage do Google App Engine (GAE).
Nesta primeira etapa tem que ser analisado vários itens como:

  • Custo beneficio
  • Velocidade de upload e download
  • Performance das API
  • Segurança
  • Backup
  • Simplicidade de suporte
  • Facilidade de utilização
  • Recursos extras que possam ser agregados futuramente
  • Migração ou Descontinuidade futura

Etapa 2) O processo de “Implantação” deve ser o máximo transparente para o usuário final. O ideal é que haja um segundo ambiente paralelo para testes, e este só venha a entrar em produção quando for tudo testado, homologado e aprovado pelo cliente.
Baseado no Case de CDN é ainda necessário um processo de migração que deverá ocorrer uma única vez no inicio da implantação, e apos os dados estarem migrados, torna-se difícil voltar atrás rapidamente podendo haver um grande manutenção

Etapa 3) A “Manutenção”, é o suporte diário que o sistema requer, e isto depende totalmente das etapas anteriores, ou seja se não foi feito um bom trabalho de pesquisa e implantação, vai sobrar tudo para a “Manutenção” fazer, o que geralmente ocorre na maioria dos projetos quando são subestimados.

Estas etapas ainda poderiam se estender em mais itens e sub-itens, e até formar um fluxograma, por exemplo:

  • Pesquisa
    • Busca por novidades
      • Comparação entre tecnologias encontradas
    • Aprender a usar a tecnologia pesquisada
    • Planejar a estratégia de Implantação
    • Documentar
    • Treinar outras pessoas
  • Implantação
    • Criar ambiente paralelo para implementar a nova tecnologia / recurso
    • Implementar conforme foi planejado na estratégia de pesquisa.
    • Testar muito.
    • Publicar no ambiente de produção
    • Quantificar e Qualificar o resultado final (foi bom?)
  • Manutenção
    • Ajustar possíveis falhas e bugs

Parece burocrático, chato e demorado o processo acima, mas tudo exige bom senso.
Implantar um link, banner, ou alterar alguns textos, não é necessário de nada.

Mas implantar uma nova versão de carrinho de compras, um CDN, migrar um ambiente, e outras coisas mais estruturais, ai sim é necessário de no mínimo estes itens que citei acima.

Sobrea a Equipe de desenvolvimento

O ideal também seria se houvesse pelo menos 2 pessoas em cada etapa, ou seja 6 programadores, e onde estes deveriam trabalhar em forma de rodizio para ninguém ficar estagnado. Dar suporte é irritante, criar é muito divertido, pesquisar é legal mais cansativo.

Imagina se cada Programador trabalhasse um mês em cada etapa, por exemplo, revisando e intercalando com outros, aprendendo, implantando, e dando suporte, por exemplo, dado o cenário de 6 programadores: A B C D E F, a cada mês, semana, quinzenal, a escala poderia ir rodando, desta forma todos aprendem, ensinam, criam :

1) Pesquisa 2)Implantação 3)Manutenção
A + B C + D E + F
F + A B + C D + E
E + F A + B C + D
D + E F + A B + C
C + D E + F A + B
B + C D + E F + A
A + B C + D E + F

O difícil é ter 6 programadores no mesmo nível, capazes de ter a mesma atribuição.

Também o custo  de ter uma equipe deste nível seria bem mais alto, afinal quem patrocina pesquisa, e suporte de qualidade ?