29 abril 2008

Lean: Set-based Development

Set-based Development
Lean é sobre comunicação: ampliada, direta, explícita, holística e ativa. Como mais uma ferramenta para ampliar o aprendizado, vou explicar o conceito de Set-Based Development: simples, mas bastante eficiente!

Imagine a situação: você quer fazer um jantar para os seus amigos! Um macarrão ao vôngole! (vulgo berbigão da lagoa para os manezinhos da ilha)

Qual a maneira mais antiga de se fazer isso? Ligando para cada uma das pessoas e avisando que o jantar será no sabado!
Mas uma questão importante para esta sua escolha é que você não está levando em consideração que seus convidados podem não estar disponíveis num sabado à noite para um jantar...

Mas como você é realmente um cara esperto, não vai logo marcando a data do jantar... afinal, você precisa saber se os seus amigos estarão disponíveis! Como você procede?
Escreva a lista de seus convidados:

- Huguinho
- Zezinho
- Pamela Anderson
- Mônica Mattos
- Jenna Jameson

Agora você precisa ligar para todos e saber quando eles estarão disponíveis.
Imaginemos a seguinte disponibilidade:

- Huguinho: Quarta, Sabado
- Zezinho: Quarta, Quinta
- Pamela Anderson: Todos os dias
- Monica Mattos: Segunda, Sexta, Sabado
- Jenna Jameson: Sexta

Bem, Set-Based Development sempre será à respeito de Restrições, não escolhas. Isto significa dizer que, à partir dos dados coletados sobre todos os convidados, pode-se tomar uma decisão mais acertada sobre quando será o jantar: sexta-feira!! Realmente a melhor opção...


E o que isso tem com desenvolvimento de software?



Contratar as moças acima fará com que os desenvolvedores trabalham mais... ou pelo menos que eles cheguem mais cedo... =)

No exemplo acima, para encontrar a solução de um problema, foi necessário coletar informações sobre as restrições que os vários domínios possuem, esperando para que uma decisão seja tomada somente no momento em que se possui o maior conhecimento sobre as várias opções.

Ao desenvolver uma funcionalidade, pode ser necessário decidir sobre um caminho. Esta abordagem supõe que se tenha mais informações sobre as possibilidades antes mesmo de escolher para onde seguir.
Significa dizer que, dados os domínios, a melhor solução pode ser encontrada definindo qual a intersseção entre eles. A figura abaixo exemplifica isso:

Set-based development


Quando existem várias equipes organizando o trabalho a cerca de um mesmo projeto, esta pode ser a forma mais simples de evitar desperdício de comunicação. Durante a produção de um item será possível avaliar a conformidade com as restrições dos grupos envolvidos.

Em produção de carros, é o mesmo que os engenheiros definirem a disposição do chassis do carro, e deixar que os designers façam o trabalho de produzir o carro mais lindo do mundo. Antes de tomarem decisões malucas sobre como será o carro, os designer podem conformar seus modelos com as restrições de chassis...

- Checklists podem ser úteis!

Você consegue identificar quais são as restrições para uma funcionalidade ou requisito de negócio? Restrições de usabilidade que os usuários alvo possuem?
Antes de decidir qual ação tomar, verifique as possibilidades que você possue e escolha a solução que melhor se encaixe no seu objetivo: construir software que satisfaça seu cliente

[]s

Nenhum comentário:

Postar um comentário