Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[CODECON] Desmacarronando código: um caso de refatoração

[CODECON] Desmacarronando código: um caso de refatoração

Já trabalhou com aquele código super legado, que é pior que aqueles postes de fio que estão prestes a explodir? Nessa palestra mostrarei como saímos de um código desses, que era quase impossível de mexer, para um em que conseguíamos incluir funcionalidades em apenas algumas horas

Camila Campos

April 21, 2021
Tweet

More Decks by Camila Campos

Other Decks in Programming

Transcript

  1. Desmacarronando código: um caso de refatoração

  2. @camposmilaa Camila Campos Tentando reduzir desigualdades sócio-culturais dentro de tecnologia

    através da educação e do bom humor.
  3. @camposmilaa Camila Campos Rails Girls São Paulo & Women Dev

    Summit & Ruby Summit BR & SumUp
  4. sumup.com.br/carreiras

  5. Desmacarronando código: um caso de refatoração

  6. Agenda Contexto Time, Projeto & Pessoas Entrega Primeira versão do

    projeto Desmacarronação Como foi todo o processo de refatoração 1. 2. 3. Conclusões O que aprendemos com tudo isso 4.
  7. youtu.be/NFEqH9rS3IY

  8. Contexto 1.

  9. Estou na SumUp desde Set/2020..

  10. ... mas esse causo se passa na ex-firma

  11. Time de Crédito Auto, desde Set/2019

  12. Nesta época...

  13. Decisões manuais (feitas por analistas de crédito)

  14. Decisões manuais (feitas por analistas de crédito) Reprovações automáticas (cerca

    de 10% das análises)
  15. Decisões manuais (feitas por analistas de crédito) Reprovações automáticas (cerca

    de 10% das análises) Codebase de 3 anos (decisões manuais e reprovação automática)
  16. Atrasos (prazo estourado, complicações e muito chão) Decisões manuais (feitas

    por analistas de crédito) Reprovações automáticas (cerca de 10% das análises) Codebase de 3 anos (decisões manuais e reprovação automática)
  17. Nossa ambição...

  18. Implementar decisões automáticas

  19. Objetivo 10% de rejeições 75% de decisões

  20. Objetivo 10% de rejeições 75% de decisões Grande aposta da

    empresa
  21. Objetivo 10% de rejeições 75% de decisões Entrega até começo

    de outubro
  22. Objetivo 10% de rejeições 75% de decisões Entrega até começo

    de outubro (risos)
  23. Começo de Outubro/2019...

  24. Atrasos (prazo estourado, complicações e muito chão) Decisões manuais (feitas

    por analistas de crédito) Reprovações automáticas (cerca de 10% das análises) Codebase de 3 anos (decisões manuais e reprovação automática)
  25. MAIS atrasos (prazo estourado, complicações e muito chão) Decisões manuais

    (feitas por analistas de crédito) Reprovações automáticas (cerca de 10% das análises) Codebase de 3 anos (decisões manuais e reprovação automática)
  26. Em meio a isso...

  27. Time desmotivado

  28. Time desmotivado • Atrasos e complicações

  29. Time desmotivado • Atrasos e complicações • Outras demandas

  30. • Atrasos e complicações • Outras demandas • Pressão externa

    e interna Time desmotivado
  31. Time desmotivado • Atrasos e complicações • Outras demandas •

    Pressão externa e interna • Demais coisas pessoais
  32. Entrega da V1 2.

  33. Ihuuuulll!

  34. Começo de Novembro/2019...

  35. Habemus macarronada

  36. None
  37. Conseguimos atingir...

  38. 15 a 20% de decisões automáticas (bem longe da meta)

  39. Durante esse período todo...

  40. Esboço do fluxo original Durante esse período todo...

  41. Alinhamento com stakeholders Esboço do fluxo original Durante esse período

    todo...
  42. Alinhamento com stakeholders Esboço do fluxo original Combinado com produto

    e liderança Durante esse período todo...
  43. Alinhamento com stakeholders Derteminação do time Esboço do fluxo original

    Combinado com produto e liderança Durante esse período todo...
  44. Depois da tempestade...

  45. Hora de arrumar a casa

  46. adeus pressão

  47. Refatoração da macarronada 3.

  48. Desmacarronação do código 3.

  49. 1. Desenho "completo" do fluxo original

  50. None
  51. None
  52. 2. Problemas & Insights

  53. None
  54. None
  55. None
  56. None
  57. None
  58. essa era a macarronada

  59. 3. Definição de um novo fluxo

  60. None
  61. None
  62. None
  63. 1. 2. 3.

  64. 1. Não mexer no fluxo pós-crédito (o resto precisava continuar

    funcionando igual) 2. 3.
  65. 1. Não mexer no fluxo pós-crédito (o resto precisava continuar

    funcionando igual) Diminuir o número de incertezas (projeto trabalhoso, independente do caminho) 2. 3.
  66. 1. Não mexer no fluxo pós-crédito (o resto precisava continuar

    funcionando igual) Diminuir o número de incertezas (projeto trabalhoso, independente do caminho) Testar e validar o mais rápido possível (o processo todo era passível de bugs) 2. 3.
  67. Bora pra refatoração!

  68. None
  69. None
  70. None
  71. None
  72. None
  73. None
  74. None
  75. None
  76. Esses desenhos são uma simplificação dos fluxos (desenho original &

    refactor)
  77. None
  78. Agregação e transformação de dados

  79. Agregação e transformação de dados

  80. Agregação e transformação de dados Achar entidade A Achar entidade

    B Consultar serviço 2 Transformar dados Consultar serviço 3 Calcular valores X ... Consultar serviço 4 Calcular valores Y
  81. 4. Taca-le pau nesse motorzinho

  82. Taca-le pau Prova de Conceito Simples, de um a dois

    dias
  83. Quebra de histórias Pequenos entregáveis, a maioria testáveis Taca-le pau

    Prova de Conceito Simples, de um a dois dias
  84. Quebra de histórias Pequenos entregáveis, a maioria testáveis Mão na

    massa 3 meses sem pressão e com motivação Taca-le pau Prova de Conceito Simples, de um a dois dias
  85. Quebra de histórias Pequenos entregáveis, a maioria testáveis Mão na

    massa 3 meses sem pressão e com motivação Taca-le pau Prova de Conceito Simples, de um a dois dias
  86. Quebra de histórias Pequenos entregáveis, a maioria testáveis Mão na

    massa 3 meses sem pressão e com motivação Entrega do refactor Fluxos simultâneos, comp. de resultados e virada de chave Taca-le pau Prova de Conceito Simples, de um a dois dias
  87. None
  88. None
  89. None
  90. None
  91. None
  92. ufa, cabô o refactor

  93. Conclusões vitórias e aprendizados 4.

  94. Felicidade e motivação

  95. Velocidade de entrega pós refactor

  96. Antes: 1 - 2 semanas Depois: 2 - 48 horas

  97. Confiança de produto, liderança e stakeholders

  98. Percepções para evolução futura

  99. None
  100. CREDITS: This presentation template was created by Slidesgo, including icon

    by Flaticon, and infographics & images from Freepik @camposmilaa Valeu! bit.ly/camis-codecon2021