SlideShare uma empresa Scribd logo
ABRACE A MUDANÇA COM CÓDIGO
@marcosbrizeno
QUEBRANDO O GELO!
2
FORMANDO TRIÂNGULOS
3
http://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ÇA
A 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 LIMPO
PADRÕES DE PROJETO
SOLID
TDD
DOCUMENTADO
TESTÁVEL
EFICIENTE
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 LIVROS
e 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 HOOGLE
Extensã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
LoginViaZuiter
status 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 BUSCAR
e 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 produtos
parametros
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 PROMOCIONAL
Extensã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 LEGADOS
e 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ÊNCIAS
Extensã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
Cliente
id_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 FAIL
Como 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
ESTAMOS CONTRATANDO!
79
@marcosbrizeno ou mbrizeno@thoughtworks.com
</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
82
http://www.funretrospectives.com/feedback-and-roi/
OBRIGADO!
@marcosbrizeno
https://github.com/MarcosX/agilebrazil-workshop

Mais conteúdo relacionado

PPT
Hands on Labs - ASP.NET WebForms
PDF
CSS com classe
PDF
Planned Parenthood vs Casey
PPT
Antífona 24 mt 25.31-40
PPT
Antífona 31 1 co 2.9-16
PPTX
Resumo absolutismo monárquico
PPS
Lição 12 - O propósito da verdadeira prosperidade
Hands on Labs - ASP.NET WebForms
CSS com classe
Planned Parenthood vs Casey
Antífona 24 mt 25.31-40
Antífona 31 1 co 2.9-16
Resumo absolutismo monárquico
Lição 12 - O propósito da verdadeira prosperidade

Semelhante a Abraçando a mudança com Código (20)

PPTX
Design de APIs REST
PPTX
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
PDF
Fundamentos SQL - Microsoft SQL Server 2019 - Parte 1/8
PDF
Angular js
PDF
SACA21 Col42 SAP Analytics Cloud: administração e conectividade de dados
ODP
Zend Framework
PPTX
T-SQL na prática com SQL SERVER Express 2012
PPTX
ZeroBugsProject - Técnicas de programação efetivas
PPTX
Programando extensões para Internet Explorer (Webslices e Aceleradores)
PPT
Produtividade com JavaServer Faces
ODP
Da argila ao forte: como desenvolver uma loja com PagSeguro
PDF
Workshop Ruby on Rails dia 2 ruby-pt
PDF
APIs gerenciadas de ponta a ponta
PDF
APIs gerenciadas de ponta a ponta
PDF
Growth hacking - customer lifecycle na pratica
PDF
10 Atributos de uma API de Sucesso
PDF
Api first desenhando e testando sua api like a boss
PDF
Forca de Digital & RPA
PPT
Cobrancas online na sua aplicacao com MoIP
PDF
CURSOS_LISTA2022-v2.pdf
Design de APIs REST
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Fundamentos SQL - Microsoft SQL Server 2019 - Parte 1/8
Angular js
SACA21 Col42 SAP Analytics Cloud: administração e conectividade de dados
Zend Framework
T-SQL na prática com SQL SERVER Express 2012
ZeroBugsProject - Técnicas de programação efetivas
Programando extensões para Internet Explorer (Webslices e Aceleradores)
Produtividade com JavaServer Faces
Da argila ao forte: como desenvolver uma loja com PagSeguro
Workshop Ruby on Rails dia 2 ruby-pt
APIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a ponta
Growth hacking - customer lifecycle na pratica
10 Atributos de uma API de Sucesso
Api first desenhando e testando sua api like a boss
Forca de Digital & RPA
Cobrancas online na sua aplicacao com MoIP
CURSOS_LISTA2022-v2.pdf
Anúncio

Mais de Marcos Brizeno (18)

PDF
Refatorando tudo! [Agile brazil 2017]
PDF
GraphQL ou APIs RESTful - DevDay 2017
PDF
Developer Experience como diferencial na Transformação Digital
PDF
Desventuras em série adotando microserviços
PDF
Aprenda Elixir em um final de semana
PDF
5 mitos sobre código bom
PDF
Padrões de projeto superestimados
PDF
Práticas Ágeis Distribuidas
PDF
The fine art of slacking
PDF
Aplicando padrões de projeto em Ruby
PDF
Comunidade e Carreira: Você Ganha Todos Ganham
PDF
Dubles de teste
PDF
Entrega Contínua - E Eu Com Isso?
PDF
The fine art of slacking
PDF
Programar #COMOFAS ? - Rails Girls Fortaleza
PDF
Metaprogramação Ruby
ODP
Arquitetura Ágil
ODP
Clean code
Refatorando tudo! [Agile brazil 2017]
GraphQL ou APIs RESTful - DevDay 2017
Developer Experience como diferencial na Transformação Digital
Desventuras em série adotando microserviços
Aprenda Elixir em um final de semana
5 mitos sobre código bom
Padrões de projeto superestimados
Práticas Ágeis Distribuidas
The fine art of slacking
Aplicando padrões de projeto em Ruby
Comunidade e Carreira: Você Ganha Todos Ganham
Dubles de teste
Entrega Contínua - E Eu Com Isso?
The fine art of slacking
Programar #COMOFAS ? - Rails Girls Fortaleza
Metaprogramação Ruby
Arquitetura Ágil
Clean code
Anúncio

Último (8)

PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Mecânico de Manutenção de Equipamentos.pptx
PPTX
Arquitetura de computadores - Memórias Secundárias
PDF
Manejo integrado de pragas na cultura do algodão
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Viasol Energia Solar -Soluções para geração e economia de energia
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Mecânico de Manutenção de Equipamentos.pptx
Arquitetura de computadores - Memórias Secundárias
Manejo integrado de pragas na cultura do algodão

Abraçando a mudança com Código