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

A Divina Comédia de um Código Legado: Indo do Inferno ao Paraíso com Elixir

A Divina Comédia de um Código Legado: Indo do Inferno ao Paraíso com Elixir

Palestra apresentada na Elixir Brasil 2019, sobre um processo de reestruturação e evolução de Projetos Legados.

JulianaHelena5

May 26, 2019
Tweet

Other Decks in Programming

Transcript

  1. A Divina Comédia de um
    Código Legado
    Indo do Inferno ao Paraíso com Elixir

    View Slide

  2. Juliana Helena - Desenvolvedora
    [email protected]
    @juliana.helena15
    @julianahelenaa5
    linkedin.com/in/juliana-helena/

    View Slide

  3. AGENDA
    INFERNO
    - Código Legado
    - Refatoração
    - Cenário anterior
    PURGATÓRIO
    - Preparação e migração
    - Cultura
    PARAÍSO
    - E agora? Como manter?
    * Bônus: Considerações Finais

    View Slide

  4. Inferno

    View Slide

  5. Recado: Não é preconceito com Php
    :)

    View Slide

  6. O que é Código legado?

    View Slide

  7. "Legacy code is simply code
    without tests"
    Michael Feathers

    View Slide

  8. “ Code without tests is bad code. It doesn’t
    matter how well written it is; it doesn’t matter
    how pretty or object-oriented or
    well-encapsulated it is. With tests, we can
    change the behavior or our code quickly and
    verifiably. Without them, we really don’t know if
    our code is getting better or worse.”

    View Slide

  9. Porém:

    View Slide

  10. Código legado também é o código que você
    acabou de escrever
    Porém:

    View Slide

  11. Código legado também é o código que você
    acabou de escrever
    Porém:
    Já parou para pensar sobre a qualidade do
    legado que está deixando?

    View Slide

  12. Importante: manter o
    Respeito e entender o
    Contexto
    Código
    duvidoso

    View Slide

  13. Recebi o problema:
    Como lidar?

    View Slide

  14. View Slide

  15. Reescreva tudo, vai...

    View Slide

  16. Chefe: Qual o
    investimento?
    - Refatorar
    - Refazer

    View Slide

  17. Refazer
    Fatores relevantes:
    - Custo
    - Prazo
    - Manter o Legado
    funcionando em paralelo

    View Slide

  18. Refatorar
    Quando Refazer não é uma
    opção
    - Começar com pequenas
    mudanças
    - Qualidade em Todo novo
    Código
    - Planejamento:
    Pagamento de Dívida
    Técnica

    View Slide

  19. Por onde começar? Maiores indícios de code
    smell
    - Fowler: Still one of the biggest ones for me is duplication. Spotting duplicate
    code and figuring out how to remove it often leads me to an improved design. Like
    anything, it can be overdone, but also like most things, it usually isn't done
    enough.
    -
    - Kent Beck: Since Martin already picked duplication I'll choose complex conditional
    logic. When I see an if statement inside a for loop inside an if statement, I am
    immediately suspicious that there is a case that hasn't been considered. A slightly
    more abstract smell I look for is violations of Composed Method, which states that
    all the operations in a function should be at the same level of abstraction. For
    example, if I see a bunch of bit twiddling operations in the same function with
    calls to other functions, I'm pretty sure there is a better way to express the
    computation.
    https://www.infoq.com/articles/book-review-refactoring-second-edition/

    View Slide

  20. E se não for Top -> Down
    - Tentar fazer a pessoa ver a luz.
    Vem cá um minutinho ver a
    importância de Qualidade de
    código, por favor?

    View Slide

  21. Evangelizar sobre
    Qualidade
    Você teria um minuto
    Para falar sobre Qualidade de
    Software?
    - Escalabilidade
    - Menor custo de Correção
    E se de Tudo não funcionar:
    - Comece pequeno
    - Mostre seus resultados
    - Se der: Mude de emprego
    (Fit Cultural)

    View Slide

  22. AppProva

    View Slide

  23. Cenário anterior
    - Internal Tools - (SP/BH)
    - Várias aplicações antigas e difíceis de escalar
    - Falta de Cultura focada em Qualidade de Código
    - Falhas de Comunicação
    - Falta de Processos (Incêndios)
    - Conhecimento Centralizado
    - Documentação --
    Ragnarok
    Delfos
    Tesseract
    Brain

    View Slide

  24. #1 Pedido - Criem
    Nomes de Aplicações
    que façam sentido
    Amém, AppPay

    View Slide

  25. Resumo

    View Slide

  26. Rede de aplicações dependentes e sem Testes ou
    Informações precisas sobre o Funcionamento
    Resumo

    View Slide

  27. Rede de aplicações dependentes e sem Testes ou
    Informações precisas sobre o Funcionamento
    Não tínhamos segurança para realizar
    alterações - suavizado pelo conhecimento
    da galera
    Resumo

    View Slide

  28. Rede de aplicações dependentes e sem Testes ou
    Informações precisas sobre o Funcionamento
    Não tínhamos segurança para realizar
    alterações - suavizado pelo conhecimento
    da galera
    Até aí, tudo bem
    Resumo

    View Slide

  29. News: Reestruturação de Equipes na empresa
    - Todos os Legados foram colocados como responsabilidade de BH
    - Pessoas com maior "Know-How" foram para outros Times

    View Slide

  30. Como resolver?
    Parabéns aos
    envolvidos

    View Slide

  31. Antes: Sugestões de Leitura

    View Slide

  32. Purgatório

    View Slide

  33. Migração: Pilares
    - Transferir Conhecimento de
    Código não Documentado
    - Conseguir manter o Funcionamento
    das Aplicações
    - Reestruturar os Times

    View Slide

  34. Processo - Pré Migração
    - Definição de uma Equipe de
    Migração: pessoas de outros
    squads
    - Divisão dos Projetos entre as
    Pessoas
    - Criação de Documentação e
    Aprendizado sobre Projeto
    - Entender os processos - (Roda
    um Script aí…)
    - Reuniões para Compartilhamento
    de Conhecimento/Tirar dúvidas

    View Slide

  35. A Divina Comédia de um
    código Legado
    Indo do Inferno ao Paraíso Com Elixir
    Migração de Fato

    View Slide

  36. Pós Migração
    - Criação dos Squads
    - As pessoas ajudantes
    voltaram para seus
    squads normais
    - Manter o funcionamento
    dos legados estável
    - Começo do processo de
    Reestruturação - Criação
    de novas aplicações

    View Slide

  37. Escolha de Tecnologia: Elixir, who?
    Segundo Bilu:
    - Resolver problemas de Concorrência
    - Temos vários cases de sucesso dentro da própria empresa com
    Elixir. O primeiro deles Saraiva Aprova - Segunda Fase e os
    demais Jeyloo e Campus Lab, todas com ótimo desempenho até
    hoje.
    - Background da Equipe
    - É funcional

    View Slide

  38. Nasce o AppPay
    - Com Qualidade
    - Testes
    - Escalável
    - Desacoplado
    - Boas práticas

    View Slide

  39. Próximos passos
    - Evoluir as Novas aplicações
    - Manter os Legados estáveis com o
    mínimo de intervenção possível
    - Até chegar o momento em que...

    View Slide

  40. A maior parte
    dos Legados
    morra
    - Processo bem estruturado
    - Qualidade
    - Códigos Escaláveis
    E chegamos no?...

    View Slide

  41. Paraíso

    View Slide

  42. E agora? Como
    se manter nele?

    View Slide

  43. Comunicação

    View Slide

  44. 1:1 - Gestor, Líder Técnico, etc
    - Feedbacks precisos
    - Erre rápido, corrija rápido
    - Mentoria

    View Slide

  45. Documentação
    - Código
    - Projeto

    View Slide

  46. Exemplo: Swagger
    - Documentação de Código
    - Todo código escrito é documentado

    View Slide

  47. View Slide

  48. View Slide

  49. View Slide

  50. Code Review
    - Obs.: Cuidado ao se comunicar, especialmente com quem está começando

    View Slide

  51. Foco em Qualidade de Código
    - Testes
    - Boas práticas
    - Linter
    - Open Source

    View Slide

  52. Processos bem definidos
    - Cerimônias bem feitas
    - Tarefas bem descritas
    - Prioridades estabelecidas e
    respeitadas
    - Sprints sem incêndios

    View Slide

  53. Acessibilidade
    - Importante pensar em
    Acessibilidade desde o Início
    - Não esperar surgir a demanda
    - Refatorar

    View Slide

  54. Considerações Finais 1/3
    Conclusões
    - Não existe bala de prata
    - Depende do Projeto e Tipo de Gestão
    - Tentar criar uma Cultura focada em Qualidade
    - Evoluir junto com o Time

    View Slide

  55. Considerações Finais 2/3
    Incentive sua comunidade local!
    Como apoiar:
    * Palestrar
    * Fornecer espaço físico/coffee
    * Mentorar
    * Open source

    View Slide

  56. Considerações Finais 3/3
    Incentive mulheres, pessoas negras,
    pessoas LGBTQI+, pessoas Trans e pessoas
    com deficiência no seu time, empresa e na
    Comunidade.

    View Slide

  57. Considerações Finais 3/3
    Incentive mulheres, pessoas negras,
    pessoas LGBTQI+, pessoas Trans e pessoas
    com deficiência no seu time, empresa e na
    Comunidade.
    Empresas/RH: invistam em formação e
    busca ativa!!

    View Slide

  58. Considerações Finais 3/3
    Incentive mulheres, pessoas negras,
    pessoas LGBTQI+, pessoas Trans e pessoas
    com deficiência no seu time, empresa e na
    Comunidade.
    #DeixaElaFalar
    Empresas/RH: invistam em formação e
    busca ativa!!

    View Slide

  59. Considerações Finais 3/3
    Incentive mulheres, pessoas negras,
    pessoas LGBTQI+, pessoas Trans e pessoas
    com deficiência no seu time, empresa e na
    Comunidade.
    #DeixaElaFalar
    bit.ly/culturadediversidade
    Empresas/RH: invistam em formação e
    busca ativa!!

    View Slide

  60. Assim como essas pessoas fizeram comigo
    Conselheiros de Elixir/Codificação/Vida

    View Slide

  61. Resumo: Não seja uma pessoa babaca...

    View Slide

  62. Resumo: Não seja uma pessoa babaca...
    Nem Todo mundo teve as mesmas
    oportunidades

    View Slide

  63. Nem Todo mundo teve as mesmas
    oportunidades
    Para as pessoas babacas eu desejo...
    Resumo: Não seja uma pessoa babaca...

    View Slide

  64. Um Inferno de Código Legado
    Sem Teste
    Sem Qualidade
    Sem Comunicação
    Sem
    Compartilhamento
    Sem Elixir
    Extremamente
    acoplado

    View Slide

  65. Juliana Helena
    [email protected]
    @juliana.helena15
    @julianahelenaa5
    linkedin.com/in/juliana-helena/
    Até mais, e Obrigada pelos
    Peixes!
    #1 Palestra fora de Minas :)

    View Slide