Indo além do técnico
para desenvolver sistemas
que evoluem na
velocidade do negócio
Sebastian Ferrari - CTO�@sebas5384
�
Quem?
Sebastian Ferrari (Sebas)
Hola!
@sebas5384
Velocidade do Negócio?
Negócio
muda
Proposta de mudança
Processo de Desenvolv.
Novo Sistema
Pensamento linear
O sistema começa com um simples modelo da realidade se tornando cada vez mais complexo
Sistema evolui com o passar do tempo
Pensamento Sistêmico
Modelo mental que ajuda a
dar sentido à complexidade,
incentivando um equilíbrio entre
reducionismo e emergência.
O que é um sistema?
Um conjunto de elementos inter-relacionados organizados para servir a uma função específica ou
para buscar um objetivo específico.
– Donella Meadows
Modelo inicial,�rápido de criar.
1
2
3
.
.
.
Domínios
Modelos
Modelo inicial,�rápido de criar.
1
2
3
.
.
.
Evolução resultando no “Big Ball of Mud”.
Domínios
Modelos
Modelo inicial,�rápido de criar.
1
2
3
.
.
.
Evolução resultando no “Big Ball of Mud”.
Funciona, mas ninguém sabe como.�Mudanças se tornam arriscadas e difíceis.
Domínios
Modelos
complexidade do design
tempo
complexidade do design
tempo
complexidade do design
tempo
O que acha que precisa mais tarde.
O que precisa agora.
O que tem agora.
YAGNI
You Ain‘t Gonna Need It
agora
depois
Design por meio de refatoração
A coisa mais simples que possa funcionar
Realize progresso em pequenos passos
Grande design
prematuro
Design caótico e aleatório
Design bom e incremental
A complexidade no Software,
é o resultado inerente da
complexidade do domínio (essencial) misturada com a
complexidade técnica (acidental)
!?
– Scott Millet
Domínio?
Uma esfera específica de atividade (o que) ou conhecimento (como).
Área do problema, é o que dá motivo de existência ao modelo.
Onboarding
Vendas
Precificação
Marketing
Modelo do Domínio
Domínio do mundo real
Modelo do Domínio�para o caso de uso
O que é o DDD?
Domain Driven Design�
Abordagem de design de software, com foco na modelagem de software para corresponder a um domínio de acordo com a entrada dos especialistas desse domínio.
– Wikipedia
Eric Evans - 2003
Outros livros
Vaughn Vernon
não é meio velho?
Microsserviços
Foco no tático
Devs estão se distanciando do problema
Pilares
Duas categorias de design:
Tático
Estratégico
Pilares
Duas categorias de design:
Tático
Estratégico
Ferramentas para a modelagem e entendimento do domínio de maneira colaborativa
Pilares
Duas categorias de design:
Tático
Estratégico
Padrões técnicos para construir modelos do domínio dentro do contexto delimitado:
Precisa de tudo isso?
NÃO
Construa entendimento coletivo se aproximando aos especialistas de domínio e desenhe o sistema com enfoque no domínio principal do negócio
Design Estratégico
Contexto Delimitado
Contexto Delimitado
Reserva
Identificação e Autenticação
Usuário
Contexto
Contexto
Modelo
ambíguo
model
model
model
model
model
Bora fazer do zero?
NÃO
na maioria dos casos…
Contexto Delimitado
Reserva
Identificação�e Autenticação
Passageiro
Usuário
Linguagem Ubíqua
Organizações que desenvolvem sistemas de software tendem a produzir sistemas que são cópias das estruturas de comunicação dessas organizações.
!?
– Melvin Conway, 1967
Mapeamento de Contexto
Pagamento
Catálogo
Venda
U
D
Upstream/ Downstream
Parceria
Mapeamento de Contexto
Pagamento
Venda
U
D
Camada Anticorrupção
ACL
Compra
Ordem
Camada Anticorrupção
Mapeamento de Contexto
Contexto
Subdomínio
Subdomínios?
Domínio
Contexto
Como entender mais sobre a área do problema?
Plataforma de validação,�exploração e construção do�Storytelling do negócio�de maneira colaborativa
EventStorming
EventStorming?
Alberto Brandolini
Livro
Alberto Brandolini
Introducing�EventStorming
An act of Deliberate Collective Learning
Entendimento coletivo contando histórias
“ A ignorância é o maior impedimento para o throughput ”
!?
– Dan North
Quem?
Quando?
Onde?
Pra que?
Por que Eventos?
Eventos
Comportamento emergente
Propósito ou função
Interconexões / Relações
Elementos
Entender um sistema
Exploração
Gerar Caos
Gerar Caos
Estrutura emergente
Estrutura emergente
Estrutura e relações
Subdominios e Contextos
Validação de narrativas
Validação de narrativas
Vários sabores
Diferentes momentos
TO-BE
AS-IS
Oportunidades e problemas
Validação entre o ideal e viável
Software Design
Aceitando a realidade
Descoberta incremental
“ É o entendimento do desenvolvedor que se torna software, e não o do Stakeholder ”
!?
– Alberto Brandolini
“ Por anos juntamos vários times de uma organização e misturamos em um software ”
!?
– Alberto Brandolini
Manda Salve!
sebas@taller.net.br
�taller.net.br
blog.taller.net.br��� Instagram: taller.team� Twitter: @tallerteam� Tallercast: spoti.fi/3V5w1Yk�� Estamos contratando!