Que coisas ou fatores podem tornar times de tecnologia mais produtivos? Essa palestra é para você que está na jornada de buscar mais produtividade dentro dos times de tecnologia da sua empresa.
para alcançar as metas digitais “As empresas esperam que grande parte de seu crescimento de curto prazo seja impulsionado pelo digital, mas o impacto continua elusivo. Além disso, faltam estruturas organizacionais eficazes, responsabilidade e métricas e incentivos significativos. À medida que os executivos se envolvem mais nos esforços digitais, eles devem trabalhar para garantir que suas estruturas e processos de negócios sejam configurados para aproveitar ao máximo as oportunidades que os esforços digitais oferecem”
Fordismo para descobrir como otimizar o trabalho das pessoas O argumento de Taylor sobre e fi ciência passa pelo entendimento de que era necessário escolher as pessoas certas e treiná-las nas funções que iriam desenvolver. Já ouviu por aí esse argumento? Num trabalho que exige uma técnica repetitiva, isso pode até ter algum sentido, mas quando lidamos com criatividade pra resolver problemas, dos mais variados, essa perspectiva não cabe. Frederick Taylor
de fábrica, num contexto onde é crucial pensar em como resolver problemas das maneiras mais criativas, causa uma perda de inovação e de surgimento de potenciais ideias que podem gerar mais benefícios para os clientes ou empresa. O trabalho do conhecimento envolve uma série de fatores que vão além de ter pessoas certas ou bem treinadas.
em trabalhadores do conhecimento, mas algumas vertentes tem seguido o caminho de diminuir a quantidade de contextos e tornar a carga cognitiva de conhecimento mais simples.
de um time de pesquisa que foi responsável por elencar 4 principais métricas que indicam a performance de um time: ⁃ Deployment Frequency - quantas vezes um time/organização consegue entregar em produção com sucesso; ⁃ Lead Time for Changes - quanto tempo leva desde o primeiro commit até estar em produção ⁃ Change Failure Rate - Porcentagem de falhas nos deployments em produção ⁃ Time to Restore Service - Quanto tempo se leva para recuperar de um incidente em produção. ⁃
fl uxo de entrega de código, desde ferramentas de CI/CD, até de observabilidade e resiliência. A grande questão por trás dessas métricas, é que elas servem para nortear ações, e não exatamente de fi nir se estamos produtivos ou não Veja que, deployment frequency alto pode signi fi car alta capacidade produtiva, mas nem sempre signi fi car entregas e fi cazes.
que não existe “ser” produtivo, mas “estar” produtivo. Isso signi fi ca que o meio em que as pessoas estão trabalhando in fl uenciam o “estar” produtivo. Precisamos entender que individualizar produtividade pode ser um erro gigante. Os aspectos sócio-técnicos do trabalho in fl uenciam 100% o quanto as pessoas podem “estar” produtivas.
estuda a relação entre aspectos sociais e tecnológicos, entre os sistemas (um grupo de partes interativas e interdependentes que forma um todo complexo). Esses fatores afetam diretamente a experiência das pessoas desenvolvedoras. Exemplos de fatores: interrupções, ferramentas de desenvolvimento que causam fricção no trabalho, código mal organizado, tarefas não claras.
velocidade de resposta para algumas ações serem feitas. Por exemplo, tempo de compilação, tempo pra rodar a suíte de testes, tempo pra code-review, entre outros assuntos. Quando esse tempo é muito grande, possivelmente as pessoas vão trocar de tarefas esperando essas fricções se resolverem, ou até mesmo fi car aguardando - gerando frustração e menos velocidade nas entregas. Diminuir esse loop é importantíssimo! https://queue.acm.org/detail.cfm?id=3595878
mental requerido para uma pessoa executar um trabalho. Exemplos de coisas que podemos observar quando há alta carga cognitiva, é a quantidade de serviços que um time precisa lidar, complexidade ou alto acoplamento de código, di fi culdade em descobrir causas de incidente, demora para novas pessoas no time estarem prontas para executar o trabalho. Times que tem muitos domínios sob sua responsabilidade provavelmente sofrem com alta carga cognitiva.
super fi cial do contexto de negócio; • Demora pra ganhar contexto novamente sobre o domínio, diminuindo a produtividade; • Baixo conhecimento sobre a arquitetura ou o ecossistema que o domínio abrange; • Aumento do tempo para corrigir e identi fi car problemas; • Alta demora na recuperação de incidentes (MTTR - mean time to recovery); • Sobrecarga de assuntos, o que pode levar à fadiga mental e stress; • Di fi culdade ao lembrar de detalhes importantes das jornadas; • Fadiga na tomada de decisão - tende-se a tomar decisões mais pobres por conta da quantidade de assuntos pra lidar; • Tempo de onboarding mais alto para novas pessoas no time;
domínios sob sua responsabilidade. Alguns desa fi os eram constantes, como a priorização de iniciativas, de fi nição dos objetivos, o entendimento do capacity dos times e o stress que o time tinha ao ter que buscar informações de fl uxos que nem sabiam que tinham responsabilidade.
sensação de "ecstasy" e clareza; • você sabe exatamente o que você quer fazer de um momento para outro; • o senso de tempo desaparece; • você esquece de você mesmo; • você se sente parte de algo maior. Photo by Mulyadi on Unsplash
desenvolvendo software, essa sensação acontece quando estamos tão imersas ou imersos no código que esquecemos a hora e a realização ao ver a conclusão de uma entrega (por exemplo, um endpoint de uma API funcionando como deveria, ou um trecho de código executando algo de forma perfeita) gera um grande prazer e alegria. Ver as coisas funcionando depois que você fez aquele código é uma sensação realmente diferente.
• Troca de contexto e falta dele • Interrupções no fl uxo de trabalho • Distrações • Espera por clareza do trabalho • Barreiras de comunicação • Falta de conhecimento/skills • Reuniões desnecessárias • Dependências externas ou de outros times • Expectativas irreais ou não claras;
carga cognitiva. Se as pessoas do time precisam parar pra ganhar contexto do trabalho, buscar informações para ter clareza do trabalho a ser feito, por conta da falta de contexto e das dependências não explícitas ou não declaradas, di fi cilmente vão conseguir encontrar o estado de Flow.
chegam, como elas são escolhidas pelas pessoas, como elas tiram dúvidas (se tiram), como o trabalho fi ca visível, que passos normalmente acontecem durante essa jornada.
por falta de conhecimento do time. Muitas vezes as pessoas estão lidando com muita informação e contexto pra fazer o trabalho. A complexidade dos assuntos que um mesmo time cuida pode ser a causa de ine fi ciência. É importante entender o quê do trabalho em si parece gerar fricção e atrapalhar as pessoas de terem espaço pra pensar e criar boas soluções. Às vezes uma estrutura de time mais enxuta e com domínios claros pode ser mais efetiva do que um time grande e com muitas responsabilidades
seu time entrega o código, testa, roda localmente, pode abrir um leque de oportunidades de melhorar a produtividade das pessoas. Monolitos altamente acoplados tendem a diminuir a velocidade do time. O nível de complexidade e acoplamento afeta diretamente o poder de resolver problemas.
Usar métricas como metas é um erro clássico. Metas moldam comportamentos. Então se você colocar metas pra reduzir tempo de code-review, você pode gerar problemas de qualidade (as pessoas vão apenas aprovar rápido, pra bater a meta de diminuir time to review) Abra as métricas com seu time, e deixe claro o objetivo de visualiza-las, tirando o caráter de cobrança ou de meta.
Se precisar de ajuda com assuntos relacionados a liderança, arquitetura de software, design organizacional e cultura de engenharia, me manda um email no:
Csikszentmihalyi | Goodreads. • The Principles of Product Development Flow: Second Generation Lean Product Development (English Edition) - eBooks em Inglês na Amazon.com.br • DevEx: What Actually Drives Productivity • Mckinsey study: The digital tipping point