Introdução ao desenvolvimento iterativo para startups

Introdução ao desenvolvimento iterativo para startups

Para algumas startups, depois da validação da ideia, a escolha do processo de desenvolvimento é o início de tudo. Isso porque é ele o responsável por dar o ritmo e indicar a direção para onde o projeto deve caminhar até se tornar real.

Para quem ainda utiliza o waterfall — modelo cascata, em tradução livre —, chegou a hora de entender por que metodologias ágeis são escolhas mais sábias, que podem facilitar o trabalho do time e garantir mais qualidade ao produto.

Para se ter uma ideia, produtos que são desenvolvidos usando waterfall só serão realmente validados ao final de todo o processo. Ou seja, só depois de trabalhar exaustivamente durante meses é que o time irá verificar se o software atende de fato às necessidades do cliente. E se não atender? Serão horas de trabalho escoando feito água pelo ralo. E, nessa altura do campeonato, não podemos desperdiçar nem uma gota d’água.

Sem falar no problemão que pode acontecer se houver um erro nas etapas iniciais ou intermediárias do projeto: a falha será replicada e ampliada em todas as outras. É o equivalente a fabricar e distribuir um lote inteiro de espetos e só depois descobrir que ele deveria ter sido feito com o dobro de tamanho para serem compatíveis com as churrasqueiras do Brasil.

É por isso que, para quem utiliza metodologias ágeis, o modelo iterativo e incremental passa a ser uma escolha natural. Pelo nome parece complicado, mas a prática não é tão difícil assim.

O que é esse tal modelo iterativo e incremental?

O desenvolvimento iterativo é uma das premissas do Manifesto para Desenvolvimento Ágil de Software, criado em 2001 por 17 desenvolvedores. O documento, que é quase uma versão dos dez mandamentos para quem já é ágil, elaborou uma nova forma de entender projetos que lidam constantemente com imprevisibilidade e imprecisão.

Se você ainda não está familiarizado com o Manifesto Ágil ou não se recorda dos valores fundamentais que o sustenta, sugiro dar uma lida no texto “Ser ágil ou não ser?”. Não é obrigatório para absorver o desenvolvimento iterativo, mas ajuda a entender melhor o contexto em que esta proposta está inserida.

Voltando ao assunto central do texto…

Diferente do que acontece no waterfall , o modelo iterativo reduz o ciclo “requisitos — desenvolvimento — testes — implantação” ao menor tamanho possível, repetindo-o várias vezes com entregas pequenas de software em funcionamento. Esse ciclo mais curto e contínuo é chamado de iteração. Já os pequenos pedaços entregues a cada ciclo são conhecidos como incrementos. Por isso o nome “desenvolvimento iterativo e incremental”.

Um dos pontos mais interessantes desse modelo de desenvolvimento é que cada incremento gera uma versão praticável do software, o que torna a obtenção de feedbacks mais fácil, rápida e constante. Esses feedbacks frequentes reduzem muito as chances de fracasso do produto, já que permitem que erros e falhas sejam consertadas mais rapidamente.

Além disso, o modelo iterativo e incremental incentiva o aperfeiçoamento dos ciclos seguintes, ao tomar como referência os feedbacks obtidos nos ciclos anteriores. Depois dessa, fica fácil preferir este padrão ao modelo cascata!

Como aplicar o modelo iterativo?

Aqui na Aerochimps a gente utiliza o modelo incremental em todos os projetos. Temos sprints de duas semanas no qual definimos as features a serem desenvolvidas e quebramos o trabalho em pequenas tarefas. Depois disso, vem o desenvolvimento do “pedaço de software” que foi definido, e então os testes de uso.

Quando percebemos alguma falha durante o processo, corrigimos primeiro e só depois passamos para a etapa seguinte, dando sequência ao ciclo e melhorando o software a cada iteração.

Os ciclos constante e as entregas regulares são um ótimo jeito de validar o produto com o cliente e com o usuário sem que, para isso, ele precise estar completamente pronto.

