Archive for March, 2009
Trabalho em equipe
Um dos princípios que dão força ao movimento agile é o conceito de colaboração.
colaborar
co.la.bo.rar
(lat collaborare) vti 1 Trabalhar em comum com outrem na mesma obra. 2 Concorrer, cooperar para a realização de qualquer coisa.
E para o seu negócio, o que significa colaboração?
Acredito que trabalho em equipe se enquadra perfeitamente na idéia de colaboração.
Mas trabalhar em equipe não significa colocar um grupo de pessoas em um mesmo ambiente para trabalhar em algo em comum.
Trabalhar junto não significa trabalhar em equipe.
Algumas vezes imagens podem dizer mais do que palavras…

Planejamento

Execução

Conquista
Certified Scrum Master
Concluí nesta sexta-feira o curso CSM (Certified Scrum Master), do qual participaram alguns colegas do grupo .Net Architects, entre outras pessoas.
Comecei a olhar para o Scrum há pouco tempo, mas o suficiente para conquistar o meu interesse.
Ministrado na Caelum pelo Alexandre Magno da Adaptworks, presenciei no curso uma experiência fantástica.
Passo a considerar o treinamento obrigatório para aqueles que realmente apostam na filosofia que está por trás de Scrum, mas ainda não puderam marcar presença.
Digo filosofia pois Scrum não é apenas pregar post-its numa parede, fazer reuniões diárias e coisas do tipo. Existem diversos valores e princípios que dão profundidade às práticas recomendadas pelo Scrum.
E foi na transmissão destes valores que enxerguei uma qualidade incrível no treinamento de CSM.
Parabéns ao Alexandre por enfatizar a todos que optar por Scrum não é algo fácil, embora aparente para algumas pessoas. Demonstrou ainda muita capacidade e também paciência, lidando com a angústia daqueles membros da turma que precisavam de alguma maneira traçar um paralelo entre a realidade de suas experiências anteriores e a realidade que o Scrum se propõe a trazer, dentro do cenário de projetos de software.
Já ouvi críticas ao processo de certificação da Scrum Alliance, mas tenho certeza que os autores destas não se deram o trabalho de estudar o assunto, muito menos tentar assimilar motivações coerentes que possam existir por trás desta organização.
Como mencionado pelo Alexandre, o certificado CSM apenas atesta que o profissional frequentou um curso preparado pela Scrum Alliance e ministrado por uma pessoa habilitada, e que consequentemente o profissional recebe da organização a confiança para INICIAR os seus trabalhos como Scrum Master.
O que não significa que esta pessoa já passou por todos os processos necessários para atuar como um Scrum Master de sucesso.
Penso que o curso pode ser encarado como o início de um ciclo. Se você aposta em Scrum e seus valores, dê continuidade ao ciclo. Aprofunde o seu conhecimento do processo, aplique no mundo real, lute para que esta aplicabilidade se viabilize e se expanda. Estude conceitos de administração e projetos.
A minha interpretação é de que se trata de um novo olhar para o gerenciamento de projetos. Um olhar moderno, baseado em práticas consolidadas no mercado. (Você já ouviu falar de Lean e Toyotismo, certo ? ).
Um olhar que visa mais comunicação e menos papel, mais colaboração e menos negociação, mais receptividade a mudanças e menos procura por um plano perfeito.
Caminhos ágeis
Até alguns meses atrás a busca por conhecimento técnico era inevitável.
Acho que entrei um pouco tarde na indústria, cheio de vontade de buscar o meu lugar ao sol. Daí o interesse inicial pelo know-how técnico, uma necessidade de se firmar no mercado.
Hoje as coisas estão indo bem, e a minha sede pelo conhecimento técnico vai aos poucos diminuindo. Claro que não podemos deixar de acompanhar as tendências, e nem é essa a minha intenção. Na verdade ainda tenho muito o que aprender, devido à falta de experiência que só será superada com o tempo.
Estudar conteúdo técnico, no entanto, é algo pode facilmente se tornar monótono.
Por isso de algum tempo para cá tenho dedicado meu tempo de estudo mais aos aspectos administrativos e filosóficos, presentes em ideais que trouxeram à indústria uma nova maneira de pensar software: agile (link para um texto de Martin Fowler, traduzido por Luciano Passuello).
Métodos ágeis aos poucos constróem a minha maneira de pensar desenvolvimento de software, me abrindo a perspectiva de tornar isto cada vez mais prazeroso, em razão da interessante natureza destes métodos.
ASP NET MVC 1.0 lançado oficialmente
Agora é pra valer.
Foi lançado oficialmente o ASP NET MVC, na versão 1.0.
Um grande momento para aqueles que lutam por um aumento no padrão de qualidade de aplicações web desenvolvidas na plataforma da Microsoft.
Sabemos que o Web Forms não é um vilão, porém ele abre espaço para práticas ruins, inclusive abrigando profissionais fracos, conhecidos por trabalhar arrastando controles da toolbox e escrevendo código de péssima qualidade.
Claro que os cenários são diversos, e não podemos enterrar o Web Forms apenas pelo emprego inadequado que lhe foi imposto por *profissionais* incapacitados.
De qualquer forma a minha aposta é que o ASP NET MVC será útil em nossa luta pelo desenvolvimento de soluções melhor estruturadas, onde a capacidade técnica dos profissionais envolvidos terá papel decisivo.
Deixar de utilizar o Web Forms não significa fazer a melhor escolha, é bom que se diga.
Caberá ao responsável pelo projeto analisar os aspectos comerciais e gerenciais, e não somente técnicos.
Sempre existirá aquele cenário em que prazo, escopo ou custo podem tornar mais interessante a entrega de um projeto de qualidade discutível a um projeto de qualidade mais refinada (e mais caro).
Eu particularmente me interesso mais pelo segundo tipo de projeto, se possível com a ajuda do MVC.
E você ?
Primeiras impressões sobre Scrum
Comecei a estudar Scrum para valer há algumas semanas.
Scrum é um método ágil para gerenciamento de projetos.
Voltado para projetos complexos, onde existe imprevisibilidade e mudanças de planos.
Natureza do processo
Scrum é um processo de controle empírico, em contrapartida à processos de controle definido.
Controle definido significa utilizar práticas comuns um conjunto de práticas bem definidas (e de praxe), resolvendo problemas previamente enfrentados e portanto de complexidade tangível.
Geralmente efetivo em cenários onde as variáveis envolvidas, quando recorrentes em projetos distintos, produzem um resultado semelhante.
Desenvolvimento de software não tem se mostrado algo fácil de se controlar através deste tipo de processo.
Um processo de controle empírico é voltado a cenários de alta complexidade, onde certamente se encaixa o desenvolvimento de sofware.
Previamente aceita-se o fato de que não existe um pleno conhecimento do que será concebido.
Problemas são conhecidos tardiamente, e deverão ser enfrentados de maneira ágil.
Este tipo de processo apóia-se em três pilares:
Visibilidade, mostrará aos interessados como as coisas estão indo.
Inspeção, permitirá que problemas sejam identificados.
Aceitação a mudanças, permitirá que mudanças de planos aconteçam.
As práticas existentes no Scrum não são difíceis de compreender.
O difícil costuma ser aplicá-las de maneira correta.
Não aprofundarei em nenhuma prática, apenas levantarei alguns pontos que me chamaram a atenção.
Caso Scrum seja algo novo para você e desperte o seu interesse, uma pesquisa certamente o levará a um bom referencial teórico.
O líder (Scrum Master) é o facilitador, e não o chefe.
Isto significa que ele auxilia e orienta a sua equipe, mas não delega atividades a ninguém.
O Scrum Master auxilia o time de diversas maneiras.
Mantê-los no caminho certo, remover impedimentos, buscar melhorias.
Não dar ordens também é uma maneira de ajudá-los.
A equipe torna-se auto-gerenciável.
Um time Scrum se gerenciará sozinho, não existindo a necessidade de alguém ali, dizendo o que precisa ser feito, quem vai fazer o quê, quando precisa ser entregue (o que já é conhecido de antemão, a data de apresentação do resultado do sprint).
Existem práticas que tornarão isto possível, acredite.
Uma delas é a reunião diária.
Ela costuma durar 15 minutos e todos devem dizer o que fizeram desde a última reunião, o que farão até a próxima reunião e quais impedimentos podem dificultar o seu trabalho.
Já pensou a cara de um membro da equipe se ele não ajudou em nada no dia anterior ?
Não consigo nem imaginar.
O interessante é que com Scrum o time se tornará autônomo.
Eles saberão a melhor maneira de concluir o trabalho a ser feito.
Além disto os membros da equipe desenvolverão um comprometimento verdadeiro.
Eles não fazem algo que foi imposto, e sim algo que é necessário fazer, pelo bem do time, e do projeto.
Processo iterativo.
No Scrum existem os Sprints, iterações de espaço de tempo definido e constante, onde a equipe se comprometerá a entregar funcionalidades ao projeto.
Após o responsável pelo produto priorizar os itens do projeto e explicá-los ao time, caberá a eles dizer o que entra no sprint, com base em suas estimativas de trabalho.
Iterações permitem que o andamento do projeto seja discutido de maneira clara, existindo ferramentas de auxílio à tomada de decisões.
Conclusão
Tenho certeza que adotar Scrum não é algo simples. Afeta a estrutura de uma organização. Continuarei estudando o processo, interessado em buscar um constante aprimoramento das práticas realizadas no dia-a-dia.
O Scrum não conduzirá um projeto ao sucesso, necessariamente.
Corretamente aplicado, ele auxiliará os envolvidos na busca pelo melhor resultado possível.
E a sua opinião ?
Seja você um partidário de metodologias em cascata ou mais um interessado por processos ágeis, o seu feedback será bem vindo.