Blog

BDD Scenarios should be automated

Last February, I had this conversation with an agile coach (AC) at an organization in an agile transformation:

AC: – “We started up on BDD today!”

Me: – “Really? That’s awesome! Automating scenarios?”

AC: – “No, just writing scenarios.”

Me: -“So it’s not BDD… It’s specification by Example.”

AC: -“Why not? BDD doesn’t need test automation.”

Me: -“We can say that’s half way to BDD. Scenarios shall be automated after writing it.”

After few minutes, no agreement.

Matriz de Ganhos e Perdas: Tomada de Decisão Sobre uma Meta

Ao final de 2015, eu precisava decidir de sairia de um emprego público no qual estava a quase 6 anos. Eu sabia dos benefícios de estar num órgão público, mas também sabia das oportunidades do mercado de TI – Tecnologia da Informação. Eu estava dividido. Uma confusão tomava conta de mim sobre decidir se partiria para a iniciativa privada.

Eis que lembrei de uma ferramenta muito útil sobre a congruência de uma meta. Congruência significa se a meta está realmente alinhada com seu momento de vida, com suas expectativas. A ferramenta é a Matriz de Perdas e Ganhos. Ou, como prefiro chamar, Matriz de Ganhos e Perdas.

Ao buscar uma meta, não temos apenas ganhos, mas também podemos ter perdas. E se não buscarmos a meta, mesma coisa. A ideia central desta ferramenta é tornar consciente os ganhos e perdas de buscar ou não uma meta.

Template da Matriz de Ganhos e Perdas

Confira o modelo a seguir, faça o download do template e preencha cada seção. Após isso, decida sobre buscar a atingir ou não a meta.

Lean Inception is About Making People Awesome

Lean Inception is a method to build a product focusing on Minimum Viable Products. MVPs like Lean Startup. It can help small or large organisations to realise what’s the priority to build next. It addresses a week-planned agenda with Product Development and UX techniques like Elevator Pitch, Personas, User Journeys, Brainstorming and Sequencing of Features, and the Canvas MVP, the proper result of a Lean Inception.

It was developed by the easygoing-geek genius Paulo Caroli from need. With his newborn son in 2011, it was virtually impossible to balance work and family running an old-fashioned Inception for weeks. More constrains, more creativity. Lean Inception was created to accomplish a product inception in a week.

A facilitator leads the process. Key business and product people do a kick-off presentation in the beginning about what shall be about the product, and for who. The team attends the entire 5 days agenda, presenting the results to those interested in the MVP(s).

However, even Lean Inception is a method, it’s not just about to build the next MVPs. As Dwight D. Eisenhower said “Plans are worthless, but planning is everything”. A perfect MVP planned is worthless without people engagement.

Lean Inception is about making people awesome, engaging them to build an awesome product.

Awesome because they are part of the process, part of the product. They feel like owners of the product, because they helped to decide what to build. Even business knows what to build and UX decided for who, it’s very important encouraging the team develop the product too, doing the Elevator Pitch and sketching Personas.

Take a look at the satisfied and happy people after a long day of the serious-fun training of Lean Inception. They are awesome. Photo taken at my first class as a Lean Inception trainer.

Discover more about Lean Inception at martinfowler.com/articles/lean-inception/ or reading the Lean Inception book.

Enterprise Agile Coaching: The Ivory Tower Syndrome

The Ivory Tower Syndrome happens when top management decisions are disconnected from the reality of the organization. Enterprise Agile Coaches are in the Ivory Tower when they are dealing with agile transformation decisions without spending time in the Gemba.

Gemba means factory flood in Lean manufacturing, which means where the Value Stream are really happening. If you are not looking into the place where the root problem is happening, it’s not easy to find a proper solution. Otherwise, are you working on plans and presentations? Thinking about process and tools? Hum…

I have been working as an agile coach since 2013. So in 2018, I worked as an Enterprise Agile Coach for six months. I was happy in the beginning, very hopeful to make impact in the organization. In the midst of it, I realized I was working mostly with managers, leadership, surveys, organizational assessments, that I was in the Ivory Tower. Ouch. That hurts. I was not happy, but hopeful. So when I perceived all that plans were not really happening, I felt being like a failure, then I had to ask to leave.

