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.

C8a9614b9b7b00b55279668b092848f7?s=128

JulianaHelena5

May 26, 2019
Tweet

Transcript

  1. A Divina Comédia de um Código Legado Indo do Inferno

    ao Paraíso com Elixir
  2. Juliana Helena - Desenvolvedora juliana.helena15@gmail.com @juliana.helena15 @julianahelenaa5 linkedin.com/in/juliana-helena/

  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
  4. Inferno

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

  6. O que é Código legado?

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

  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.”
  9. Porém:

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

    escrever Porém:
  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?
  12. Importante: manter o Respeito e entender o Contexto Código duvidoso

  13. Recebi o problema: Como lidar?

  14. None
  15. Reescreva tudo, vai...

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

  17. Refazer Fatores relevantes: - Custo - Prazo - Manter o

    Legado funcionando em paralelo
  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
  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/
  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?
  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)
  22. AppProva

  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
  24. #1 Pedido - Criem Nomes de Aplicações que façam sentido

    Amém, AppPay
  25. Resumo

  26. Rede de aplicações dependentes e sem Testes ou Informações precisas

    sobre o Funcionamento Resumo
  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
  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
  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
  30. Como resolver? Parabéns aos envolvidos

  31. Antes: Sugestões de Leitura

  32. Purgatório

  33. Migração: Pilares - Transferir Conhecimento de Código não Documentado -

    Conseguir manter o Funcionamento das Aplicações - Reestruturar os Times
  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
  35. A Divina Comédia de um código Legado Indo do Inferno

    ao Paraíso Com Elixir Migração de Fato
  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
  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
  38. Nasce o AppPay - Com Qualidade - Testes - Escalável

    - Desacoplado - Boas práticas
  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...
  40. A maior parte dos Legados morra - Processo bem estruturado

    - Qualidade - Códigos Escaláveis E chegamos no?...
  41. Paraíso

  42. E agora? Como se manter nele?

  43. Comunicação

  44. 1:1 - Gestor, Líder Técnico, etc - Feedbacks precisos -

    Erre rápido, corrija rápido - Mentoria
  45. Documentação - Código - Projeto

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

    é documentado
  47. None
  48. None
  49. None
  50. Code Review - Obs.: Cuidado ao se comunicar, especialmente com

    quem está começando
  51. Foco em Qualidade de Código - Testes - Boas práticas

    - Linter - Open Source
  52. Processos bem definidos - Cerimônias bem feitas - Tarefas bem

    descritas - Prioridades estabelecidas e respeitadas - Sprints sem incêndios
  53. Acessibilidade - Importante pensar em Acessibilidade desde o Início -

    Não esperar surgir a demanda - Refatorar
  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
  55. Considerações Finais 2/3 Incentive sua comunidade local! Como apoiar: *

    Palestrar * Fornecer espaço físico/coffee * Mentorar * Open source
  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.
  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!!
  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!!
  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!!
  60. Assim como essas pessoas fizeram comigo Conselheiros de Elixir/Codificação/Vida

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

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

    as mesmas oportunidades
  63. Nem Todo mundo teve as mesmas oportunidades Para as pessoas

    babacas eu desejo... Resumo: Não seja uma pessoa babaca...
  64. Um Inferno de Código Legado Sem Teste Sem Qualidade Sem

    Comunicação Sem Compartilhamento Sem Elixir Extremamente acoplado
  65. Juliana Helena juliana.helena15@gmail.com @juliana.helena15 @julianahelenaa5 linkedin.com/in/juliana-helena/ Até mais, e Obrigada

    pelos Peixes! #1 Palestra fora de Minas :)