Upload
marcos-brizeno
View
577
Download
0
Embed Size (px)
Citation preview
ABRACE A MUDANÇA COM CÓDIGO
@marcosbrizeno
QUEBRANDO O GELO!
2
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
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
A ÚNICA CONSTANTE É A MUDANÇAA profecia autorrealizável
5
A PROFECIA AUTORREALIZÁVEL
O seu projeto vai mudar!
6
A PROFECIA AUTORREALIZÁVEL
7
“Be water my friend.” - Bruce Lee
A PROFECIA AUTORREALIZÁVEL
8
DESENVOLVIMENTO ÁGIL
Fortemente baseado em pessoas e colaboração
9
DESENVOLVIMENTO ÁGIL
Ciclo de feedback reduzido
10
DESENVOLVIMENTO ÁGIL
Envolvimento com o cliente e usuários o tempo todo
11
DESENVOLVIMENTO ÁGIL
Exploração e aprendizado
12
CÓDIGO ÁGIL?
13
“Talk is cheap. Show me the code.”
- Linus Torvalds
CÓDIGO ÁGIL?
14
CÓDIGO ÁGIL?
Código no centro de tudo
15
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
CÓDIGO ÁGIL?
17
O REI ESTÁ NÚ!
18
SCRUM NÃO RESOLVE O SEU
PROBLEMA
O REI ESTÁ NÚ!
19
Waterfall: Vamos entregar o projeto próximo ano!
Agile: Vamos entregar pequenos MVPs até o próximo ano!
O REI ESTÁ NÚ!
20
Um ano depois
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!
O REI ESTÁ NÚ!
22
De que adianta o feedback se não consigo agir nele?
O REI ESTÁ NÚ!
23
SCRUM SOZINHO NÃO RESOLVE O SEU
PROBLEMA
COMO ABRAÇAR A MUDANÇA COM CÓDIGO
24
PATINHO FAIL
25
EU S2 LIVROSe o padrão Strategy
26
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
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
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
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
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
EXEMPLO DE PARÂMETRO
32
parametros = { metodo: :facenote, dados: { usuario: 'Gil' } }
LOGIN VIA HOOGLEExtensão do problema
33
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"
35
JUNTA AE!
36
CADE O PATINHO FAIL?
O PADRÃO STRATEGY
37
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
APLICANDO O PADRÃO STRATEGY
39
Login
LoginViaFaceNote
LoginViaZuiterstatus e
mensagem
método?
status e mensagem
dados do usuário
REFATORANDO
40
UMA NOTA SOBRE REFATORAÇÃO
41
42
JUNTA AE!
43
CADE O PATINHO FAIL?
MANEIRAS DE BUSCARe o padrão SimpleFactory
44
COMPRAS SOCIAIS
Várias maneiras de buscar diferentes Buscas flexíveis com valores padrão
Adicionar mais buscas
45
DESIGN E ARQUITETURA
46
Busca
cria critério
ServicoDeBusca
critério
ids dos produtosparametros
EXEMPLO DE PARÂMETROS
47
#exemplo de hash { tipo_de_busca: :categoria, resultados_por_pagina: 10, categoria: :eletronicos, ordenar_por: :relevancia }
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
BUSCA PROMOCIONALExtensão do problema
49
BUSCA PROMOCIONAL
categoria será sempre "em promoção” resultado sempre será ordenado por "mais recente"
50
51
JUNTA AE!
52
CADE O PATINHO FAIL?
O PADRÃO SIMPLE FACTORY
53
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
APLICANDO O PADRÃO SIMPLE FACTORY
55
Busca
FabricaDeCriterio
Criterio
dados da busca
parametros
novo objeto
REFATORANDO
56
57
JUNTA AE!
58
CADE O PATINHO FAIL?
SISTEMAS LEGADOSe o padrão Adapter
59
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
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
DIMINUINDO DEPENDÊNCIASExtensão do problema
62
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
64
JUNTA AE!
65
CADE O PATINHO FAIL?
O PADRÃO ADAPTER
66
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
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
REFATORANDO
69
70
JUNTA AE!
71
CADE O PATINHO FAIL?
TRANSFORMANDO O PATINHO FAILComo fazer com que seu código seja aberto a mudanças
72
O PATINHO FAIL ESTÁ EM TODO LUGAR!
73
ABRACE O PATINHO FAIL E CUIDE DELE
74
O PATINHO FAIL É TEMPERAMENTAL
75
MAS O PATINHO FAIL TAMBÉM PODE FICAR FELIZ!
76
<JABÁ>Este workshop foi um oferecimento de…
77
QUER MAIS?
78
Livro pela Casa do Código
Lançamento dia 30 de Outubro
</JABÁ> RETRO TIME!!!Este workshop foi um oferecimento de…
80
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/
RETROSPECTIVA ROI
82http://www.funretrospectives.com/feedback-and-roi/
OBRIGADO!@marcosbrizeno
https://github.com/MarcosX/agilebrazil-workshop