25 de Fevereiro de 2009

O Analista Desenvolvedor “Rambo”

Arquivado sob: Gerência de Projetos — marco @ 16:39

John Rambo é um veterano do exército americano. Inicialmente ignorado pela corporação, ele é sempre chamado para resolver situações fora de contorle. Com uma faca na mão e uma metralhadora na outra, ele mata facilmente todos os inimigos e volta com a missão cumprida para casa. No cinema, pelo menos, é assim.

João Nerd é um veterano Brasileiro em projetos de desenvolvimento de software. Os seus conselhos técnicos são ignorados pela gerência de projeto no começo do projeto. Quando o projeto foge ao controle, entretanto, ele é chamado. Com uma IDE na mão e a especificação de requisitos na outra, ele deve resolver todos os erros complexos, reorganizar a arquitetura interna do sistema, desenvolver os casos de uso atrasados, trabalhar como bombeiro, estar presente nos finais de semana e salvar o projeto. Na vida real de TI, infelizmente, é assim.

Nas empresas de TI, por incrível que pareça, vemos gerentes que tratam seus analistas desenvolvedores como hérois do cinema. Eles os chamam de “Guerreiros” e deles esperam atitudes heróicas para salvar projetos em crises. Exemplos de atitudes heróicas incluem:

  • Execução sem planejamento. “Faça de qualquer jeito. Se não funcionar, jogamos o código fora e pensamos em outra forma de resolve o problema.”.
  • Internalização dos problemas. Por falta de gestão de riscos e medo de negociar com os clientes, gerentes internalizam os problemas e os deixam a mercê da equipe técnica.
  • Horas extras voluntárias.
  • Horas extras não pagas. Também conhecidas como “horas bestas”.

O anti-padrão “Heroics” é catalogado como um dos “Classic Mistakes” (Erros Clássicos) no excelente livro Rapid Development”, de Steve McConnell. Em sua análise, McConnell destaca que este padrão é muitas vezes provocado pela atitude gerencial “Pode Fazer”, ao invés da atitude correta “Meça consistente o progresso da equipe através de relatórios de status”. Ao enfatizar demasiadamente a atitude “Pode fazer”, grandes problemas são mascarados até que se tornem desastres. Gerentes perdem, portanto, uma valiosa oportunidade de tomar ações corretivas nas fases iniciais de projeto devido à ênfase em heróismo das equipes de TI.

Outros erros clássicos de TI são enumerados no site de Steve McConneli. O livro citado acima e cuja imagem está abaixo traz excelentes dicas de como evitá-los e bater cronogramas complexos de projetos. Leitura indispensável para líderes técnicos e gerentes de projeto.

Rapid Development

7 de Fevereiro de 2009

Baleias Azuis e Krills, Software como Serviço e Computação nas Nuvens

Arquivado sob: Outros — marco @ 10:52

Em uma parceria do PANGEA com os .NET Raptors, fizemos ontem uma apresentação sobre computação nas nuvens. Nela discutimos os conceitos básicos de software como serviços, computação nas nuvens e uma rápida visão geral do Microsoft Azure.

Para os interessados no tema, a apresentação está disponível aqui. Boas arquiteturas e bons softwares como serviiços!

3 de Fevereiro de 2009

Estruturando Trabalhos Científicos: Monografias e Trabalhos de Conclusão de Curso - Parte 02

Arquivado sob: Outros — marco @ 19:27

