Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Juliana Helena - Desenvolvedora juliana.helena15@gmail.com @juliana.helena15 @julianahelenaa5 linkedin.com/in/juliana-helena/

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Inferno

Slide 5

Slide 5 text

Recado: Não é preconceito com Php :)

Slide 6

Slide 6 text

O que é Código legado?

Slide 7

Slide 7 text

"Legacy code is simply code without tests" Michael Feathers

Slide 8

Slide 8 text

“ 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.”

Slide 9

Slide 9 text

Porém:

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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?

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

Recebi o problema: Como lidar?

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Reescreva tudo, vai...

Slide 16

Slide 16 text

Chefe: Qual o investimento? - Refatorar - Refazer

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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/

Slide 20

Slide 20 text

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?

Slide 21

Slide 21 text

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)

Slide 22

Slide 22 text

AppProva

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

Resumo

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

Como resolver? Parabéns aos envolvidos

Slide 31

Slide 31 text

Antes: Sugestões de Leitura

Slide 32

Slide 32 text

Purgatório

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

Paraíso

Slide 42

Slide 42 text

E agora? Como se manter nele?

Slide 43

Slide 43 text

Comunicação

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

Documentação - Código - Projeto

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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.

Slide 57

Slide 57 text

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!!

Slide 58

Slide 58 text

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!!

Slide 59

Slide 59 text

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!!

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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 :)