Hospedagem Profissional

Hospedagem Profissional
Clique aqui e ganhe US$ 10,00 para testar durante 1 mês a melhor hospedagem: Digital Ocean!

quarta-feira, 25 de janeiro de 2012

O que são essas tais de metodologias Ágeis ?

Introdução
 
O grande filósofo e pai da da administração moderna Peter Drucker já dizia:
"... most of our assumptions about business, technology and organizations are at least 50 years old.  
They have outlived their time. As a result, we are teaching and practicing policies that are increasingly at odds with reality and therefore counterproductive .“
 [Peter Drucker 1998]
 
Devido as crescentes pressões do mercado por inovação, produtividade (prazos casa vez mais cursos), flexibilidade e melhoria no desempenho/qualidade dos projetos de desenvolvimento de SW, houve o surgimento dos métodos ágeis.
O ágil surgiu dado a necessidade de melhorarmos a forma como estamos desenvolvendo SW e nosso foco principal é satisfazer o cliente. 
 
Uma coisa é fato, nós da área de TI estamos errando e errando muito. 
Apenas 32% dos projetos entregues são considerados sucesso. 24% são puro fracasso (cancelados, ou engavetados - nunca colocados em produção ou utilizados pelo cliente), 44% são desafiados (sofreram atrasos, estouraram o budget, não atendem as necessidades, estão cheios de defeitos).



19941996199820002002200420062009
Successful16%27%26%28%34%29%35%32%
Challenged53%33%46%49%51%53%46%44%
Failed31%40%28%23%15%18%19%24%
 (fonte: Standish Group - Chaos Report)

 
E o resultado consegue ser ainda pior, pois para os projetos considerados sucesso, apenas 20% da funcionalidade do SW é realmente útil.  


É claro que a falha na execução de um projeto deve ser investigada e a causa pode ser dada decorrente de diversos motivos, mas de maneira geral esses erros ocorrem porque muitas vezes ao iniciar um projeto fazemos as seguintes suposições:


  • Os requisitos são 100% conhecidos no início do projeto e foram levantados e minuciosamente detalhados.
  • O desenvolvedor sabe como construir
  • Nada irá mudar ao longo do caminho

Porém existem 3 coisas com as quais temos que conviver na época em que vivemos hoje onde os Software que produzimos estão ficando cada vez mais complexos:

  • O cliente descobre o que ele realmente quer, ou seja, é puro desperdício (tempo e esforço) detalhar minuciosamente os requisitos no ínicio do projeto e escrevê-los sobre pedra. Muitas vezes os requisitos mudam mas não necessariamente porque o cliente quer, mas porque a necessidade exige, porque o mercado exige.


“Um processo rígido ou resistente a mudanças produz produtos medíocres. Os clientes podem até receber o que eles solicitaram primeiramente, mas é esse o produto que eles realmente querem logo quando eles o recebem? Coletando todos os requisitos no início e escrevendo-os sobre pedra, o produto é condenado a ser tão bom quanto a idéia inicial, ao invés de ser o melhor uma vez que as pessoas aprendem ou descobrem como fazer melhor.” [Jeff Sutherland]

  • Os desenvolvedores descobrem como construir - idéias, novas tecnologias e opções surgem no decorrer do projeto. Desta forma uma nova idéia não deveria ser mau vista pela equipe/gestor.
  • Muitas coisas mudam ao longo do caminho.

Ágil é uma nova forma de gestão e desenvolvimento de Software que usa uma abordagem de planejamento e execução iterativa e incremental voltado para processos empíricos (complexos, caóticos ou com muita incerteza, tem mudança ao longo do processo, não são repetitivos e são imprevisíveis) que divide o problema em produtos menores e que visa entregar software funcionando regularmente, visa a aproximação e maior colaboração do time de desenvolvimento com os experts de negócios, comunicação face-to-face, redução dos riscos associados as incertezas dos projetos, abraçar e responder as mudanças de forma mais rápida e natural e é claro a satisfação final dos clientes por meio da adoção de práticas de gestão e de engenharia de software com foco nos valores e princípios doLean e do agile, resumindo, seu principal objetivo é entregar o produto que o cliente realmente deseja e que será útil e com qualidade.

Agilidade em TI é:  
“a habilidade de criar e responder a mudanças, buscando a obtenção de lucro em um ambiente de negócio turbulento” (HIGHSMITH, 2004); ou ainda, a capacidade de balancear a flexibilidade e a estabilidade.  HIGHSMITH (2004) enfatiza que a ausência de estrutura ou estabilidade pode levar ao caos, mas que a estrutura em demasia gera rigidez.

Vantagens (Cliente)

  • Foco e maximização do ROI (Retorno do Investimento) e do Valor de Negócio;
  • Entregas do produto + rápida, freqüentes e regulares;
  • Aceleração do Time-to-market o que se traduz em ganho de competitividade;
  • Maximização do Value-to-Makert;Foco no que é prioritário e traz mais valor para o usuário, o que se traduz em ganho de usabilidade;
  • Transparência e visibilidade do status do projeto;
  • Flexibilidade para mudanças de requisitos e prioridades além de maior agilidade na tomada de decisões;
  • Melhoria da Qualidade do produto final;
  • Produtividade;
  • Redução dos riscos e das indesejáveis surpresas.

