Canais iMasters

Agile

Desenvolvimento de software não é construção civil

Ao longo dos últimos anos, uma das áreas que mais cresceu foi justamente a de tecnologia voltada para o desenvolvimento de software e, com esse grande impulso, vieram junto enormes problemas que vão desde qualidade, prazos e, principalmente, expectativas de todos os envolvidos no processo, levando grande parte dos projetos a algum tipo de fracasso, conforme podemos observar nos principais estudos relacionados, como o “Chaos report”, promovido pelo The Standish Group.

A arte de desenvolver software é baseada em um modelo completamente criativo e dinâmico, sujeito a mudanças em cada passo, sejam oriundas de uma amplificação no entendimento do valor de negócio por parte do cliente ou em atividades emergentes que surgem logo nos primeiros minutos de codificação em qualquer projeto de desenvolvimento de software.

As disciplinas tradicionais de gestão baseiam-se em muitas ideias aplicadas na própria construção civil e tentam, usando esses princípios, determinar os mesmos fundamentos para projetos de desenvolvimento de software desconsiderando que são modelos completamente diferentes e conduzidos por pessoas criativas. Eu costumo dizer que, ao projetar um prédio nós costumamos ver a evolução da construção, desde a fundação e paredes que vão aparecendo aos nossos olhos. Rapidamente você consegue pegar e medir quanto é necessário de investimento e esforço para atingir o objetivo. Já no software a realidade é completamente diferente, pois é emergente e adaptável em cada passo dado.

É hora de mudar e adotar atitudes mais ágeis que provoquem a colaboração e comprometimento entre todos os envolvidos no ciclo produtivo do software. Estamos falando de pessoas altamente criativas e não de máquinas ou “recursos”.

Em meados de 2001 os principais pensadores da época deram um grande passo reunindo-se para formação do “Manifesto para Desenvolvimento Ágil de Software” que representou um grande marco de mudança contra os modelos tradicionais de desenvolvimento de software com 4 pilares importantes:

  1. Indivíduos e interações mais que processos e ferramentas
  2. Software em funcionamento mais que documentação abrangente
  3. Colaboração com o cliente mais que negociação de contratos
  4. Responder a mudanças mais que seguir um plano

A base principal disso tudo são pessoas felizes colaborando com o processo produtivo que requer adaptação frequente e muita atenção para atender a expectativa do cliente dentro dos objetivos do projeto. No modelo ágil, direcionamos todas as energias em criar um software funcionando orientado aos desejos do cliente que, sabemos, nunca são iguais aos pensamentos originais. Eles emergem e amadurecem junto com as entregas frequentes de software que são apresentadas em cada final de Sprint.

Ao questionar diversos desenvolvedores sobre documentação de software durante a manutenção, nenhum deles confirmou que abre qualquer documentação e sim vai direto ao código fonte resolver o problema. Imagina agora um cenário onde precisa fazer uma mudança, seja qualquer for o tamanho, como terá certeza que não gerou nenhum tipo de impacto no projeto? Não encontrará nenhum documento word que lhe dará essa garantia no código.

Para isso nós usamos outras abordagens no desenvolvimento ágil como TDD (Test Driven Development), orientando o desenvolvimento a testes unitários, gerando uma documentação de negócio no formato de testes que são executados automaticamente, garantindo que aquele código coberto pelos testes não sofreu impacto com a mudança de negócio. Na prática nós desenvolvemos primeiro os testes e depois as regras de negócios, já validando as mesmas com os testes, diminuindo inclusive o tempo de desenvolvimento.

Para alinhar a visão do cliente com as implementações realizadas, temos uma abordagem em desenvolvimento ágil conhecida como BDD (Behavior Driven Development) que permite orientar o desenvolvimento baseando-se no comportamento de negócio desejado escrito em histórias pelo cliente, fortalecendo mais ainda um dos princípios em desenvolvimento ágil que é o valor de negócio.

Para integrar o código fonte desenvolvido usamos a abordagem de CI (Continuous integration), tendo um mecanismo automático para geração de versão e entrega do software funcionando, permitindo uma visibilidade do produto que está sendo entregue e indo além, usando os testes unitários produzidos e outras abordagens para garantir a integridade do código fonte e sua fidelidade aos valores de negócio garantidos dentro dos testes e outros padrões de projeto, como arquitetura em camadas favorecendo a reutilização de software.

