Abraçando a mudança com Código
-
Upload
marcos-brizeno -
Category
Technology
-
view
578 -
download
0
Transcript of Abraçando a mudança com Código
![Page 1: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/1.jpg)
ABRACE A MUDANÇA COM CÓDIGO
@marcosbrizeno
![Page 2: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/2.jpg)
QUEBRANDO O GELO!
2
![Page 3: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/3.jpg)
FORMANDO TRIÂNGULOS
3http://www.funretrospectives.com/forming-triangles/
Ande em uma direção aleatória até ouvir a palavra
"Triângulo"
Quando ouvir, pare e tente formar um triângulo com
os outros participantes
![Page 4: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/4.jpg)
AGENDA
$> Mudança em projetos Ágeis $> O patinho fail $> Strategy - Dividir para simplificar $> Adapter - Seja como a água $> Factory - Gerenciando objetos $> Transformando o patinho fail
4
![Page 5: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/5.jpg)
A ÚNICA CONSTANTE É A MUDANÇAA profecia autorrealizável
5
![Page 6: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/6.jpg)
A PROFECIA AUTORREALIZÁVEL
O seu projeto vai mudar!
6
![Page 7: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/7.jpg)
A PROFECIA AUTORREALIZÁVEL
7
“Be water my friend.” - Bruce Lee
![Page 8: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/8.jpg)
A PROFECIA AUTORREALIZÁVEL
8
![Page 9: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/9.jpg)
DESENVOLVIMENTO ÁGIL
Fortemente baseado em pessoas e colaboração
9
![Page 10: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/10.jpg)
DESENVOLVIMENTO ÁGIL
Ciclo de feedback reduzido
10
![Page 11: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/11.jpg)
DESENVOLVIMENTO ÁGIL
Envolvimento com o cliente e usuários o tempo todo
11
![Page 12: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/12.jpg)
DESENVOLVIMENTO ÁGIL
Exploração e aprendizado
12
![Page 13: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/13.jpg)
CÓDIGO ÁGIL?
13
“Talk is cheap. Show me the code.”
- Linus Torvalds
![Page 14: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/14.jpg)
CÓDIGO ÁGIL?
14
![Page 15: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/15.jpg)
CÓDIGO ÁGIL?
Código no centro de tudo
15
![Page 16: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/16.jpg)
CÓDIGO ÁGIL?
16
CÓDIGO LIMPOPADRÕES DE PROJETO
SOLID
TDDDOCUMENTADO
TESTÁVELEFICIENTE
LEGÍVEL
FUNCIONA
FÁCIL DE IMPLANTAR
INTEGRAÇÃO CONTÍNUA
PAREAR
![Page 17: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/17.jpg)
CÓDIGO ÁGIL?
17
![Page 18: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/18.jpg)
O REI ESTÁ NÚ!
18
SCRUM NÃO RESOLVE O SEU
PROBLEMA
![Page 19: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/19.jpg)
O REI ESTÁ NÚ!
19
Waterfall: Vamos entregar o projeto próximo ano!
Agile: Vamos entregar pequenos MVPs até o próximo ano!
![Page 20: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/20.jpg)
O REI ESTÁ NÚ!
20
Um ano depois
![Page 21: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/21.jpg)
O REI ESTÁ NÚ!
21
Waterfall: Não era bem o que eu queria… Vamos ter que fazer de novo…
Agile: Nosso produto já está sendo utilizado!
![Page 22: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/22.jpg)
O REI ESTÁ NÚ!
22
De que adianta o feedback se não consigo agir nele?
![Page 23: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/23.jpg)
O REI ESTÁ NÚ!
23
SCRUM SOZINHO NÃO RESOLVE O SEU
PROBLEMA
![Page 24: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/24.jpg)
COMO ABRAÇAR A MUDANÇA COM CÓDIGO
24
![Page 25: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/25.jpg)
PATINHO FAIL
25
![Page 26: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/26.jpg)
EU S2 LIVROSe o padrão Strategy
26
![Page 27: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/27.jpg)
O EU S2 LIVROS
Plataforma para juntar livros e pessoas (leitores/autores) Precisa ser de fácil acesso
Permitir o login através de várias redes sociais existentes
27
![Page 28: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/28.jpg)
API DOS SERVIÇOS
28
API FaceNote: FACE_NOTE_SUCESSO = 200 FACE_NOTE_REVOCADO = 403 FACE_NOTE_BLOQEUADO = 408
API Zuiter: ZUITER_SUCESSO = 202 ZUITER_PENDENTE = 400 usuários apenas em downcase
![Page 29: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/29.jpg)
DESIGN E ARQUITETURA
29
Login
ServicoFaceNoteLogin
informação do
usuário
API FaceNote
dados formatados para a API
código de
resposta
status e mensagem
![Page 30: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/30.jpg)
IMPLEMENTAÇÃO DO LOGIN
30
def self.com(parametros)
resposta = if parametros[:metodo] == :facenote ServicoFaceNoteLogin.autenticar(parametros[:dados]) elsif parametros[:metodo] == :zuiter parametros[:dados][:usuario].downcase! ServicoZuiterLogin.autenticar(parametros[:dados]) end
![Page 31: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/31.jpg)
IMPLEMENTAÇÃO DO LOGIN
31
if resposta == FACE_NOTE_SUCESSO || resposta == ZUITER_SUCESSO status, mensagem = true, 'login com sucesso' elsif resposta == FACE_NOTE_REVOCADO status, mensagem = false, 'acesso revocado' elsif resposta == FACE_NOTE_BLOQEUADO status, mensagem = false, 'aplicação bloqueada' elsif resposta == ZUITER_PENDENTE status, mensagem = false, 'autorização pendente' end
![Page 32: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/32.jpg)
EXEMPLO DE PARÂMETRO
32
parametros = { metodo: :facenote, dados: { usuario: 'Gil' } }
![Page 33: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/33.jpg)
LOGIN VIA HOOGLEExtensão do problema
33
![Page 34: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/34.jpg)
API DOS SERVIÇOS
34
API Hoogle: HOOGLE_SUCESSO = 200 HOOGLE_REVOCADO = 403 HOOGLE_BLOQEUADO = 409
usuários não podem ter espaço extra
#dica: “ string “.strip == "string"
![Page 35: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/35.jpg)
35
JUNTA AE!
![Page 36: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/36.jpg)
36
CADE O PATINHO FAIL?
![Page 37: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/37.jpg)
O PADRÃO STRATEGY
37
![Page 38: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/38.jpg)
STRATEGY
Padrão de comportamento, ou seja, distribui responsabilidades
Criar estratégias e fazer com que seja fácil mudá-las
Estratégias seguem uma mesma interface
38
![Page 39: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/39.jpg)
APLICANDO O PADRÃO STRATEGY
39
Login
LoginViaFaceNote
LoginViaZuiterstatus e
mensagem
método?
status e mensagem
dados do usuário
![Page 40: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/40.jpg)
REFATORANDO
40
![Page 41: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/41.jpg)
UMA NOTA SOBRE REFATORAÇÃO
41
![Page 42: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/42.jpg)
42
JUNTA AE!
![Page 43: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/43.jpg)
43
CADE O PATINHO FAIL?
![Page 44: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/44.jpg)
MANEIRAS DE BUSCARe o padrão SimpleFactory
44
![Page 45: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/45.jpg)
COMPRAS SOCIAIS
Várias maneiras de buscar diferentes Buscas flexíveis com valores padrão
Adicionar mais buscas
45
![Page 46: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/46.jpg)
DESIGN E ARQUITETURA
46
Busca
cria critério
ServicoDeBusca
critério
ids dos produtosparametros
![Page 47: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/47.jpg)
EXEMPLO DE PARÂMETROS
47
#exemplo de hash { tipo_de_busca: :categoria, resultados_por_pagina: 10, categoria: :eletronicos, ordenar_por: :relevancia }
![Page 48: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/48.jpg)
TIPOS DE BUSCA
Busca normal: apenas o nome do produto precisa ser especificado, ordem de exibição padrão por "relevância"
Busca por categoria: é necessário especificar categoria, ordem de exibição dos exibição padrão por "mais recente"
A quantidade de produtos exibidos por página é 15 por padrão
48
![Page 49: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/49.jpg)
BUSCA PROMOCIONALExtensão do problema
49
![Page 50: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/50.jpg)
BUSCA PROMOCIONAL
categoria será sempre "em promoção” resultado sempre será ordenado por "mais recente"
50
![Page 51: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/51.jpg)
51
JUNTA AE!
![Page 52: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/52.jpg)
52
CADE O PATINHO FAIL?
![Page 53: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/53.jpg)
O PADRÃO SIMPLE FACTORY
53
![Page 54: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/54.jpg)
SIMPLE FACTORY
Padrão de criação, ou seja, remove responsabilidade de criar
Utiliza objeto especializado para criar novas instâncias
Não confundir com Factory Method e Abstract Factory!
54
![Page 55: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/55.jpg)
APLICANDO O PADRÃO SIMPLE FACTORY
55
Busca
FabricaDeCriterio
Criterio
dados da busca
parametros
novo objeto
![Page 56: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/56.jpg)
REFATORANDO
56
![Page 57: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/57.jpg)
57
JUNTA AE!
![Page 58: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/58.jpg)
58
CADE O PATINHO FAIL?
![Page 59: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/59.jpg)
SISTEMAS LEGADOSe o padrão Adapter
59
![Page 60: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/60.jpg)
INTERFACE COM SISTEMAS LEGADOS
Informações dos clientes via API com XML Um endpoint para email, outro para endereços, outro
para pagamentos e outro para telefone Os dados devem ser apresentados juntos em JSON
60
![Page 61: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/61.jpg)
DESIGN E ARQUITETURA
61
Cliente
@id_universal
Sistema Legado de Clientes
constrói xml
chama serviço
desconstrói xml
preferências do usuário
valida dados
![Page 62: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/62.jpg)
DIMINUINDO DEPENDÊNCIASExtensão do problema
62
![Page 63: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/63.jpg)
BUSCA PROMOCIONAL
Quando o sistema legado sair, não usaremos mais xml Ainda não sabemos exatamente o que será usado
Precisamos separar a lógica de processamento de xml
63
![Page 64: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/64.jpg)
64
JUNTA AE!
![Page 65: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/65.jpg)
65
CADE O PATINHO FAIL?
![Page 66: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/66.jpg)
O PADRÃO ADAPTER
66
![Page 67: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/67.jpg)
ADAPTER
Padrão estrutural, ou seja, facilitam o design do projeto
Define um contrato entre duas interfaces diferentes
Simplifica mudanças nessas interfaces, desde que mantenha-se o mesmo contrato
67
![Page 68: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/68.jpg)
DESIGN E ARQUITETURA
68
Clienteid_universal
Sistema Legado de Clientes
constrói xml
chama serviço
desconstrói xml
preferências do usuário
valida data
Adaptador
![Page 69: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/69.jpg)
REFATORANDO
69
![Page 70: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/70.jpg)
70
JUNTA AE!
![Page 71: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/71.jpg)
71
CADE O PATINHO FAIL?
![Page 72: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/72.jpg)
TRANSFORMANDO O PATINHO FAILComo fazer com que seu código seja aberto a mudanças
72
![Page 73: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/73.jpg)
O PATINHO FAIL ESTÁ EM TODO LUGAR!
73
![Page 74: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/74.jpg)
ABRACE O PATINHO FAIL E CUIDE DELE
74
![Page 75: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/75.jpg)
O PATINHO FAIL É TEMPERAMENTAL
75
![Page 76: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/76.jpg)
MAS O PATINHO FAIL TAMBÉM PODE FICAR FELIZ!
76
![Page 77: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/77.jpg)
<JABÁ>Este workshop foi um oferecimento de…
77
![Page 78: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/78.jpg)
QUER MAIS?
78
Livro pela Casa do Código
Lançamento dia 30 de Outubro
![Page 80: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/80.jpg)
</JABÁ> RETRO TIME!!!Este workshop foi um oferecimento de…
80
![Page 81: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/81.jpg)
NOTA PARA SI MESMO
81
Escreva em um post-it algo para se lembrar
durante a semana
Mantenha essa nota perto de você
www.funretrospectives.com/note-to-self/
![Page 82: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/82.jpg)
RETROSPECTIVA ROI
82http://www.funretrospectives.com/feedback-and-roi/
![Page 83: Abraçando a mudança com Código](https://reader034.fdocument.pub/reader034/viewer/2022042618/58ae4f001a28ab57678b4849/html5/thumbnails/83.jpg)
OBRIGADO!@marcosbrizeno
https://github.com/MarcosX/agilebrazil-workshop