Vantagens (gestor e equipes)

  • Escopo e objetivos claros e priorizados;
  • Equipes auto-gerenciáveis, maior autonomia, disciplina e regularidade;
  • Maximização do comprometimento;
  • Melhoria na comunicação. A comunicação intensa com o cliente e a gestão de suas expectativas são parte do processo;
  • Inspeção e Adaptação constantes do processo em busca da melhoria contínua e a redução dos desperdícios;
  • Antecipação dos problemas e maior agilidade na tomada de ações.

Pesquisa realizada, mostra os benefícios mais obtidos:
image 

Outras pesquisas, disponíveis em: http://www.ambysoft.com/surveys/

E quem pensa que a metodologia ágil é novidade se engana. Este ano (2011) celebramos exatos 10 Anos que o  Manifesto ágil foi criado e assinado.

Para os que ainda não o conhece, apresento-lhes o Manifesto ágil:

"Estamos descobrindo maneiras melhores de desenvolver software, fazendo-o nós mesmos e ajudando outros a fazerem o mesmo. Através deste trabalho, passamos a valorizar:

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

Ou seja, mesmo havendo valor nos itens à direita,
valorizamos mais os itens à esquerda."

 
Assinado por:  Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas
© 2001, os autores acima.
Esta declaração pode ser copiada livremente em qualquer formato, mas somente integralmente através desta declaração. 
www.agilemanifesto.org
 
 

Os 12 princípios do agile

  1. Nossa maior prioridade é satisfazer o cliente através da entrega contínua e adiantada de software com valor agregado.
  2. Mudanças nos requisitos são bem-vindas, mesmo tardiamente no desenvolvimento. Processos ágeis tiram vantagem das 
    mudanças visando vantagem competitiva para o cliente.
  3. Entregar frequentemente software funcionando, de poucas semanas a poucos meses, com preferência à menor escala de tempo.
  4. Pessoas de negócio e desenvolvedores devem trabalhar diariamente em conjunto por todo o projeto.
  5. Construa projetos em torno de indivíduos motivados. Dê a eles o ambiente e o suporte necessário e confie neles para fazer o trabalho.
  6. O método mais eficiente e eficaz de transmitir informações para e entre uma equipe de desenvolvimento é através de conversa face a face.
  7. Software funcionando é a medida primária de progresso.
  8. Os processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente.
  9. Contínua atenção à excelência técnica e bom design aumenta a agilidade.
  10. Simplicidade--a arte de maximizar a quantidade de trabalho não realizado--é essencial.
  11. As melhores arquiteturas, requisitos e designs emergem de equipes auto-organizáveis.
  12. Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e então refina e ajusta seu comportamento de acordo.

Para mais informações sobre o manifesto ou sobre esse evento que reuniu as 17 pessoas que criaram esta aliança, sugiro este artigo: clique aqui  
 
Quais são as metodologias ágeis que existem e quais as mais utilizadas?
“Desenvolvimento ágil" é o termo utilizado por diferentes metodologias e frameworks que desenvolvem software de forma iterativa e incremental. 
Algumas são mais prescritivas ou menos mas as metodologias ágeis mais comuns são: Extreme Programming (XP), Scrum, Lean Development, Feature-Driven Development (FDD), Kanban, RUP e OpenUP.
Pesquisas mostram que o Scrum é de longe o framework mais utilizado por ser o mais simples e de fácil adoção e adaptação.
 
Mas então Scrum é o melhor framework para utilizar? Depende. Cada uma dessas metodologias tem a sua particularidade e práticas sugeridas mas muitas vezes o que vemos hoje em dia são os modelos hybridos, que são na verdade uma mescla dessas metodologias/frameworks onde as melhores práticas de cada metodologia é aplicada a um processo customizado. É preciso analisar a necessidade e a maturidade da equipe para então escolher um framework ou práticas ágeis que lhe traga o benefício esperado.

Adotar uma metodologia ágil pode trazer muitos benefícios, mas nós costumamos dizer que o ágil não é a bala de prata, ou seja, apenas aplicar por exemplo o SCRUM ou algumas de suas práticas ágeis por si só não vai resolver os seus problemas, mas evidênciar suas fraquezas para que você possa identificar e atuar sobre elas. Cabe então a equipe atuar de forma pró-ativa e desejar as mudanças para que os benefícios que o ágil pode proporcionar possa valer de verdade.


Dentre as principais causas de falha na adoção de uma metodologia ágil estão:

- Filosofia ou a cultura da empresa que conflitam com os valores e princípios do agile;
- Falta de suporte gerencial para apoiar as mudanças; É preciso desejar as mudanças;
- Falta de experiência ou treinamento insuficiente no novo processo; É preciso tornar-se capaz de trabalhar de maneira ágil;

- Boicote, falta de comprometimento da própria equipe. É preciso reconhecer que há espaço para melhorias e desejá-las;


Aplicar o ágil não é uma tarefa fácil. Exige determinação e disciplina. É UMA MUDANÇA DE COMPORTAMENTO. 
Ah! mas uma boa ferramenta como o RTC ajuda, e ajuda muito!!!
Preparados? Vamos implantar o ágil?
 

Por
Juliana Berossa Steffen
Certified Scrum Master
Certified Scrum Product Owner 
Professional Scrum Master I

Via Rational Brasil