A informação mais importante que devemos passar ao nosso cliente é que estamos aptos a fazer mudanças no software e adaptar ao final de cada ciclo para juntos atingirmos os valores de negócio do projeto. Ter o cliente próximo esclarecendo as dúvidas faz a diferença e reduz todo o ruído de diferenças de entendimento, permitindo esclarecer o mais breve possível sempre que aparecer qualquer impedimento ou mudança de rumo.

As pessoas tratadas como pessoas e incentivadas a colaborar produzem cerca de 10 vezes mais, pois são desafiadas a dar o melhor de si e valorizadas pelos resultados proporcionados à equipe de uma maneira rápida, pois com ciclos curtos de projetos conseguirmos alinhar rapidamente qual o resultado de cada equipe de projeto. É muito importante que todos se sintam importantes no processo. Por isso incentivar a participação e compartilhamento de informações resulta em comprometimento.

O desenvolvimento de software como um trabalho criativo e intelectual requer uma atenção dobrada na equipe, motivando e alinhando expectativas, além de iniciativas que valorizem cada entrega de projeto com sucesso, mesmo que seja tirando uma foto da equipe e uma Coca-Cola gelada para cada. Na maioria das vezes a intensão vale mais que a força empregada e, ter um ambiente de trabalho feliz é o maior impulsionador de qualquer projeto.

Compartilhe, escute e provoque criando desafios animadores nas pessoas para que juntas formem uma grande força em prol de uma causa e não de uma regra. Conquiste liderando e multiplique a visão por todos do projeto removendo impedimentos e burocracia que não contribuem em nada com o resultado.

Para ter a melhor estratégia de desenvolvimento em um projeto de software inicie pela formação da equipe e crie mecanismos de qualificação e demais incentivos para manter um grupo forte e orientado a resultados. Acabo por acompanhar muita gente preocupada com quanto tempo uma pessoa está parada na frente do computador e não com o resultado que essa pessoa proporciona ao projeto.

Até hoje venho observando em projetos de “software civis tradicionais” gerentes e analistas estimando atividades para outras pessoas assumirem o compromisso de programar. É logico que sabemos de antemão que os desenvolveres vão concordar e que você já vai dar o prazo sabendo que não será entregue, criando o que eu batizei de mundo “Alice do Software”, onde todos sabem que não vai dar certo, mas continuam vivendo até não aguentarem viver mais dentro do caos e darem o grito de mudança.

De uma vez por todas vamos entender que resultado em um projeto de software se dá pela energia criativa para construir uma solução simples e rápida e não pela quantidade de força empregada ao longo do tempo. Para ter comprometimento é fundamental compartilhar com todos do projeto as informações e objetivos e abrir espaço para escutar e colaborar.

O dia que descobrirem, finalmente, que desenvolvimento de software é  empírico, mutável e não pode ser encarado como um projeto de uma obra civil, teremos atitudes diferentes com pessoas felizes desenvolvendo com qualidade desde o início e entregas rápidas alinhando a expectativa de negócio.

Para saber mais:

Ramon Durães

Ramon Durães

é especialista em desenvolvimento de software e possui diversas certificações, como MVP Visual Studio ALM, Professional Scrum Developer (PSD), Professional Scrum Master (PSM), Certified ScrumMaster (CSM). Trabalha como consultor especializado em Application Lifecycle Management (ALM) atuando em projetos de desenvolvimento software por todo o Brasil. É autor dos livros “Desenvolvendo para web usando o Visual Studio 2008” e “Gerenciando projetos de software usando Visual Studio Team System” pela editora Brasport. Palestrante nos principais eventos no Brasil, como TechEd (2005-2010) e Campus Party Brasil (2009-2011), e também de eventos regionais relacionados a grupos de usuários e universidades. Pesquisador de marketing digital, redes sociais, gestão 2.0 e agilidade. No twitter é @ramonduraes.


Comente também

10 Comentários

Igor Soto
Igor Soto

Até que enfim, alguém disse o que todo mundo sabe e convive no dia-dia, mas tem medo de dizer, "Todo mundo sabe que não vai dar certo e continuam levando"... Parabéns pelo artigo.

Thaísa Nunes
Thaísa Nunes

