Previsibilidade
O ser humano busca por natureza entender e controlar seu ambiente. Este desejo por um ambiente mais previsível vem de tempos antigos e teve um impacto direto no nosso caminho para desenvolver todas as ciências: boa parte da curiosidade que resultou no nosso avanço científico e tecnológico vieram do objetivo de entender e controlar a natureza, essenciais para o nosso bem estar.
Porém já há muito tempo o homem descobriu que nem tudo pode ser efetivamente previsto. Só para citar um exemplo, um vinicultor que está preparando uma nova safra de vinhos sabe que não pode prever exatamente qual vai ser a qualidade de seu produto final -— a quantidade de variáveis é tão grande e sua inter-relação tão complexa, que o resultado final tem sempre um grau de surpresa.
Estas situações, que são muito comuns, não tiraram do homem seu ímpeto de buscar relações claras e previsíveis de causa-efeito em tudo que encontra. Na verdade, a impressão que temos é que os sistemas complexos, onde tais relações não são previsíveis, são a exceção. E mais ainda, que nós só “nos conformamos” com elas depois de muito tentarmos, sem sucesso, prevê-las e controlá-las.
A área de desenvolvimento de software vem passando por uma etapa assim. Há décadas as pessoas têm criado e evoluído processos de desenvolvimento de sistemas que consideram que esta atividade pode ser controlada e prevista. Este tipo de visão gerou as metodologias tradicionais de desenvolvimento, como por exemplo o RUP, e os resultados foram sempre desanimadores.
Mais recentemente, um conjunto de metodologias ágeis, como Scrum e XP, vêm surgindo como uma alternativa para os processos mais tradicionais. Estas metodologias têm em sua base a visão de que o processo de desenvolvimento de software não é algo de todo previsível, e portanto definem um modo de trabalho que permita tirar o melhor resultado do processo, sem exigir que o resultado final seja o que se imaginava no princípio (até porque consideram que isto é