Bugs que o sistema apresentou no fim do sprint

Ano passado meu último post foi “Erros que cometi nesse sprint”, tratava-se de alguns erros que tinha cometido em um projeto, principalmente por não ouvir as pessoas. Outra vez vou contar um pouco da experiência que eu tive e que está totalmente relacionada aos princípios ágeis.

A grosso modo, o princípio básico das metodologias ágeis de desenvolvimento de software é: entregar software de qualidade e funcional o mais rápido possível para garantir o ROI (retorno sobre investimento). Esse é um assunto que já se tornou clichê no mundo do desenvolvimento de software, porém no dia a dia de um projeto seguir esse princípio não é tão fácil como parece. Então, seguindo essa linha de pensamento, quando vamos iniciar um sprint devemos priorizar quais tarefas serão executadas primeiro afim de entregar o quanto antes as funcionalidades que tem mais valor (ROI).

Muitas vezes o objetivo principal do projeto não fica claro em um primeiro momento, no caso o projeto tratava-se de um loja virtual de cursos, porém esse conceito só ficou realmente claro para a equipe depois que o projeto foi “finalizado”. Isso foi um grande problema, eu particularmente acabei me concentrando em vários detalhes que não estavam diretamente relacionados com o objetivo principal, ou seja, o usuário poder comprar e se matricular em um curso.

Depois do “fim” do projeto foram encontrados vários bugzinhos no sistema e várias coisas que não tinham sido implementadas ou que poderiam ser melhoradas. Eu fiquei encarregado de arrumar esses bugs para então o site ser finalmente concluído e entrar em produção. No fim da segunda semana que estava arrumando os erros percebemos que o processo de compra de um curso simplesmente não estava funcionando…

É aí que PAGAMOS O PREÇO por NÃO ser ÁGEIS

Não entregamos software funcionando incrementalmente, fizemos incrementalmente, mas não entregamos, dessa forma é muito mais difícil descobrir bugs e possíveis mudanças. Adiar mudanças significa aumentar o custo delas. E o pior é entregar software que não cumpre com seu principal objetivo.

Se o software apresenta muitos bugs e precisa de muitas correções, você estará perdendo dinheiro, afinal o cliente não vai pagar para arrumar erros de desenvolvimento.

Poderíamos ficar procurando N motivos para dizer o porque cometemos erros (acharíamos vários e achamos), principalmente pelo projeto ser de escopo fechado, mas era melhor salvar o projeto, não acha? =p

Salve o projeto, seja ÁGIL

Utilizando três técnicas ágeis, conseguimos em poucos dias, corrigir os bugs e tornar o sistema totalmente funcional.

– Testes Automatizados
– Programação em Par
– Refatoração

O sistema tinha/tem testes automatizados, isso nos proporcionou fazer uma refatoração no código programando em par, com a segurança de que não iríamos quebrar outras partes do sistema. Dessa forma conseguimos rapidamente corrigir os bugs e o processo de compra, tornando o sistema totalmente funcional.

E você? está utilizando desenvolvimento ágil nos seus projetos?

Erros que cometi nesse sprint

Estou há mais de um mês sem postar nada por aqui, sim, sempre a mesma desculpa da falta de tempo. Trabalhando bastante, vários trabalhos na faculdade, alguns projetos paralelos e outras coisas estão consumindo grande parte do meu tempo.

Bom, desculpas a parte, arranjei um tempinho para compartilhar um pouco dos problemas que tive essa semana no trabalho. Acho que tão útil quanto compartilhar coisas boas que aconteceram é bom compartilhar o que não foi tão bom assim, afinal aprendemos bastante com os erros, talvez os meus erros te ajudem a errar menos =)

Eu passei os últimos três anos da minha vida trabalhando no desenvolvimento do Guia SPMais (sim fizemos outros projetos na Seek, mas esse era o principal). Boa parte do que eu aprendi sobre desenvolvimento web, programação, SEO entre outras coisas foi desenvolvendo o SPMais. Fizemos muitas coisas boas, com destaque para a migração de PHP para Ruby on Rails. Eu gostava bastante de trabalhar na Seek, afinal lá trabalhei com amigos como o Godinho, a Cássia e o Hary.

Há cerca de dois meses mudei de emprego (vários os motivos que podem se tornar um post separado). Agora estou trabalhando na Nu Design em São Paulo/SP. A Nu é uma agência com um time de desenvolvimento fantástico (Rails é claro =p), estou tendo vários novos desafios e aprendendo muito com caras como Marco, Samuel e com a consultoria do Carlos também.

Toda essa introdução só para ficar mais claro o contexto hahahah. Basicamente a Nu tem um processo de desenvolvimento bastante maduro (no meu ponto de vista). Apesar dos contratos dos projetos ainda serem de escopo fechado, utilizamos SCRUM e alguns conceitos de metodologias ágeis.

Essa semana cometi alguns erros que comprometeram (não tão drasticamente assim) a entrega desse sprint. Vou listá-los abaixo.

- Comecei várias tarefas ao mesmo tempo

Sem dúvida o meu maior erro foi dar start em mais de uma tarefa ao mesmo tempo. No meio do sprint fiquei travado esperando um layout para terminar a minha tarefa, então comecei a fazer a modelagem que iria utilizar para as próximas tarefas, o problema foi que eu startei quatro tarefas (estimadas em 13 pontos) ao mesmo tempo. Ou seja, peguei uma carga de trabalho maior do que fui capaz de fazer e “impedi” que outra pessoa pegasse alguma desssas tarefas.

- Estimei mal o prazo

Estimar prazos é sempre complicado, as vezes queremos ser a Mãe Diná e tentamos prever o futuro, mesmo que seja algo próximo, cometi um baita erro estimando um prazo que não fui capaz de cumprir. Fiquei até mais tarde no trabalho e nem isso resolveu o problema da minha estimativa. Provavelmente por não entender o problema completamente.

- Cometi falhas na comunicação

Sem dúvida um dos principais objetivos das metodologias ágeis é melhorar a comunicação. Quando há falha na comunicação, há problemas sérios. O erro que cometi foi não me comunicar tanto com os outros desenvolvedores quanto com o PO, então tive dificuldade na parte técnica e a minha implementação não atendeu o esperado da funcionalidade.

- Não escutei as pessoas

Um erro comum do ser humano é não escutar as outras pessoas, principalmente aquelas que tem bem mais experiência que você, dentro de uma equipe de desenvolvimento não é diferente. No meio do sprint o Carlos identificou o problema de eu ter pego mais de uma tarefa ao mesmo tempo, mas fui teimoso acreditando que isso não iria atrapalhar. Cometi outro erro.

Lições que aprendi nesse sprint:

– Não tente abraçar o mundo, faça uma coisa de cada vez, uma tarefa por vez.
– Não se comprometa a fazer mais do que você é capaz.
– Investigue o problema de maneira profunda, sua estimativa será melhor.
– Converse com as pessoas, pergunte, questione, compartilhe e faça com que compartilhem com você.
– Escute as pessoas, quem tem mais experiência pode ter passado por problemas que você ainda não passou.
– Estude e aprenda sobre metodologias ágeis, nunca ache que você já sabe o suficiente.

E o mais importante

- Programar em par pode parecer “mais lento”, mas ajuda a diminuir problemas como esses.