Ateliê de Software
3 anos depois
Gustavo Maultasch
Chefe da Divisão de Informática do Itamaraty (MRE)
Caixa Econômica - PEDES - 13/03/2018
- Aplicações bem feitas
- Código
- Performance
- UX
- Com testes automatizados
- Permitem evolução segura
- Que resolvam problemas reais
- E que satisfaçam clientes
O que buscamos
= alta qualidade
Histórico
Posto de trabalho
(até 2010)
Fábrica de software
2 contratos (2011 a 2015)
- Waterfall
- Ponto de Função
Ateliê de software
(desde 05/2015)
- Lean
- Métrica própria
Problemas
- Baixa quantidade de entrega
- Contratada sem incentivos
- Exigência de muito controle/esforço de nossa parte para manter produtividade
- Ausência de demandas, por exemplo, é apenas problema nosso
- Assuntos de RH acabam caindo em nosso colo
Ineficiente e caro, mas razoavelmente funcional
Problemas
-
Atrasos surreais
- 2 anos (ou nunca entregues)
-
Baixíssima qualidade nas entregas
- +50 bugs (em 1 entrega)
- Altíssimo turn-over
Entrega ZERO
Problemas com o modelo
Métrica (ponto de função)
Filosofia/concepção (fábrica)
Metodologia (Waterfall/RUP)
Processo industrial de desenvolvimento
Divisão de tarefas
Controle estrito do processo
+
=
Esquece-se da importância de uma equipe altamente qualificada
- Programação não é atomizável
- Programação não é repetitivo
- Deseconomia de escala
Processo industrial de desenvolvimento
- Entregas lentas
- Pouca iteratividade
- Dificuldade de lidar com mudanças
- Remuneração por papel (paradoxo do lucro-papelada)
- Muita responsabilidade na mão do cliente
- Cliente lendo caso de uso?
- Software ou álibi?
Lenta agregação de valor
Problemas do Ponto de Função
- Medida do escopo ≠ Medida do recurso e do tempo (Baixa legibilidade)
-
Não permite remunerar a qualidade
- Ex.: testes automatizados, front-end rico
- Não permite remunerar evoluções de processo
- Geralmente fixo em contrato/roteiros/manuais
Alguns anos depois...
Software Craftsmanship
- Craft
- Espécie de arte/artesanato de alta qualidade
- Ex: móvel de design feito a mão:
- Precisa funcionar
- Bom design, bom acabamento, boa durabilidade
- Ex: móvel de design feito a mão:
- Espécie de arte/artesanato de alta qualidade
- Ética do craft - profissionalismo
- Fazer algo bem feito pelo dever de se o fazer
- Responsabilidade pessoal pelo seu produto
Software Craftsmanship
- Software: craft é uma metáfora melhor
- Desenvolver software não é atividade fabril
- Atividade emergente de aprendizado e criação (não redutível a processos bem definidos)
- Práticas técnicas (XP)
- Não basta funcionar; tem de ser bem-feito
- Confiabilidade, Manutenibilidade
-
Equipe altamente qualificada é o centro de tudo
- Nenhum processo vai te salvar
Ateliê de Software no MRE
3 anos depois...
- Entrega de valor (aplicativos úteis e bem feitos)
- Redução do custo
- Lean
- Foco no fluxo, na entrega; melhoria contínua; backlog único priorizado; limitação do WIP
- Equipe altamente qualificada (full stack; diversos projetos)
- Tecnologia
- API first (back e front); orientação a serviço
- Alta cobertura de testes unitários
- Novas tecnologias (ZF2/3; nodeJS; Angular/React; Docker)
- Rastreabilidade completa (ALM)
- Pipeline todo automatizado
- Feature flags / canário
- Deploys diários sem drama
O ateliê de software
- O problema: perda de tempo para a solução de problemas laterais (ex: 60-80% em administração)
- Consequência: menos tempo dedicado às atividades diplomáticas
- Solução esperada: sistema tradicional de GED
- Solução implementada: comunicação simplificada, desburocratizada, menos hierarquizada
Exemplo inicial: edocs
- Não é documento escaneado
- UX e menção alteram forma de trabalho
- Linguagem mais coloquial
- Antes: "Senhor Diretor, Muito agradeceria o obséquio de Vossa Senhoria no sentido de considerar a concessão, com vistas ao adimplemento das formalidades inerentes ao trabalho desta Divisão, de um carimbo. Respeitosamente, Fulano".
- Menção altera o fluxo e a colaboração
- Desburocratização; redução de formalismos
- Linguagem mais coloquial
- Novas funcionalidades: hashtags; e feed com upvote/downvote (reddit)
edocs
- Não é uma "revolução"
- Risco: "culture eats strategy for breakfast" (Drucker)
- Mas é uma mudança gradual na cultura
- Mais colaboração, menos formalismo
- Além disso: é parte de um longo projeto para trazer o "social" para dentro da organização
- Menos e-mail
- Mais wikis, feeds, chats, controle de reputação (stackoverflow) etc.
- Mais plataforma, menos workflow
edocs
Aprendizados
- Conhecer (e explicar) bem sua capacidade
- Limitação do número de projetos (WIP)
- Alinhamento com a alta gestão
- Ferramenta de ALM
- Responsabilidade assumida pela TI (sem álibis)
- Com o devido poder sobre o projeto ("ultimatos", cancelamentos)
- Investimento "agressivo" em capacitação
Aprendizado 1: a gestão da TI deve estar bem organizada
Aprendizados
- Full-stack
- Sem divisão de perfil (requisitos, analista etc.)
- Não há equipe separada de testes/QA
- Diligência prévia de capacidade
- Pirâmide invertida (senior >= pleno >= junior)
- Rodízios (ferramenta de ALM; projeto; back/front)
- Estudo de código
- Novas tecnologias - Labs/Dojos
Aprendizado 2: a equipe de devs deve ser altamente qualificada, motivada e com senso de responsabilidade
Aprendizados
- Funcionar é o mínimo
-
Pixel-perfect
- Recusa de entregas por defeitos mínimos
- Devs responsáveis pela aplicação em produção
Aprendizado 3: expectativa alta contribui para a qualidade
Aprendizados
- Delegação de responsabilidade aos devs
- Equipe exigida em tudo, do negócio ao deploy
- Mas...:
- Autonomia de trabalho
- Respeito à opinião técnica (inclusive prazos)
- Divisão do risco
- PO é sempre da TI
- Problemas são vistos como oportunidades para melhoria contínua
Aprendizado 4: responsabilidade deve ser retribuída com poder e respeito
Aprendizados
-
Começamos com "scrum simplificado" e fomos o adaptando...
- Melhoria contínua (insatisfação construtiva)
- Retrospectivas e lições aprendidas
- ...e chegamos ao Lean Kanban e ao "um método por projeto"
- Conforme a necessidade de agregação de valor da sprint
- Muita comunicação
- Requisitos às vezes implícitos: quando o custo de refinar é maior do que o de aprimorar
- Criatividade diante de desafios (Taiichi Ohno)
- Visão de produto > visão de projeto ("Manutenção"?)
Aprendizado 5: processo é menos importante do que criatividade
Aprendizados
- Repertório de estimativas próprio e atualizável
- Permite remunerar testes unitários, spikes, protótipos, análises exploratórias etc.
- Baseada em esforço (avaliação empírica)
- Lembra um "WBS" do PMBoK
- Definição da produtividade diária (7 USTs/dia)
- Redução do custo!
Aprendizado 6: métrica própria baseada em esforço real funciona melhor
Aprendizados
- Nada é remunerado sem aprovação prévia
- Eventuais erros/imprevistos são arbitrados em boa-fé
- Nada é remunerado sem entregável; mas, mais ainda:
- Nada é pago sem código, e na produção
Aprendizado 7: aprovação prévia é fundamental
Desafios
- Modelo de terceirização dificulta investimento em pessoal
- Contratada de TI como headhunter
- Promoção ao longo do próprio contrato
- Faturamento da empresa deveria ser maior
- "Furos no cano"
- Evitar o conforto (melhoria contínua)
- Desafios técnicos (testes de front, deploys etc.)
Equipe do TR
- Min. João Pedro
- Min. Nestor Forster
- OC Thiago Weiprecht
- ATI Adriano Soares
- ATI Anderson Braga
- ATI Gustavo Macedo
Agradecimentos
- Alexandre Gomes
- Flávio Alves
- Ricardo Poppi
A toda a equipe do MRE
Referências
- McBreen, P. Software Craftsmanship: The New Imperative
- Sandro Mancuso
- https://www.youtube.com/watch?v=9OhXqBlCmrM
- Robert C. Martin
- https://www.youtube.com/watch?v=QJxXUQIeB6E
- The Programmer's Oath
- http://ronjeffries.com/articles/015-11/oath/
- Manifesto for Software Craftsmanship
- http://manifesto.softwarecraftsmanship.org/
Obrigado
@ghmol
slides.com/gustavohmo
Ateliê de Software do MRE – Workshop Caixa
By Gustavo H. Maultasch de Oliveira
Ateliê de Software do MRE – Workshop Caixa
Apresentação realizada em workshop da Caixa Econômica Federal, em 13/03/2018.
- 1,068