sexta-feira, dezembro 18, 2009

Desenvolvimento Ágil - Entrevista para TIDigital

Na edição de novembro da revista TIDigital eu fui entrevistado para a matéria sobre Desenvolvimento Ágil, que era o tema dessa edição da revista. As perguntas feitas foram perguntas frequentes e algumas confusões também frequentes que ocorrem quando se fala em agilidade.


Vou transcrever a entrevista aqui e espero que esclareça algumas dúvidas.



[TIDigital] Como você resumiria o que é ser um desenvolvedor ágil?


[P.Igor] Ser um desenvolvedor ágil é ter espiríto de equipe, coloraboração, pronto pra resolver qualquer problema que ajude a alcançar as metas, é ser auto-gerenciável e ter sempre a sensação que o trabalho pode ser melhorado, buscando sempre uma melhoria contínua.

[TIDigital] Diante de tantas metodologias ágeis de gerenciamento que tem grande sucesso em todo o mundo, como escolher uma? Depende do sistema a ser desenvolvido?


[P.Igor] Na verdade para escolher uma metodologia é preciso avaliar o que melhor se encaixa a cultura da empresa, então o interessante mesmo é se manter informado, pesquisar e estudar as práticas e técnicas que são utilizadas para então decidir quais seriam relevantes para a sua realidade, e geralmente ainda são necessárias adaptações.


[TIDigital] Qual a importância do teste de software? A agilidade está também baseada em testes. Se você não testa, não é ágil. Como é este processo de testes contínuos durante o desenvolvimento? 


[P.Igor] Teste de software é imprescindível ainda mais quando estamos em um ambiente ágil, e a sua afirmação está correta, se você não testa não é ágil. Dentro de um ambiente que estamos trabalhando com ciclos de desenvolvimento de 2 semanas ou 1 mês são necessárias outras técnicas para amenizar a carga de testes apenas no final, então os testes são diluídos em todo o ciclo tornando o teste mais contínuo, pra isso é necessário automatizar boa parte dos testes, e em intervalos curtos de tempo o software todo é testado, assim a equipe consegue identificar problemas rapidamente no software, assim dá mais segurança em grandes modificações no software, no desenvolvimento de novas funcionalidades e melhora a qualidade do produto, pois o software está o tempo inteiro sendo verificado. Para isso geralmente são utilizadas ferramentas para automatizar os testes e executá-los periodicamente reportando as falhas encontradas, acho até que as práticas de teste nas metodologias ágeis são mais fortemente empregadas que em outras metodologias.

[TIDigital] Quais ferramentas você indica para testes de sistemas web? 


[P.Igor] Isso depende muito da plataforma, ou linguagem de desenvolvimento que você utiliza, as principais plataformas possuem ferramentas que permitem fazer desde os testes de integração, aceitação, até testes de interface. Por exemplo para JAVA existe o JUnit, JMock, JBehave (suporte ao BDD - Behaviour Driven Development), o Selenium (ferramenta mais específica para teste de aplicações web) que da suporte para teste de aplicações web escritas em diversas linguagens diferentes, não só o JAVA, e não é só o JAVA que possui esses recursos cada uma tem seu conjunto, assim como para Ruby, Python, Perl, e até para ferramentas e linguagens mais específicas como por exemplo para o desenvolvimento de RIAs (Rich Interface Application) como o Flex + ActionScript que também possuem as suas ferramentas de teste, como o FlexUnit e o ASUnit, hoje é difícil encontrar linguagens que possuem comunidades fortes, ou empresas grandes por trás, sem esses tipos de ferramentas para realização de testes automatizados. 

[TIDigital] Você conhece o Manifesto ágil? Acha que ele substitui um método ágil?


[P.Igor] Sim. O Manifesto ágil é a origem e a base para todas as metodologias ágeis, o manifesto traz na verdade uma série de valores que foram identificados pelos principais nomes da engenharia de software da atualidade, que se reuniram para discutir o por que dos projetos de software fracassarem tanto e como eles poderiam fazer para mudar essa realidade. No início a idéia era definir um novo modelo de processo ou algo do tipo, mas eles viram que não chegariam a lugar algum, com isso eles perceberam que em todos os projetos de sucesso havia algo em comum, então foram identificados valores que eram mais importantes que outros e que contribuíam para o sucesso do projeto. Na verdade o manifesto ágil guia as metodologias e nele que devemos nos basear até mesmo para realizarmos nossas adaptações para atender a nossa cultura e não nos distanciarmos dos valores destacados no manifesto.

[TIDigital] Desenvolvimento web ágil se resume a seguir uma metodologia de gerenciamento e fazer testes contínuos? O que mais é preciso? A escolha por linguagens e frameworks está englobada à atividade ágil de desenvolvimento?


[P.Igor] Não. Desenvolvimento ágil não está atrelado a frameworks, ferramentas, linguagens e também não é seguir nenhum modelo, guia, ou qualquer que seja a receita de bolo. Desenvolvimento ágil é conseguir utilizar uma série de práticas de desenvolvimento adequadas a um desenvolvimento iterativo e incremental, onde a cada iteração (ciclo) o software recebe um incremento, alcançando o máximo possível de retorno do investimento feito pelo cliente rapidamente, e valores que ajudam a alcançar isso estão presentes no manifesto ágil.


Veja não estou dizendo que não precisamos de ferramentas, existem muitas ferramentas, práticas e técnicas de desenvolvimento que ajudam bastante o desenvolvimento de software ágil, mas não é apenas isso que determina se você está sendo "ágil", ou não.


Acho que o manifesto ágil e toda a comunidade está tentando resgatar um desenvolvimento de software mais centrado no processo criativo do desenvolvimento e não tentando tratar o desenvolvimento como uma grande máquina constituída por pessoas totalmente descartáveis que repassam papéis de lá pra cá e ignoram quase que completamente o comportamento humano dentro do processo de desenvolvimento de software, ao em vez de se adequar a realidade, onde tratamos de "coisas abstratas" vindas de pessoas, tentando resgatar do nosso cliente uma imaginação do que seria o software pra ele e como esse software o ajudaria. Não da pra simplesmente anotar tudo isso de uma vez, fazer e entregar, como se o cliente não fosse esquecer nada de importante nessa conversa, o processo requer um refinamento e acompanhamento de perto do cliente para ir aparando as arestas até que a "obra" esteja concluída. 


O desenvolvimento de software está mais para um processo artístico do que para um processo fabril como a maioria encara ainda. As pessoas precisam encarar o desenvolvimento de software de forma diferente e as metodologias ágeis estão trazendo isso a tona, uma forma diferente, para muitos, de fazer software!





Abraço.


3 comentários:

C. Alexandre disse...

Olá Paulo Igor, parabéns pela entrevista, representou muito bem toda a comunidade ágil brasileira, é "um pequeno passo para o homem, um grande passo para a humanidade".

Abraços

Calex

Marcelo Andrade disse...
Este comentário foi removido pelo autor.
Marcelo Andrade disse...

Muito boa a entrevista, Pigor. Parabéns!

Achei legal a referência discreta ao artigo do TaSAFO, "Se você não testa, você não é ágil!".