programadores avaliam a dificuldade de implementar cada funcionalidade. Com essa estimativa o cliente prioriza as tarefas mais importantes para realizar na iteracao.Pequenas Versoes Como o escopo e reavaliado semanalmente, o projeto e regido por um contrato de escopo negociavel, que difere significativamente das formas tradicionais de contratacao de projetos de software. Ao final de cada semana, o cliente recebe novas funcionalidades, completamente testadas e prontas para serem postas em producao. Com essa pratica se busca a medicao do cliente do quanto ja foi feito; a possibilidade de que se o projeto nao terminar, varias partes ja foram desenvolvidas e sao funcionais; e principalmente o feedback rapido do cliente para detectar problemas ou informar que uma funcionalidade nao atendeu a real necessidade.Projeto Simples No desenvolvimento agil a complexidade do sistema deve ser sempre reduzida. Usa-se as tecnologias, designs, algoritmos e tecnicas mais simples que permitirao atender aos requisitos do cliente. Qualquer complexidade deve ser removida assim que descoberta. Qualquer design, processo ou codigo criado pensando nas proximas iteracoes devem ser descartados.Equipe Coesa No desenvolvimento agil o cliente faz parte da equipe de desenvolvimento. A comunicacao com o cliente e crucial em projetos ageis. Em varios ramos de metodologias ageis, e o cliente quem exerce o papel de gerente do projeto, resolvendo os problemas referentes as regras de negocio. Para evitar distorcoes nas informacoes os desenvolvedores devem sanar suas duvidas diretamente com o cliente.Refatoracao Nao existe uma etapa isolada para modelagem, o codigo e a modelagem. O design e melhorado continuamente atraves de refatoramento. Passos de refatoramento melhoram, incrementalmente, a estrutura do codigo, sem alterar sua funcao. No desenvolvimento agil os testes sao obrigatorios, assim elimina o medo de que o sistema ira deixar de funcionar por causa de um refatoramento. Sempre que um desenvolvedor perceber uma complexadade ou inclareza no sistema, deve-se refatorar o codigo e criar os devidos testes.Integracao Continua Varias vezes ao dia o desenvolvedor deve integrar suas alteracoes, sincronizar ao repositorio principal e executar todos os testes. A adocao dessa pratica estimula design simples, tarefas curtas, agilidade, feedback sobre o estado atual do sistema e principalmente encontrar conflitos e erros de design rapidamente.Metafora As equipes mantem uma visao compartilhada do funcionamento do sistema. Para a padronizacao do sistema com os outros membros da equipe, sao criadas analogias das funcionalidades que se refletem na escolha dos nomes de metodos, classes, campos, etc. Alem de sempre buscar fazer analogias proximas a linguagem natural do cliente para facilitar a comunicacao com o mesmo.Desenvolvimento Orientado a Testes Antes de digitar qualquer linha de codigo, o desenvolvedor devera refletir sobre a implementacao e escrever o devido teste para valida-la. 100% do codigo deve ser coberto por testes. O teste deve ser feito obrigatoriamente antes de qualquer codificacao ou refatoracao. Todos os testes sao executados automaticamente, o tempo todo.Ritmo Sustentavel O desenvolvimento agil busca entregar software com o maximo de qualidade e satisfacao do cliente, e para isso usa o maximo de produtividade dos desenvolvedores. Para isso o ritmo deve ser sustentavel com 40 horas/semana, 8 horas/dia, sem horas extras. Outra pratica que se verifica neste