segunda-feira, 23 de junho de 2008

Como foi o projeto lá?

Acho que nesse momento dá para fazer uma reflexão e falar um pouco sobre como foi o projeto lá na Suécia. Esse post vai envolver alguns termos técnicos que são inevitáveis, mas tentarei ser o mais didático possível.

Minha missão ao ir para a Suécia era me envolver com a tecnologia IMS e iniciar um projeto numa fase de prova de conceito sendo o arquiteto da solução. Era um projeto bem interessante, com o objetivo de trazer depois parte desse desenvolvimento para o Brasil logo após três meses. Ou seja, eu iria para Estocolmo, trabalharia na prova de conceito e traria parte do desenvolvimento para o Brasil, tudo isso em três meses. E depois voltaria só esporadicamente para o Brasil.

Mas, no meio do caminho tinha uma pedra....

O gerente de lá, um indiano, tinha outros planos. Haveria um evento que englobaria a alta gerência da empresa em junho. E naquele momento, em abril, ele pensou: ao invés de fazer um projeto tendo a prova de conceito, e outras fases posteriores, porque não fazer um demo dessa aplicação?

Logo, envolvido pela idéia do demo, o projeto adquiriu outros rumos. Meu papel de arquiteto foi delegado a ser um papel mais observador ao invés de ativo no projeto. Isso significa que a equipe de desenvolvimento se viu obrigada a correr atrás de um desenvolvimento que fosse cabível para o demo, sem ter uma arquitetura a seguir - afinal, os requisitos funcionais e não-funcionais não foram levantados. Eu procurei fazer o possível para manter um certo nível arquitetural mas infelizmente o coordenador obrigava a equipe de desenvolvimento a fazer entregas num ritmo que não permitia ter uma arquitetura estável além de pouco treinamento que essa mesma equipe teve para fazer o projeto.

Me vi depois ajudando a equipe de desenvolvimento que tinha erros primários no uso de tecnologias como JDBC, scriptlets, Struts, dentre outros. E pouco podia fazer, porque sempre diziam que esse ritmo seria para o demo, e que tinha que consertar tudo on-the-fly mesmo.

Resumindo:
  • nao tinha cronograma. O gerente ou o coordenador lançavam uma idéia, a equipe de desenvolvimento formada majoritariamente por indianos tentava fazer essa idéia, trabalhando nos finais de semana e a noite. E o que acontecia quando a idéia era concluída? não tinha cronograma. O gerente ou o coordenador..........................
  • não tinha metodologia. Basicamente, como não se tinha planejamento, não se seguia também nenhuma metodologia de desenvolvimento como RUP, OpenUP ou metodologias ágeis. Resultado: não tinha cronograma.....
  • não tinha um software para controle de versão. A primeira coisa que eu pedi lá foi um software como o IBM Clearcase ou o SVN. Pode parecer brincadeira mas não é, mas em dois meses de desenvolvimento, não tivemos nenhum desses softwares. A versão correta era a que estava na máquina de um dos desenvolvedores... imagina o tempo fazendo integração de código.
  • não tinha requisitos. Como falei um pouco antes, o projeto era guiado por idéias (Idea Driven)... assim, a cada dia inventavam coisas. Num dia era fazer uma aplicação para imprimir cartões com tarja magnética, no outro dia era colocar uma webcam em funcionamento... Não quiseram fazer casos de uso ou outro documento similar para elencar os requisitos, e pior: requisitos não-funcionais foram sequer tocados. Bom, se não tinha requisitos, o que acontece? Não tinha cronograma.....
  • no começo o projeto visava a demonstrar novas possibilidades de desenvolvimento usando a infraestrutura do IMS. Ao invés de usar IMS para tudo, em dado momento do projeto, optou-se por usar comunicação pela rede de computadores ao invés de IMS para fazer mais rápido uma dada idéia que queriam implementar. Em outro, uma aplicação que era acessória ao produto e não era desenvolvida com IMS, ganhou ares maiores de importância, passando a ser um foco inesperado no desenvolvimento. Ou seja, o objetivo do projeto que era mostrar possibilidades de uso na rede IMS foi apenas parcialmente cumprido, porque o próprio IMS foi preterido ao longo do desenvolvimento por outras idéias ou funcionalidades.
Foi um projeto extremamente caótico no seu desenvolvimento. A equipe de desenvolvimento trabalhava várias horas por dia, incluindo o sábado e domingo, nesse projeto. E antes era só o demo para a tal reunião dos gerentes. Mas daí algumas semanas antes começou a se ter um demo semanal da aplicação, que obrigava a equipe de desenvolvimento a ficar ainda mais aterefada em concluir o projeto. Toda semana tinha pelo menos um demo para gerentes que queriam ver isso antes da tal reunião dos gerentes.

O resultado: o projeto pode ser considerado um sucesso??? Ele foi, no sentido em que o demo foi apresentado na reunião, e os gerentes de modo geral ficaram bastante impressionados com o produto. Mas foi um fracasso no tocante ao uso de tecnologia, ao seu objetivo inicial, ao desgate da equipe e falta de metodologia, processo e ferramentas, e em termos da qualidade do código escrito - um dos piores. É algo até difícil de explicar... para todos os efeitos o projeto foi um sucesso no evento, mas o que está lá dentro é irremediavelmente ruim.

Aqui no Brasil fazemos melhor. Ir até Estocolmo para pegar um projeto assim... Já reclamei de muitos projetos no Brasil, mas quando você se depara com coisas como essas, você começa a perceber que o nível de problemas de projetos bem gerenciados e projetos mau gerenciados é diferente. E que seguir um processo é extremamente importante, mesmo para soltar um protótipo de uma idéia.

Bom, vou ficando por aqui :)

Antes que eu me esqueça: IMS significa IP Multimedia Subsystems. Trata-se de uma nova geração de redes de telecom que irá facilitar a comunicação entre equipamentos diversos (telefone, tv, computador e outros) de uma maneira mais eficaz integrado com mecanismos conhecidos da internet. A troca de mensagens é através do formato SIP, ou seja: no IMS um componente da rede envia uma mensagem SIP para outro componente da rede. Uma mensagem SIP pode ser do tipo INVITE, BYE, CANCEL, por exemplo. Se um telefone quer falar com outro, o telefone A manda uma mensagem INVITE para o telefone B com os parâmetros necessários, e assim começa a ocorrer uma troca de mensagens entre eles.

Um comentário:

Anônimo disse...

Fala mergulhador, que aventura heim?? Eu cheio de coisa pra fazer e resolvi ler suas aventuras trabalhisticas pela europa. rsrs!

Pelo jeito vc tem feito mais aniversários que mergulhos? Vê se aparece.

forte abraço
Rafa