sábado, 12 de junho de 2010

Metodologias de Desenvolvimento Agile

Depois de alguma pesquisa relativa a este tema, cheguei às seguintes ilacções:

Noutras metodologias, a interface é desenhada logo com todas as funcionalidades possíveis mas a maioria é fake, não funciona. Isto torna-se fuleiro pois se o projecto terminar a meio nota-se que o software está por acabar e não pode ser mostrado aos futuros utilizadores.

A metodologia Agile, baseia-se na utilização de ciclos de desenvolvimento mais pequenos, mas em que no final de cada ciclo todas as funcionalidades visíveis no protótipo/aplicação estão a funcionar.

Ou seja, se o projecto terminasse aí, o software já era usável. Limitado, é certo, mas sem dar a entender que tem "pontas soltas" (funcionalidades por terminar).

Só nós é que sabemos que está por terminar. Enquanto que a percepção exterior é de que está acabado! Com poucas funcionalidades, mas acabado!

Isto é óptimo! Pois permite:
- uma entrega mais rápida de algo que pode ser colocado em produção, enquanto o desenvolvimento continua;
- obter feedback dos utilizadores finais mais depressa, que permite perceber se estamos a ir na direcção certa;
- maior flexibilidade para mudar de direcção se se verificar que a ideia original não serve;

No limite, as várias versões poduzidas podem até ser usadas em paralelo, por diferentes tipos de targets, pois nem toda a gente necessita de todas as funcionalidades.

O problema do software complexo (com muitas funcionalidades) é que torna complicadas as coisas simples. E, para certas pessoas, não há necessidade...

Ou seja:

AIM HIGH, START EASY!

Vejamos um exemplo na prática.

Quando pensamos em desenvolver um site, a primeira coisa que começamos a rabiscar é um layout com um menu, logotipo, algum conteúdo...
E depois, quando vamos desenvolver, acontece disto http://www.eb23-paranhos.rcts.pt/ UNDER CONSTRUCTION.
Em algumas das páginas criadas no menu ainda não se sabe muito bem o que queremos colocar, e ficam em construção (por vezes indeterminadamente).

A proposta Agile é começar de forma simples e com aquilo que é mais prioritário. Por exemplo, um site com apenas o logo e os contactos. Mas tendo por objectivo acabar com um produto fechado em cada ciclo, nem que o produto seja mesmo muito simples.
O grande problema é que a motivação se vai naturalmente detriorando ao longo do projecto... à medida que a novidade vai desaparecendo. Concordam comigo, certo?

Já agora, relativamente ao "under construction", vários sites indicam que não se deve usar por várias razões. Exemplo http://www.cs.utah.edu/~gk/atwork/

Concluindo,
segundo aquilo que pude constatar, o objectivo é apontar inicialmente para um produto o mais simples possível. E só depois de atingir esse objectivo é que se avança com alterações e alterações e alterações... mas sempre tendo por meta terminar cada ciclo com um produto fechado. Interessante, hein?

Portanto já sabes: AIM HIGH, START EASY!

Diverte-te!

5 comentários:

  1. E agora para rematar,

    foi pura coincidência, mas é interessante verificar que a estratégia de avançar para as minis (aplicações com funcionalidades reduzidas) está alinhada com as metodologias Agile.

    É sinal que estamos no caminho certo para o SUCESSO! ;)

    ResponderEliminar
  2. Concordo plenamente!! Olhando para a experiência que já tive em alguns projectos não posso estar mais de acordo com esta metodologia.

    Tal aconteceu com um projecto que bem sabes que depois acabou em nada, se tivesse guiado por esta metodologia, provavelmente estaria finalizado e operacional neste momento :)

    Ao definirmos pequenos objectivos vamos nos sentir bem sempre que alcançamos um, e avançamos para o próximo bastante motivados.

    Excelente post!

    ResponderEliminar
  3. Vamos então pensar em avançar com esta metodologia, para manter-mos o entusiasmo para fazermos as coisas step by step e até ao fim

    ResponderEliminar
  4. Concordo com o que foi dito no entanto tenho um ponto que gostava de sublinhar. Nessas tais aplicações feitas passo a passo, podemos deixar antever isso mesmo para o utilizador final, ou seja, ele saiba que é uma versão em permanente desenvolvimento isto porque, se ele estiver à procura de uma aplicação que faça mais qualquer coisa e veja uma "nossa" (UAU :) ) não a coloque logo de lado por pensar que é "fraquita" para o que ele quer usar e que esta não irá ter desenvolvimento :) ...

    ResponderEliminar
  5. Exactamente!
    Para isso, podemos manter um blog por aplicação (com preview na homepage) que deixe antever as nossas ideias para os futuros desenvolvimentos bem como mostrar a cadência de introdução de novas features.

    ResponderEliminar