To avoid the the Ivory Tower Syndrome, the Enterprise Agile Coach must go to the Gemba. Not just going, but working on there with individuals and teams.

I believe the name Enterprise Agile Coach is wrong. Agile is about individuals and interactions. Coaching is about unleashing the best version of individuals and teams. It is a kind of contradictory having this name when the role is working far away from the value stream. Maybe the name Agile Transformation Consultant/Mentor/Specialist can be much better.

So there on the top where the Enterprise Agile Coach most works, in the Ivory Tower. Unless they are going to the Gemba.

There’s a Zen quote I remember about it.

“From the pine tree, learn of the pine tree; And from the bamboo, of the bamboo.”

Matsuo Bashō, Japanese poet

From the teams, learn of the teams. It doesn’t matter how much assessments, surveys, the Enterprise Agile Coach works on.There is no better assessment than going to listen to the teams and understand things that cold assessments would never tell.

Go to the Gemba everyday.

Como foi a meetup Mob Programming Workshop?

O que é Mob Programming?

Mob Programming é uma abordagem de trabalho em time, incluindo não apenas pessoas que desenvolvem código, mas também todos que fazem parte da criação do produto como designers, testadores, ScrumMasters, Product Owners. Tanto pessoas técnicas e quanto pessoas de negócio.

Imagine todo o time trabalhando na mesma coisa, ao mesmo tempo, no mesmo espaço, e no mesmo computador. É uma técnica de trabalho realmente em time, que além de gerar uma solução de alta qualidade, o compartilhamento de conhecimento é constante.

A meetup de Mob Programming

Dia 31/01 nos encontramos em Porto Alegre pela Meetup Agile Open Space, no espaço gentilmente cedido pela DBC Company. Por 2 horas discutimos Mob Programming e obviamente codificamos. Inclusive pessoas que nunca programaram na vida, nem em cursos.

Apresentei um problema real a eles, que realmente os engajassem. O problema era que eu sortearia uma inscrição para o workshop de um dia todo, que acontecerá dia 09/02.

Tínhamos 13 pessoas, incluindo eu, o facilitador que também iria programar. Pedi a todos organizarem suas cadeiras em forma de U em volta do telão, para que todos pudessem olhar os outros e também ficarem confortáveis ao olhar para o código projetado na TV.

Isso já faz com que as pessoas se movimentem, e ajudem no próprio espaço do workshop, um dos primeiros passos para engajarem as pessoas. Essa é uma dica de facilitação: todos ajudam e todos colaboram. Pessoas são serem sociais naturalmente, e quando ajudam o próprio grupo se sentem engajadas por um propósito. Fiz isso parecido no TDC 2018 em Poa, na trilha de XP. Evoluir o design físico pedido ajuda e feedback rápido dos participantes.

Pessoas que não codificam ou não sabem codificar participando do Mob Programming como drivers?

Questionei os participantes e descobri que haviam duas pessoas que nunca programaram, além da maioria não conhecer ou dominar Java, a linguagem que utilizamos no workshop. Isso era uma preocupação dessas pessoas, então questionei também se eles queriam participar voluntariamente como driver (quem codifica no teclado), além de serem navegadores (que guiam o driver). O legal é que todos se voluntariaram a serem drives, inclusive quem não sabia codificar!

Isso é realmente impressionante!

Fiquei bastante contente com isso, e com uma atenção em especial ao grupo todo para fluir bem na criação de um ambiente seguro, porque todos ali iriam expor suas habilidades, ou a ausência delas. A busca por ambiente seguro é absolutamente essencial em Mob Programming. Tanto que os valores de Mob Programming são Gentileza (Kindness), Consideração e Respeito. Por isso também que retrospectivas diárias são importantes em Mob Programming. Sim, diariamente. Pode ser no final ou no início do dia, como o time decidir. Ah, e não há reuniões diárias tradicionais, porque todos já trabalham juntos e a comunicação é a todo momento.

A rotação era de 3 minutos, com 13 pessoas, fecharia um ciclo de todos participarem e ainda teríamos tempo para uma retrospectiva de fechamento. Perfeitamente após o ciclo, completamos a solução com Test-Driven Development (TDD). Criamos dois testes em JUnit bastante significativos. Ok, não tivemos tempo para melhorar o código com refatoração, isso é algo que sabemos que faltou tempo, e que faríamos com certeza se houvesse um próximo ciclo de Mob Programming. Isso ficou na consciência do time, a importância de clean code. O código está no GitHub em https://github.com/dsmoura/mob-programming-workshop-pocket

