Hoje li um artigo falando à respeito da prática conhecida como "release early, release often". Nele o autor tentava expor as diferenças entre fazer liberações frequentes e fazer apenas liberações "maduras". Segundo ele, com liberações frequentes normalmente a versão inicial tem vários bugs, que são corrigidos à cada versão até chegar ao ponto onde tudo funciona corretamente. Por outro lado, se a prática escolhida é de apenas liberar releases maduros, são feitos poucos releases e neles o software deve estar totalmente livre de bugs.
Agora eu pergunto: o que você acha melhor, liberações frequentes ou liberações maduras?
Bem, será que as duas formas realmente são mutuamente exclusivas? Não podemos ter as duas ao mesmo tempo? Eu acredito que sim!
Para mim, liberações frequentes não significa liberar funcionalidades com bugs e deixar pra corrigir mais tarde, todo o release deve estar livre de bugs. A qualidade do software deve ser ponto indiscutível. O que muda é a quantidade de funcionalidades e não a qualidade delas.
A grande vantagem dos releases frequentes é ter um feedback o mais cedo possível do usuário. Quanto antes o usuário puder usar o software, ver se ele está adequado à realidade e dar o feedback, melhor. Um detalhe importante é que, o fato das funcionalidades estarem livres de bug não significa que elas necessariamente precisam estar "completas". E, por "completas" eu me refiro a "atender todas as necessidades possíveis e imagináveis". O mais importante é disponibilizar o quanto antes a parte principal da funcionalidade, obter o feedback e à partir dele ir expandindo o software.
Em resumo, pra mim o que melhor funciona é: liberar frequentemente, mesmo que a funcionalidade não esteja cobrindo todas as possibilidades, e obter o feedback o mais cedo possível. Sem que para isso a qualidade do software seja comprometida.