code review
o que isso diz sobre a cultura dos
times de desenvolvimento?
Slide 2
Slide 2 text
Elaine Naomi Watanabe
Desenvolvedora de Software (Plataformatec)
Mestre em Ciência da Computação (USP)
twitter.com/elaine_nw
speakerdeck.com/elainenaomi
Slide 3
Slide 3 text
careers.plataformatec.com.br
Slide 4
Slide 4 text
expectativa
discutir desafios e boas práticas de code review
Slide 5
Slide 5 text
code review
processo de verificação de um sistema por meio da
análise do código fonte, realizada por humanos
https://en.wikipedia.org/wiki/Code_review
Slide 6
Slide 6 text
https://en.wikipedia.org/wiki/Code_review
code review
processo de verificação de um sistema por meio da
análise do código fonte, realizada por humanos
Slide 7
Slide 7 text
pelo menos um dos humanos não pode ter
alterado o código em revisão
importante
Slide 8
Slide 8 text
por que precisamos disso?
Slide 9
Slide 9 text
garantia de qualidade
processo que visa a criação de softwares confiáveis,
corretos e com valor de negócio
https://en.wikipedia.org/wiki/Software_quality
Slide 10
Slide 10 text
http://agilemodeling.com/essays/modelReviews.htm
Desenv.
custo da mudança
tempo
Requisitos
Análise e
Design
Revisão Testes Produção
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
como fazer um code review?
Slide 13
Slide 13 text
Pair Programming
Pull Request
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
Pair Programming
Pull Request
Slide 16
Slide 16 text
interação
assíncrona
distribuída
Mesmo
local
Mesmo tempo Tempo diferente
Locais
diferentes
interação
síncrona
distribuída
interação
assíncrona
interação
face-a-face
Johansen, Robert. "Groupware: Future directions and wild cards."
Journal of Organizational Computing and Electronic Commerce 1.2 (1991): 219-227.
Slide 17
Slide 17 text
interação
assíncrona
distribuída
Mesmo
local
Mesmo tempo Tempo diferente
Locais
diferentes
interação
síncrona
distribuída
interação
assíncrona
interação
face-a-face
Johansen, Robert. "Groupware: Future directions and wild cards."
Journal of Organizational Computing and Electronic Commerce 1.2 (1991): 219-227.
Slide 18
Slide 18 text
Pair Programming
Pull Request
código + contexto de negócio
Slide 19
Slide 19 text
Pair Programming
Pull Request
histórico acessível das discussões
Slide 20
Slide 20 text
boas práticas
Slide 21
Slide 21 text
como pessoa autora
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
Título explicativo
Motivação (contexto de negócio)
Lista de dúvidas e discussões prévias
Gifs, screenshots das alterações
Pull requests
Slide 24
Slide 24 text
Mensagens de commits coerentes
Código completo, testado
Alterações pequenas
Single responsibility principle
Pull requests
Slide 25
Slide 25 text
como pessoa revisora
Slide 26
Slide 26 text
como pessoa revisora
Slide 27
Slide 27 text
No content
Slide 28
Slide 28 text
Identificar defeitos (bugs)
Sugerir soluções alternativas, refatorações
Reforçar padrões de código e design
Validar funcionalidade (código + negócio)
Pull requests
Slide 29
Slide 29 text
Identificar problemas de segurança
Analisar impactos na performance
Sugerir documentações
Validação da qualidade do código-fonte
Pull requests
Slide 30
Slide 30 text
Código fácil de ler
Código fácil de entender
Código fácil de manter
Código de qualidade
Slide 31
Slide 31 text
Código fácil de ler
Código fácil de entender
Código fácil de manter
Código de qualidade
Slide 32
Slide 32 text
Dívida Técnica
Valor de negócio
Custo da mudança
Tempo
How to Monetize Application Technical Debt, Gartner, 2011
Slide 33
Slide 33 text
outros aspectos importantes
Slide 34
Slide 34 text
informar outros times
sobre as alterações
team awareness
Slide 35
Slide 35 text
transferência de conhecimento
mentoria
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
No content
Slide 38
Slide 38 text
processo de feedback
Slide 39
Slide 39 text
No content
Slide 40
Slide 40 text
processo de feedback
textual
Slide 41
Slide 41 text
cuidado com possíveis equívocos
Slide 42
Slide 42 text
é para eu jogar fora a minha alteração?
Slide 43
Slide 43 text
ah, era só para apagar o espaço extra
Slide 44
Slide 44 text
cuidado para não levar
para o lado pessoal
Slide 45
Slide 45 text
o feedback é sobre o código,
e não sobre as pessoas
Slide 46
Slide 46 text
é importante comentários
mais explícitos, descritivos
Slide 47
Slide 47 text
collective code ownership
Slide 48
Slide 48 text
No content
Slide 49
Slide 49 text
quem faz review, ajuda na
construção da solução também
Slide 50
Slide 50 text
No content
Slide 51
Slide 51 text
comportamentos
tóxicos
Slide 52
Slide 52 text
No content
Slide 53
Slide 53 text
podia ser pior?
com certeza!
Slide 54
Slide 54 text
podia ser pior?
com certeza!
Slide 55
Slide 55 text
mas, ainda sim,
é super tóxico
Slide 56
Slide 56 text
No content
Slide 57
Slide 57 text
Comportamentos tóxicos
https://medium.com/@jgefroh/toxic-developers-considered-harmful-f7ea1494d4c0
Impedem inovações e ideias
Promovem a cultura da não-comunicação
Colocam o projeto e negócio em risco por centralizar informação
Comunicação agressiva (verbal, não-verbal e escrita)
Slide 58
Slide 58 text
"como assim você não sabe isso???"
Slide 59
Slide 59 text
"como deixaram você entrar aqui??"
Slide 60
Slide 60 text
"vou ter que te explicar de novo?"
Slide 61
Slide 61 text
como evitar isso?
Slide 62
Slide 62 text
Faça reviews como seres humanos
https://mtlynch.io/human-code-reviews-1/
https://mtlynch.io/human-code-reviews-2/
Slide 63
Slide 63 text
ask, don't tell
Slide 64
Slide 64 text
ok, é só perguntar
Slide 65
Slide 65 text
ok, é só perguntar
Slide 66
Slide 66 text
"Testes não são importantes pra vc?"
pergunta sarcástica, com julgamento pessoal
Slide 67
Slide 67 text
"Testes não são importantes pra vc?"
pergunta sarcástica, com julgamento pessoal
Slide 68
Slide 68 text
"Esse PR não pode ser mergeado"
comentário opinativo, sem ação concreta, imperativo
Slide 69
Slide 69 text
"Esse PR não pode ser mergeado"
comentário opinativo, sem ação concreta, imperativo
Slide 70
Slide 70 text
"Por que não criou uma nova classe?"
pergunta com julgamento pessoal ainda
"como você não pensou nisso?"
Slide 71
Slide 71 text
"Por que não criou uma nova classe?"
pergunta com julgamento pessoal ainda
"como você não pensou nisso?"
Slide 72
Slide 72 text
busque comentar
de maneira construtiva
Slide 73
Slide 73 text
construtivo
"O que você acha sobre extrair essa
lógica para uma classe? Acredito que
vai melhorar a legibilidade e reduzir a
complexidade"
Slide 74
Slide 74 text
sem suposição, tom de sugestão
"Não sei se você já analisou isso,
mas será que não vale a pena criar uma
nova classe para esse caso?"
Slide 75
Slide 75 text
No content
Slide 76
Slide 76 text
"Sentiment analysis on comments has
provided evidence that comments with
negative tone are less likely to be useful"
Sadowski, Caitlin, et al. "Modern code review: a case study at Google." Proceedings of the 40th International
Conference on Software Engineering: Software Engineering in Practice. ACM, 2018
Slide 77
Slide 77 text
os conflitos na equipe vão acabar?
Slide 78
Slide 78 text
No content
Slide 79
Slide 79 text
conflitos podem acontecer ainda
Slide 80
Slide 80 text
porque discordar não é um problema
Slide 81
Slide 81 text
cuidado com comentários
não-relacionados à entrega
Slide 82
Slide 82 text
por exemplo
Slide 83
Slide 83 text
comentários repetitivos
sobre estilo de código
Slide 84
Slide 84 text
podem ser substituídos por uma
ferramenta de análise de código
Slide 85
Slide 85 text
No content
Slide 86
Slide 86 text
No content
Slide 87
Slide 87 text
melhorias de design podem ser
entregues em outro pull request
preste atenção na forma
como você se comunica com seu time
Slide 101
Slide 101 text
muitas vezes não é óbvio que um
comentário ou comportamento é
prejudicial
Slide 102
Slide 102 text
exercite a empatia
Slide 103
Slide 103 text
e como organização?
Slide 104
Slide 104 text
dê visibilidade sobre o processo
de code review
Slide 105
Slide 105 text
preste atenção na forma
como seu time se comunica
Slide 106
Slide 106 text
comunicação
verbal, não verbal e escrita
Slide 107
Slide 107 text
formalize as recomendações,
crie guidelines sobre
aspectos comportamentais
Slide 108
Slide 108 text
estimule um ambiente colaborativo
Slide 109
Slide 109 text
No content
Slide 110
Slide 110 text
o que cultura tem a ver
com tudo isso?
Slide 111
Slide 111 text
No content
Slide 112
Slide 112 text
No content
Slide 113
Slide 113 text
"A cultura não faz as pessoas,
as pessoas fazem a cultura"
Chimamanda Ngozi Adichie
Slide 114
Slide 114 text
por isso, cuidado com
comportamentos tóxicos
Slide 115
Slide 115 text
promova diversidade
Slide 116
Slide 116 text
diversidade ajuda a estimular empatia
Slide 117
Slide 117 text
e impacta positivamente
na inovação e lucro
Slide 118
Slide 118 text
https://assets.mckinsey.com/~/media/857F440109AA4D13A54D9C496D86ED58.ashx
Diversidade de gênero:
21% mais chances de resultados
acima da média do mercado
Diversidade cultural e étnica:
33% mais chances de resultados
acima da média do mercado
Slide 119
Slide 119 text
o ambiente também importa
fatores não-técnicos
Slide 120
Slide 120 text
pressão, sobrecarga de atividades,
experiência e contexto de negócio
Baysal, Olga, et al. "The influence of non-technical factors on code review." 2013 20th Working
Conference on Reverse Engineering (WCRE). IEEE, 2013.
Slide 121
Slide 121 text
No content
Slide 122
Slide 122 text
times mais colaborativos,
softwares melhores
Slide 123
Slide 123 text
"Instead of imagining that our main
task is to instruct a computer what
to do, let us concentrate rather on
explaining to human beings what we
want a computer to do."
Donald Knuth. "Literate Programming (1984)" in Literate Programming. CSLI, 1992, pg. 99.
Slide 124
Slide 124 text
minhas referências
Slide 125
Slide 125 text
No content
Slide 126
Slide 126 text
No content
Slide 127
Slide 127 text
No content
Slide 128
Slide 128 text
No content
Slide 129
Slide 129 text
No content
Slide 130
Slide 130 text
No content
Slide 131
Slide 131 text
guidelines.plataformatec.com.br
github.blog/2015-01-21-how-to-write-the-perfect-pull-request
medium.com/palantir/19e02780015f
medium.com/@jgefroh/f7ea1494d4c0
forbes.com/sites/quora/2014/11/07/10-characteristics-of-a-bad-softwar
e-engineer
blog.plataformatec.com.br/2018/07/como-evitar-silos-de-conhecimento-
na-sua-codebase-e-levar-seus-code-reviews-para-o-proximo-nivel/
Mais referências:
Slide 132
Slide 132 text
Building an Iconic Company - Reed Hasting
youtube.com/watch?v=BsXXIfqbnRk
A Arquitetura (Peculiar) do Stack Overflow - Roberta Arcoverde
infoq.com/br/presentations/a-arquitetura-peculiar-do-stack-overflow
Implementing a Strong Code-Review Culture - Derek Prior
youtube.com/watch?v=PJjmw9TRB7s
Mais referências: