Recentemente Joshua Kerievsky, postou as principais diferenças entre as práticas da comunidade ágil e da comunidade de lean startups.
Segundo Joshua, Lean Startup é um método disciplinado, cientifico e lucrativo para descobrir e construir produtos e serviços em que as pessoas se apaixonem.
Lean Startup faz o melhor de ágil ficar mais lean e combinado ao brilhante processo de Customer Development.
Na minha visão, ágil e lean startups tem muito em comum, e na verdade podem ser complementares. Não entendo que as práticas adotadas pelas startups de maneira alguma possam ferir principios ágeis. Lean Startups utiliza formas diferentes (inclusive mais eficazes em muitos contextos) de representar a mesma essência. É importante porém entender que Lean Startups tem uma intersecção com ágil, no diz respeito ao desenvolvimento de software, mas vai além.
A idéia portanto, não é provar o que é melhor, mas explorar as diferenças. Isso dito, vale analisar algumas diferenças das práticas das duas comunidades, destacados por Joshua:
Agile |
Lean Startup |
|---|---|
| Product Roadmap | Business Model Canvas |
| Product Vision | Product Market Fit |
| Release Plan | MVP (Minimal Viable Product) |
| Sprint | Kanban |
| Sprint Review | Pivot or Persevere Decision |
| On-Site Customer | “Get Out Of The Building” |
| User Story | Hypothesis |
| Backlog | “To Learn” List |
| Definition of Done | Validated Learning |
| Red-Green-Refactor | Learn-Measure-Build |
| Customer Feedback | Customer Validation |
| Acceptance Test | Split Test |
| Velocity | AARRR |
| Mock Object | Feature Fake |
| Continuous Integration | Continuous Deployment |
| Certified Scrum Master | Customer Success Manager |
É com grande satisfação que anuncio que o artigo que escrevi sobre Kanban finalmente foi publicado na Java Magazine 84.
Este artigo apresenta uma introdução ao método Kanban. Para isso, descreve os passos para implantá-lo em uma equipe de desenvolvimento de software, aborda a criação de um card wall que represente o processo e cartões que representem itens de trabalho, além da definição da cadência de reuniões e outros eventos importantes para o ciclo de desenvolvimento.
Kanban permite que um processo seja otimizado de acordo com um contexto específico, aderindo a diferentes tipos de equipes e projetos. Geralmente causa pouca resistência a mudanças por parte das pessoas e da organização, ao passo que ajuda a equipe a manter um ritmo sustentável e previsível através de um fluxo contínuo de trabalho, conquistado em virtude da definição do limite de trabalho em progresso.
Para quem tiver mais interesse, há também uma apresentação sobre o tema que fiz no Bluesoft Labs:
Fábio Akita, recentemente publicou uma entrevista com o famoso Uncle Bob Martin, grande personalidade da comunidade de desenvolvimento de software, métodos ágeis e software craftsmanship.
Uncle Bob é, sem dúvida, um grande exemplo para todos nós desenvolvedores de software, apesar de seus 46 anos de experiência com desenvolvimento de software, ele nunca parou de aprender. Programadores não devem nunca pensar que a linguagem que aprendem na faculdade ou que utilizam agora são A linguagem, ao invés disso, devem abrir suas mentes e estar sempre aprendendo uma nova linguagem de programação, disse ele.
Se você programar somente em Java, por exemplo, e não for além disso, você será um programador muito fraco, porém se for em busca de aprender novas linguagens e aprender novos paradigmas você voltará para o seu Java com muito mais conhecimento e será ainda mais eficiente, afirmou Bob. “Eu, por exemplo, estava aprendendo Ruby e agora estou estudando Clojure”, disse.
Depois de ter escrito o livro Clean Code (Código Limpo), Bob está escrevendo um outro livro agora, chamado Clean Coder (Codificador Limpo), falando sobre como gerenciar o tempo, como lidar com pressões, como estimar, como lidar com chefes, etc. Estamos aguardando ansiosos pela nova publicação.
Bob disse que toda boa idéia que fica popular, tornar-se um hype, muita gente usa isso para seus próprios interesses, muitas vezes invertendo os propósitos. Cuidado! Escolha bem quem o ajudará a aprender métodos ágeis. Volte as fontes, busque os livros de quem estava lá no inicio. Martin Fowler e Kent Beck, são ótimas referências.
Muita gente está agora em ágil, defendo ágil, alerta Bob, mas está apenas pela corrida do ouro, ou seja, não conhecem e nem acreditam nos princípios e valores dos métodos ágeis, apenas estão ensinando ou utilizando ágil para manter-se lucrativos em virtude do movimento do mercado que está sendo impulsionado pelo hype.
Veja o vídeo da entrevista, que foi gentilmente disponibilizado sob a licença Creative Commons pelo Akita.
http://blip.tv/play/AYHm7HIC
Siga os conselhos de Uncle Bob Martin, aprenda como um louco, leia, leia, leia.
Um dos pilares que sustentam a filosofia da Toyota é respeitar as pessoas, e em se falando de Lean Software Development e Desenvolvimento Ágil de Software, não poderia ser diferente.
Respeitar as pessoas significa dar a elas um ambiente de trabalho limpo e seguro, permitir que tenham metas praticáveis e realistas, confiar nelas, significa também, desenvolver uma organização onde as pessoas possam pensar e descobrir as melhores formas de executar seu trabalho ao invés de simplesmente receber ordens de o que e como fazer. É permitir que as pessoas tenham oportunidade de conhecer profundamente seu trabalho, refletir sobre ele e melhorá-lo. E não há trabalho algum que não possa ser melhorado.
Pare e pense. O que você pode fazer para melhorar o seu próprio trabalho?
Para ser produtivo é essencial ter sempre em mente o objetivo por trás de tudo que se está fazendo. O propósito deve estar bem claro.
É muito comum nos dias de hoje que as pessoas façam suas atividades sem ter verdadeira consciência do por que, da razão pela qual estão fazendo e qual resultado desejam alcançar.
Sem ter uma definição clara do propósito pelo qual se está fazendo determinada atividade, e qual é o objetivo é impossível medir se está indo bem ou se mal. Não há possibilidade de vencer ou ser derrotado, pois não se sabe o que é derrota ou vitória.
Para ter certeza de você sabe exatamente qual é a razão das atividades que você está fazendo, crie o hábito de perguntar-se: por quê?
Ter objetivos claros dá suporte à tomada de decisões, uma vez que todas as decisões tomadas devem estar alinhadas ao objetivo. Ter um objeto é como ter um norte, uma direção, não tê-lo é como vagar no deserto em círculos. Nas palavras de Stephen Covey, autor do livro “Os 7 Hábitos das Pessoas altamente Eficazes”:
“Começar com o objetivo em mente significa começar tendo uma compreensão clara do destino. Significa saber para onde você seguindo, de modo a compreender melhor onde você está agora e dar os passos sempre na direção correta.”
Ter objetivos claros motiva, permite que tenha noção de progresso, ajuda a manter o foco, dá visão, abre as portas da criatividade, uma vez que se em mente o resultado que deseja alcançar.
Em se tratando de trabalho em equipe, quando não se tem objetivos claros, a situação pode agravar-se ainda mais, pois cada um pode seguir por caminhos diferentes tomando como referencial sua interpretação pessoal de objetivo.
Por essas razões metodologias ágeis como Scrum reforçam a importância de se ter metas bem definidas, é o Sprint Goal. Toda a equipe deve estar alinhada em relação às expectativas de sucesso do cliente. Devem ter claro o que se deseja ter como resultado e dessa forma todos poderão remar na mesma direção tomando decisões, por menores que sejam sempre alinhadas ao objetivo.
É pelo mesmo motivo, que existe a definição de pronto, este como se fosse um micro-objetivo de cada tarefa, atingir o estado de pronto, que deve estar bem definido de forma que todos possam compreender e identificar a diferença entre uma tarefa completa e uma incompleta.
Em uma reunião de retrospectiva, por exemplo, é essencial que todos tenham consciência que o objetivo é tornar a equipe melhor, caso contrário, pode transformar-se em um mero jogo de culpa, perda de tempo e investimento.
Não faça as coisas de forma mecânica, faça de forma consciente, entenda o porquê.