Por onde eu começo?

Se você não sabe por onde começar para desenvolver iterativamente, vou tentar te ajudar sugerindo 3 passos:

1. Defina prioridades

Para isso, responda as seguintes perguntas: que funcionalidades esse produto deve ter? Por onde é melhor começar? Qual funcionalidade é mais importante ser disponibilizada para o meu público?

Neste primeiro momento, não detalhe as funcionalidades, apenas liste, junto com seu cliente, as prioridades e as organize de acordo com o grau de importância. A prática de listar e priorizar necessidades é chamada de backlog.

É bem possível que, à medida que o desenvolvimento avance, seja preciso reavaliar o backlog: mudar, eliminar, acrescentar novas necessidades ou repriorizar as antigas. Como é o cliente quem define o que é mais importante, é ele quem aponta as prioridades.

Esse tipo de análise contribui para que o produto seja sempre atual e supere as espectativas dos usuários.

2. Quebre as funcionalidades em grupos de entrega

Depois que você listou as prioridades, é preciso quebrá-las em pequenas tarefas e definir prazos para que sejam implementadas. Tendo sempre em mente que cada iteração entrega um pedaço de produto em funcionamento e que os sprints devem ter duração de uma a quatro semanas.

Sprint nada mais é do que um ciclo de trabalho. A duração deste ciclo é acordada entre o time e deve ter sempre a mesma duração. Para algumas empresas, uma semana é tempo suficiente. Para outras, o melhor é que as sprints durem quatro semanas. A cada sprint um conjunto de requisitos é implementado, tendo como resultado um incremento do produto em desenvolvimento.

Às vezes tarefas mais complexas exigem mais sprints para serem concluídas. Quando isso ocorre, é preciso fragmentá-las ainda mais.

Portanto, essa entrega deve ser planejada entre os times. Para que as metas sejam acalçadas, é preciso conhecer a sua capacidade de produção e a das pessoas que trabalham com você. Criar metas e prazos impossíveis de serem alcançados atrapalham o planejamento e desmotivam o time.

Se você achou essa parte muito complicada, fique tranquilo. Esse conhecimento só vem com o tempo. Por isso, paciência e persistência são fundamentais. No início, a tendência é errar o planejamento para mais ou para menos. Esse processo é normal e fundamental para que o time se conheça. Respeite esse momento e tenha a certeza de que isso será ajustado naturalmente, conforme aumente a experiência e o entrosamento do time.

Nessa parte, também é importante levar em consideração a prioridade (repassada ao time pelo cliente) e a complexidade das tarefas, de acordo com o feedback do cliente.

3. Planeje as entregas

Com base nas etapas anteriores, elabore um planejamento de entrega para cada iteração. Lembre-se de prever um período para integração dos produtos liberados e, se você estiver desenvolvendo um software, usar um controle de versão como o GitHub pode facilitar atualizações e soluções de eventuais problemas.

Depois, repita o fluxo para cada entrega. Desenvolvimento ágil não é sinônimo de bagunça. Principalmente se você está começando agora, é muito importante seguir o fluxo básico corretamente em cada ciclo para não se perder: requisitos > desenvolvimento > testes > implantação.

Com o tempo e muita repetição, ficará cada vez mais fácil lidar com as novas funcionalidades que surgirem dos feedbacks de clientes. Por isso, manter o desenvolvimento bem organizado e alinhado com o time pode ajudar muito no sucesso da sua startup.

Next Post:
Previous Post:
  • http://bizstart.com.br/ Rafael Leite – Bizstart

    Muito bom! O desenvolvimento ágil (e iterativo) é um dos pilares da Startup Enxuta (Lean Startup):
    – desenvolvimento ágil
    – desenvolvimento de clientes
    – utilização de software pronto
    Então #ficaadica: o caminho para uma startup de sucesso (te tecnologia) passa pelo desenvolvimento ágil de software!

  • Pingback: Como aplicar princípios ágeis na sua startup: entrega de valor()