Escrevemos recentemente um pequeno blog sobre fundamentos de trabalhos científicos. Nele investigamos as questões fundamentais na metodologia científica, que inclui um problema, uma hipótese de resolução deste problema e uma metodologia que conduza à`confirmação desta hipótese.

Investigaremos agora alguns tipos de pesquisa que podem ser utilizadas para estruturar um trabalho científico, enquanto apoio na metodologia do trabalho. Trabalhos e monografias de fim de curso são cenários comuns para o uso de pesquisa aplicada, que consiste na utilização do conhecimento da pesquisa básica e da tecnologia para se obter aplicações práticas como produtos ou processos.

Nintendo Wii - Exemplo de Pesquisa Aplicada

Um exemplo mais sofisticado de pesquisa aplicada (na indústria de computação) é o uso de acelerômetros (dispositivos físicos que captam a aceleração de um corpo) para produzir consoles de jogos que detectam os movimentos físicos de jogadores (ex: Nintendo Wii) ou telefones que redimensionam automaticamente uma foto (paisagem ou retrato) a partir do movimento realizado pelo usuário (ex: iPhone).

Nintendo Wii
Console Remoto do Wii

Estruturando sua Metodologia - Os Objetivos e os Procedimentos da Pesquisa Aplicada

Dentro da estruturação de uma metodologia, precisamos pensar nos seguintes aspectos de uma pesquisa aplicada:

  1. Objetivos. (Os principais são a pesquisa exploratória, descritiva ou explicativa)
  2. Procedimentos (Os principais são a pesquisa experimental, operacional e estudos de caso)

Para exemplificar, usaremos um cenário simulado de uma fábrica de software e como estes tipos de pesquisa (quanto aos objetivos e procedimentos) poderiam ser úteis dentro deste contexto.

A pesquisa exploratória tem por objetivo descobrir fenômenos ou problemas não explicados em um determinado contexto ou evidenciar aspectos que ainda não aceitos. Por exemplo, uma pesquisa exploratória dentro de uma fábrica de software poderia investigar e descobrir fatores inesperados ou inéditos que contribuem para a produtividade no desenvolvimento de softwares como por exemplo a “motivação de funcionários” ou “horários fléxíveis”.

O objeto da pesquisa descritiva é observar, registrar e analisar os fenômenos ou processos através da observação e estudos de casos. Um exemplo dentro de uma fábrica de software poderia por exemplo analisar o efeito da pressão de tempo em projetos sobre a densidade de defeitos em um produto sendo construído.

Finalmente, o objeto da pesquisa explicativa, que requer mais investimento em síntese e teoria, é explicar o “porque das coisas”. Por exemplo, uma pesquisa explicativa poderia explicar porque a motivação de pessoas influi na produtividade ou porque a pressão de tempo em projetos gera mais defeitos. Como notado pelo leitor, é um objetivo mais avançado de pesquisa.

A outra dimensão da pesquisa é quanto aos seus procedimentos, ou técnicas para a realização.

A pesquisa experimental envolve a realização de um conjunto de experimentos em um ambiente controlado e com extremo rigor na manipulação de variáveis para explicar ou descrever os fenômenos sob análise. Por exemplo, uma pesquisa experimental poderia ajudar a resolver problemas de desempenho em um servidor através da manipulação de variáveis como número de usuários simultâneos, páginas sob análise, memória e CPU utilizadas por componentes do servidor (servidor Web, servidor de aplicação, servidor de banco de dados).

A pesquisa operacional envolve a investigação sistemática dos processos envolvidos na realização de uma atividade produtiva. Por exemplo, em um fábrica de software, como poderíamos otimizar a capacidade produtiva para atender manutenções de um determinado cliente com uma demanda média de 20000 PF/mês. Este tipo de pesquisa poderia permitir montar a melhor (sob aspectos de otimização de objetivos) combinação de insumos e pessoas para este trabalho.

O procedimento do estudo de caso é uma técnica reducionista, que tenta explicar um fênomeno dentro de um contexto local e simplificado de análise. Por exemplo, um estudo de caso poderia explicar se uma nova ferramenta de desenvolvimento poderia gerar ganhos de produtividade dentro de uma fábrica de software através da comparação de dois projetos controlados, um com o uso da ferramenta e outro sem o uso desta ferramenta.

Ao montar a metodologia do seu trabalho, então, pense nestas duas perguntas:
- Qual o objetivo da minha pesquisa?
- Quais os procedimentos que irei usar na minha pesquisa?

Responder estas perguntas o ajudarão a conduzir o seu trabalho e montar o seu texto.

Blog do Marco Mendes | Artigos, Comentários e Opiniões sobre Engenharia de Software, Arquitetura de Software, SOA e Java