A rotação do driver acontece num período maior de 3 minutos num time já utilizando Mob Programming há um bom tempo, normalmente entre 7 e 10 minutos. O tempo de rotação em 3 minutos é para tornar a melhoria contínua do processo mais rápida. Por isso uma retrospectiva a cada ciclo inicial de Mob Programming.

O time precisa usar Mob Programming o tempo todo?

Não. Mob Programming é uma forma de trabalho que o time precisa aprender e decidir quando melhor utilizá-la. Dentro da cultura da organização, se o time quiser utilizar Mob Programming o tempo todo, tendo antes experimentado e mostrado que a qualidade da solução é aprimorada e a produtividade está boa, quem sabe até excelente, por que não?

O que sugiro é o time experimentar Mob Programming um turno por semana, ou um turno por iteração/sprint. Quem sabe decidir quais tipos de tarefas ou histórias de usuário/requisitos serão melhor desenvolvidas com Mob Programming. Ou quem sabe para troca de conhecimento? Ou melhoria do padrão de código? O time deve experimentar e então decidir.

Mob Programming, tornando pessoas incríveis!

A expressão bastante utilizada pelo Woody Zuill, um dos que estavam presentes no time que criou Mob Programming, utiliza bastante a expressão Turn Up the Good (Aumente o que é Bom). Focar nas melhores qualidades das pessoas e do time. Isso vem muito de Psicologia Positiva, de se focar no que há de melhor nos indivíduos, nos times e nas organizações, e não tanto em problemas. Isso faz com que as pessoas se tornem e se sintam realmente incríveis. Agradeço a presença de todos participantes, na foto abaixo!

Como é um dia de trabalho num time e numa organização em Mob Programming?

Veja como é um dia de trabalho de um time em Mob Programming:
https://www.youtube.com/watch?v=p_pvslS4gEI

E veja como é diversos times trabalhando numa empresa em Mob Programming:
https://www.youtube.com/watch?v=dVqUcNKVbYg

Quer aprender na prática Mob Programming?

Dia 09/02/2019 haverá o workshop de Mob Programming em Porto Alegre https://www.sympla.com.br/workshop-de-mob-programming-uma-abordagem-agil-com-o-time-todo__446273

Você gostaria de praticar Mob Programming? Envie-me uma mensagem direta pelas redes sociais que com certeza lhe ajudarei.

Acompanhe os eventos, meetups e treinamentos que facilito em https://dionatanmoura.com/eventos/

Meetup Agile Open Space, Porto Alegre

Nova meetup Agile Open Space, Porto Alegre! https://www.meetup.com/Agile-Open-Space-Porto-Alegre/

A ideia é fazer open spaces e workshops, ou seja, tudo o que haja aprendizado ativo! E não aprendizado passivo (chato até).

Além do mais, sabemos que agilidade valoriza mais indivíduos e interações. Então ter palestras ou eventos de agilidade com pouca interação pode ser um tanto contraditório.

Palestras podem ser úteis, porém não geram tanto aprendizado.  Veja no cone/pirâmide de aprendizado onde a meetup Agile Open Space tem foco:

E dia 17/01 já tem um agile game! XP Playing Cards Game – Aprendendo eXtreme Programming com diversão! https://www.meetup.com/pt-BR/Agile-Open-Space-Porto-Alegre/events/257767540/

Vai ficar de fora?

Planeje 2019 desde já! Planejamento Pessoal por Metas Trimestrais por Ano

2019 está quase aí, e você já está se planejando sobre o que busca alcançar no próximo ano? Ou vai esperar março começar para reagir, e entrar no piloto automático até o próximo ano acabar?

Utilize o modelo de Planejamento Pessoal por Metas Trimestrais por Ano para planejar 2019 desde já.

Planejamento Pessoal por Metas Trimestrais por Ano

Como dica, reflita para cada objetivo pessoal seu “O que de incrível gostaria de alcançar em 2019?”

Saiba mais sobre Objetivos e Metas no livro do Mantra da Produtividade.