Ótimo artigo!!! Deve-se colocar está visão na cabeça de todos os Gerentes e Coordenadores de Projetos, afinal são eles que devem iniciar a concepção dessa ideia aos nossos usuários/clientes. Porém será preciso muitos anos pra ter o amadurecimento da área, nossos usuários ainda são crianças mimadas que não entendem o impacto de alterações, e que tempo é necessário e não luxo. No dia que um de nós inventar de tocar 6 ou 7 projetos, como engenheiros civis ou arquitetos, pode mandar internar vai estar todo mundo babando ou o fim do mundo esterá próximo. Poxa, tem gente que acha que analista de sistemas tem que tanto saber desenvolver quanto saber arrumar eletrodomésticos...

Anderson Costa
Anderson Costa

Tudo munto bonito, mas infelizmente tem profissionais que só sabem trabalhar sobre a sombra do chicote, e para complicar, tentam se convencer do contrário. Não adianta tentar agir de modo diferente quando o perfil do indivíduo é desse tipo. Mas o pior mesmo é que o dono do dinheiro, no caso o cliente, é que tem essa cultura engessada, e de um modo ou de outro acaba impondo tal comportamento. Pode-se ter os melhores e mais criativos profissionais com as melhores condições, e isso não valerá nada se o cliente é adepto da cultura do chicote.

Ramon Durães
Ramon Durães

O "Comando controle" já vem instalado por padrão. Faz parte do aprendizado tradicional e cabe a nós ajudarmos a reverter essa visão. Com tempo as próximas gerações já vão ditar outras regras. Basta observar a geração y!!!

Vinicius Serpa
Vinicius Serpa

Oi Ramon, achei muito legal o artigo. Um erro que sempre vem à tona é a idéia de que a implementação é análoga ao trabalho braçal da engenharia civil, o que ao meu ver - junto com a não aceitação da mudança - é um dos piores erros cometidos na engenharia de software.

No ciclo de vida de desenvolvimento nós não temos o trabalho braçal, é como se todas as fases fossem fases de um projeto. A própria implementação pode gerar mudança na modelagem inicial.

Renato Silva Medina
Renato Silva Medina

Parabéns pelo artigo Ramon.

Visões como esta só vem a agregar valor a nossa área. Há e sempre haverá distorções em ambientes de desenvolvimento, contudo tópicos como esse trazem novas reflexões para antigas visões e certamente vão lapidando a visão obsoleta de muitos gerentes de projetos, desenvolvedores, clientes e assim por diante. Pra frente o mundo segue, agora evoluindo, talvez.

Samuel Silva
Samuel Silva

Concordo em partes. Talvez este não seja o modelo adequado, mas quem sabe não se começa uma nova proposta de trabalho. Planejamento ainda é a melhor saida.

Luiz Gustavo Schoreder Vieira
Luiz Gustavo Schoreder Vieira

Concordo com o Samuel: planejamento ainda é a melhor saída.

Se o cliente paga por hora:
Metodologia ágil é bom pra Fábrica do Software, pois se o cliente quiser qualquer alteração "on-the-fly", ele vai pagar por isso.

Se o cliente paga por projeto fechado:
Metodologia ágil se torna ótimo para o cliente, pois se ele quiser qualquer alteração, quem vai ter que arcar com os custos dessa mão-de-obra, ou seja, o programador, é a empresa.

Ou seja, se tiverem um bom planejamento e uma boa análise (boa mesmo, pois planejar e analisar na área de TI é muito difícil) ninguém sai perdendo.

abraços,
Luiz Gustavo Schroeder Vieira
LUGATI Sócio-Diretor
http://testavo.blogspot.com

Leonardo Turbiani
Leonardo Turbiani

#FATO

Cleber A Vidotti
Cleber A Vidotti

O autor é especialista em SCRUM. Porque iria defender outra teoria? Achei meio tendencioso. Assim como em um prédio que acabou de ficar pronto e requer manutenção, também o software necessitará de manutenção. E como fazer um simples furo na parede sem a documentação(plantas) necessária?

Qual a sua opinião?

Comentários considerados ofensivos serão moderados.
KingHost

Parceiros

IBM
PagSeguro
Internet Innovation
Dialhost
HostNet
Tecla
KingHost
DotStore
Dinamize