Manter a calma e ter orgulho. É esse o nosso objetivo aqui no Easy LMS. Parece-me bem, mas como é que chegamos lá? Nós gerimos por processos, e não por resultados. Queremos que os nossos processos melhorem, para obtermos melhores resultados. É por isso que usamos condições-alvo em vez de objectivos. Embora pareçam a mesma coisa, são totalmente diferentes. Vamos explicar porquê.
Explicação das condições e dos objectivos
Vamos começar com um exemplo real (de Toyota Kata: Gestão de Pessoas para Melhoria, Adaptação e Resultados Superiores) que provavelmente reconhecerá. Quer levantar-se de manhã e estar na sua secretária no prazo de uma hora. Se este é o seu objetivo pessoal e está atrasado, então tem de se apressar. Talvez ande em excesso de velocidade enquanto conduz, salte o pequeno-almoço ou não lave os dentes. Cortar caminho para atingir o objetivo. Se definir esta condição como um objetivo, tem de a dividir em subetapas que possa medir. Se não conseguir chegar ao trabalho numa hora, isso não é um problema, porque sabe em que subetapa pode melhorar. Assim, vamos decompor a condição de objetivo nas seguintes etapas:
Get up and take a shower | 10 minutes |
Get dressed | 10 minutes |
Eat breakfast | 20 minutes |
Brush your teeth | 3 minutes |
Put on your shoes and coat | 2 minutes |
Ride your bike to work | 15 minutes |
O resultado (o objetivo) deste processo é chegar ao trabalho a horas, bem alimentado, vestido, com duche, com os dentes limpos e sem pressas. Isso é do interesse de todos?
Ok, mas em que é que os alvos diferem das condições dos alvos?
Uma condição de objetivo é uma descrição dos processos no seu trabalho diário quando tudo corre bem.
Voltemos à teoria. Todos nós conhecemos a sensação de quando o trabalho não corre como planeado. As coisas demoram mais tempo do que se pensava, ou deparamo-nos com obstáculos pelo caminho. Muitas coisas podem correr mal. Uma condição-alvo é uma descrição dos processos no seu trabalho diário quando tudo corre bem. Uma condição de objetivo descreve como gostaríamos que fosse o nosso processo de trabalho e todos os seus subprocessos. É o estado futuro de um processo que se pretende atingir. A condição de objetivo dá-nos um sentido de orientação para as nossas melhorias. Como? Medimos o nosso processo de trabalho enquanto trabalhamos. Sempre que um processo não funciona como definido na condição de objetivo, temos de o analisar. Chamamos a isso uma "análise da causa raiz". Tentamos encontrar uma solução simples. A sua implementação aproxima-nos rapidamente do nosso estado desejado.
Compare isso com um objetivo. Um objetivo deve ser atingido. Tem de fazer tudo o que estiver ao seu alcance para atingir o objetivo, como no exemplo de rotina acima. O que parece uma coisa heróica a fazer, certo? Errado. É estúpido, na nossa opinião. Os objectivos levam ao stress, às horas extraordinárias e ao desapontamento com os objectivos não atingidos. Cria a oportunidade de cortar nos pormenores para atingir o objetivo. Isto prejudica a qualidade e a satisfação do cliente a longo prazo;
Se tivermos de cumprir um objetivo, não investiremos em melhorias de processos.
Além disso, se tiver de cumprir um objetivo, não investirá em melhorias de processos. As melhorias nos processos só se pagam com o tempo. O tempo gasto em melhorias prejudicará os resultados a curto prazo, é claro. Quando finalmente atingir o seu objetivo, ou não cumprir o seu prazo, pode olhar para trás e ver o que não correu como planeado. Mas, isso será dias ou semanas mais tarde, depois de o "passo em falso" ter efetivamente acontecido. Como já foi há muito tempo, o rasto estará frio e não terá qualquer informação útil sobre como atingir o seu objetivo da próxima vez. Perdeu a oportunidade de melhorar o seu processo.
Resumindo: os objectivos escondem as suas ineficiências e oportunidades de aprendizagem, enquanto as condições dos objectivos ajudam a tornar claro onde deve melhorar, está a observar e otimizar o processo em vez de se concentrar no resultado.
Se encontrar uma pequena solução que possa ser implementada de imediato, provavelmente não precisará de uma solução grande e dispendiosa.
Como utilizar as condições-alvo para melhorar
Voltemos ao exemplo da nossa rotina matinal. Na primeira manhã em que começa a medir, vê que vestir-se demora 20 minutos. Agora tem de fazer uma análise da causa principal. Quando começa a analisar, descobre que escolher a roupa demora 10 minutos. Perde-se 10 minutos com isso. Então, apresenta duas soluções:
Peça a sua roupa na noite anterior.
Compre um Porsche 911 para reduzir o tempo de viagem.
Ambas parecem ser soluções adequadas. Fazem-nos chegar ao trabalho a horas. Não é? Não, errado. Deixe-me explicar:
Se tem dificuldade em chegar ao trabalho a horas, provavelmente já foi aconselhado a preparar a sua roupa no dia anterior. Mas não se trata de uma verdadeira melhoria do processo. Escolher a roupa continua a demorar 10 minutos. Porque não ir para a cama 10 minutos mais cedo, acordar 10 minutos mais cedo e gastar os 10 minutos que demora? Uma verdadeira solução seria reduzir o tempo necessário: usar a mesma camisa ou gola alta, como faz Mark Zuckerberg ou Steve Jobs. Ou usar o mesmo conjunto de roupa todas as segundas-feiras e, se lavar a roupa, juntar essas roupas num monte. Ou reorganize seu guarda-roupa para que as roupas combinadas fiquem juntas em suas gavetas.
A solução para comprar um carro é muito grande. Não tem orçamento para o efeito. O prazo de entrega do carro é de duas semanas. Se encontrares uma pequena solução que possas implementar imediatamente, provavelmente não precisarás da solução grande e cara.
Vejamos alguns exemplos do Easy LMS
No Easy LMS, esforçamo-nos por obter um fluxo de um único item.
No Easy LMS, esforçamo-nos por ter um fluxo de um único item. Isto significa que queremos que uma história de utilizador seja capaz de fluir suavemente através do nosso processo de desenvolvimento sem esperar que outros itens estejam prontos. Quando começámos a trabalhar com esta condição de objetivo, não funcionou sem problemas. O ciclo, o tempo que demora entre o início do trabalho numa nova funcionalidade e a sua colocação online, era de 32 dias. Começámos a analisar os dados do nosso processo de trabalho para descobrir onde melhorar. Reparámos que as histórias ficavam paradas à espera de um lançamento. O nosso processo de lançamento foi a primeira coisa que quisemos melhorar.
Fazer dois lançamentos por semana
Lançámos o seguinte desafio: chegar a um fluxo de um único item no prazo de um ano. Para o conseguir, teríamos de definir diferentes condições-alvo para nos aproximarmos do nosso objetivo;
O primeiro objetivo que estabelecemos foi passar de um lançamento a cada duas ou três semanas para dois lançamentos por semana. Isto parecia quase inatingível:
Começámos a planear dois lançamentos por semana, à terça e à quinta-feira, e a ver o que encontrávamos pelo caminho. Sentamos e descrevemos os passos necessários para fazer o lançamento, e quem era responsável pelo quê.
O primeiro lançamento não foi como deveria. O desenvolvedor responsável pelo lançamento estava doente naquele dia. O resto dos programadores foram afectados a outro projeto. A solução foi automatizar e programar o lançamento para que não dependesse de acções manuais. A automação colocou o release no servidor de staging no início da manhã de terça e quinta-feira, pronto para o teste de aceitação a ser executado por Caroline (QA/QC).
O próximo gargalo que encontramos foi Caroline. Ela é responsável por terminar o lançamento, mas naquele dia ela estava realmente ocupada gerenciando os tradutores, para ter tudo traduzido do lançamento anterior. Melhorámos o nosso processo de tradução, o que é uma história completamente diferente, para que a Caroline tivesse mais tempo para se concentrar nos testes. Estou a ouvir-vos a pensar, porque não contratar mais um testador? Na altura, não tínhamos orçamento para contratar um testador extra. Usar metas parece ser uma solução plausível para o problema, mas contratar pessoas extras não é uma melhoria real do processo.
Após dois meses e muitos pequenos melhoramentos, conseguimos chegar a dois lançamentos por semana;
Para a próxima condição alvo, voltámos a nossa atenção para diferentes partes do processo de desenvolvimento. À medida que melhorávamos o nosso processo de trabalho, mais e mais histórias fluíam através do processo de desenvolvimento. Como resultado, os lançamentos tornaram-se maiores. As versões maiores demoram mais tempo. Por vezes, não conseguíamos terminar uma versão antes de a versão seguinte estar pronta. Isto fez-nos falhar a condição de objetivo de dois lançamentos por semana.
Como passámos de dois para quatro lançamentos por semana
Para resolver este problema, os lançamentos tinham de ser mais pequenos. Decidimos definir a próxima condição de meta para fazer um lançamento quando quatro histórias estivessem prontas para serem lançadas. Isto resultou em lançamentos mais frequentes e mais pequenos. Recentemente, aumentámos a fasquia e reduzimos o número de histórias num lançamento para duas. Estamos quase a fazer uma implementação de um único item
Passar de dois lançamentos a cada duas ou três semanas para quatro lançamentos por semana é um grande avanço. Para lá chegar, fizemos montes de pequenas melhorias e algumas maiores, como automatizar quase todos os testes de aceitação;
Duração do ciclo
Como resultado dessas condições, reduzimos o tempo de ciclo de uma história de 32 dias para seis dias.
Ao longo do caminho definimos e melhorámos a descrição da condição alvo, aprendemos muito e reduzimos muito desperdício. Como resultado dessas condições alvo, reduzimos o tempo de ciclo de uma história de 32 dias para seis dias - com código de melhor qualidade, menos distracções, quase sem hotfixes e pessoas mais felizes.
O que é que isto significa para a cultura da nossa empresa?
Dizemos sempre que o fracasso não é uma coisa má, desde que se aprenda alguma coisa. Se tivermos uma condição-alvo, saberemos realmente quando estamos a falhar e o que precisamos de aprender. Assim, o fracasso leva à aprendizagem.
Somos ávidos aprendizes. Cumprimos todos os objectivos? Então não aprendemos o suficiente e devemos estabelecer uma nova condição, mais rigorosa e mais desafiadora, que nos leve ao fracasso novamente. Isto leva-nos a uma aprendizagem contínua.
A aprendizagem é a condição mais importante para nós, para sermos uma empresa bem sucedida e sustentável. Aprender a melhorar é o primeiro passo desta curva de aprendizagem.
Curioso sobre a nossa cultura de trabalho especial? Explore a nossa secção Trabalhar na Easy LMS para saber mais!
Ir para Trabalhar no Easy LMS