quarta-feira, 25 de fevereiro de 2009

Escalando projetos com Scrum

Scrum é uma metodologia de gerenciamento ágil de projetos que vem ganhando popularidade nos últimos anos, utilizado principalmente em projetos de desenvolvimento de software, onde o grau de incerteza e variação de escopo tendem a ser altos.

Assim como a maioria dos métodos ágeis, Scrum funciona melhor com times relativamente pequenos, até 7 ou 8 integrantes. Isso se deve em grande parte ao fato de que a comunicação direta e constante é um dos fundamentos do método. Quando o time cresce acima desse limite – que como tudo no Scrum, é empírico – o esforço de comunicação começa a se tornar gradativamente maior, as informações tendem a fluir mais lentamente e começa a ser necessário empregar outros mecanismos para garantir que os stakeholders recebam as informações de que necessitam. Em resumo, a eficiência começa a cair gradativamente.

Considere ainda que, em diversos projetos, não é possivel ter todo o time compartilhando o mesmo ambiente físico. Em alguns casos, as equipe podem estar inclusive em países e fusos horários diferentes, o que dificulta ainda mais a comunicação e interação entre os integrantes da equipe.

Uma das soluções proposta por Ken Schwaber, um dos criadores do Scrum, em seu livro ‘Agile Project Management with Scrum’ (que recomendo fortemente) para aplicar Scrum em equipe maiores é o chamado ‘Scrum of Scrums’. Em resumo, significa quebrar o time em equipes menores, multi-disciplinares, evitando assim os ‘silos de competências’. Esses times menores, que estarão dentro do limite de integrantes recomendado, devem ser auto-suficiêntes, no sentido de serem capazes de entregar conjuntos completos de funcionalidade a cada Sprint.

Para sincronizar os esforços dos diversos times, os Scrum Masters de cada equipe devem se reunir no equivalente a ‘Daily Metting’ - participam apenas os representantes de cada time, e o Scrum Master Principal. Nessa reunião também se aplicam os mesmos principios da original: Os representantes de cada equipe dizem o que o foi realizado desde a reunião anterior, em que irão trabalhar até a próxima, e o que está impedindo-os de realizar seu trabalho ou obter o máximo desempenho. Para auxiliar as diversas equipes, é recomendado que exista a figura do Scrum Master central. Este herda as mesmas atribuições dos Scrum Masters no Scrum tradicional, mas seu compromisso é relativo ao conjunto dos times. Por exemplo, se diversas equipes reportam problemas com o ambiente de homologação, é seu papel conseguir (de alguma forma) que esse impedimento seja removido. As retrospectivas, que ocorrem no final de cada Sprint também devem ser realizadas de forma semelhante, com os representantes de cada time.

Para isso, algumas condicões devem ser observadas. Em especial, o projeto deve ser passível de ser divido em funcionalidades e essas distribuídas aos diversos times, o que nem sempre é simples. É preciso também criar uma arquitetura inicial, padrões e práticas claras de engenharia, de forma a evitar que o sistema se torne uma colcha de retalhos.

Em seu livro, Ken menciona algumas equipes que utilizaram, com sucesso, um ‘Sprint Zero’, onde especialistas (engenheiros seniores) foram responsáveis por criar uma arquitetura inicial, além de definir os padrões que seriam utilizados no restante do projeto. Nos Sprints seguintes, cada um dos diversos times que foram formados recebeu pelo menos um dos integrantes do ‘Sprint Zero’, que se tornou responsável por disseminar o conhecimento da arquitetura e garantir a aderência das novas funcionalidades desenvolvidas aos padrões e práticas de engenharia de software. Esses integrantes se tornaram a ponte para disseminar a visão comum do projeto entre os times.

Claro, coordenar os esforços de um conjunto de equipes tende a ser um desafio maior do que em times simples – e exigirá deles, Scrum Master e Product Owner as conhecidas adaptabilidade, flexibilidade e criatividade tão conhecidas no Scrum. Caberá ao time do projeto bolar soluções para os problemas que surgirem, não apenas nas questões técnicas mas também em aspectos como comunicação e integração, fatores críticos ao sucesso de qualquer projeto, e em especial para equipes geograficamente separadas. Soluções criativas como blogs, wikis, programas de mensagens instantâneas podem auxiliar bastante. Existem opções gratuitas para todas essas ferramentas. Pessoalmente, recomendo ainda que a reunião diária seja realizada utilizando uma ferramenta de video-conferência, ou no mínimo, com de um conference-call. Uma conversa de alguns minutos pode eliminar algumas dezenas de e-mails.

quarta-feira, 11 de fevereiro de 2009

Ruby on Rails no NetBeans 6.5

Para quem está dando os primeiros passos na plataforma Ruby on Rails e está a procura de um ambiente para desenvolvimento, uma boa opção pode ser o NetBeans. Popularmente conhecido como IDE Java, o programa em sua versão 6.5, possui suporte para essa linguagem que vêem se tornando conhecida pela rapidez e facilidade no desenvolvimento web. O usuário pode escolher entre baixar a versão específica para Ruby – cerca de 54 MB – ou a versão completa da plataforma, com cerca de 201 Mb, mas que inclui suporte também para PHP, C++, Java, além do próprio Ruby.

Baixar o programa simplifica bastante a configuração do ambiente. O IDE já vêem com um servidor web com suporte a Ruby. Também não é necessário instalar as ruby gems básicas (necessárias para suportar o Rails), elas já estão configuradas. O desenvolvedor pode ainda gerar a clássica aplicação Depot, usada como referencia para iniciantes na linguagem. Para quem está começando, recomendo a combinação Rails + MySQL. O banco é simples de instalar e em 10 minutos (downloads a parte) todo o seu ambiente está pronto para trabalhar.




O Netbeans é gratuito e pode ser baixado em:
http://www.netbeans.org/downloads/
Disponível para plataformas Windows (2000/XP/Vista), Linux, Mac e Solaris.

sábado, 7 de fevereiro de 2009

Um gadget para ampliar fatia de mercado do Google Docs

O Google faz mais um movimento para popularizar o uso de sua suite de ferramentas, o Google Docs.

Lançado recentemente, o Google Docs Gadget for the Desktop é um gadget que permite aos usuários encontrar e acessar seus arquivos armazenados on-line, a partir da área de trabalho. O programa possui versões para Linux e Windows.

O lançamento ocorre logo após pesquisa da ClickStream Technologies indicar que o OpenOffice é utilizado por 5% dos usuários, contra apenas 1% do Google Docs.

A liderança folgada ainda fica o Microsoft Office, com 51% do mercado.