Precisa de ajuda para escolher o seu
treinamento ou tem alguma dúvida?

Thoughtworks Antologia Brasil – histórias de aprendizado e inovação

Disse Aristóteles: “Se vi ao longe é porque estava nos ombros dos gigantes”.

Assim me sinto como editor desta obra. Foi com muito orgulho que participei da fundação da ThoughtWorks Brasil em 2009, e é com muita honra que apresento esta antologia da Thoughtworks Brasil.

 

Este livro contém 18 capítulos independentes, mas complementares, com histórias, ensinamentos e práticas dos meus amigos e colegas de trabalho, gigantes do desenvolvimento de software.

 

Paulo Caroli, editor

 

cover

Autores:

Adriano Bonat, Alexandre Klaser, Alexey A. Villas Bôas, Carlos Lopes, Claudia Melo, Daniel Amorim, Émerson Hernandez, Fabio Pereira, Francisco Trindade, Glauber Ramos, Guilherme Froes, Hugo Corbucci, Juraci Vieira, Luiza de Souza, Marcos Brizeno, Mário Areias, Maurício Silveira Sanches, Natalia Arsand, Nicholas Pufal, Paulo Caroli, Roger Almeida, Tainã Caetano

 

Sumario

Prefácio por Luca Bastos

Foreword por Ronaldo Ferraz

1 Inceptions de uma semana 1

1.1 Inception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Inception de uma semana . . . . . . . . . . . . . . . . . . . . . 2

1.3 Estrutura de uma inception de uma semana . . . . . . . . . . 2

1.4 Quebrando o gelo . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.5 Visao do produto . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.6 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.7 Personas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.8 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.9 Historias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.10 Refinamento das historias . . . . . . . . . . . . . . . . . . . . 16

1.11 O mapeamento das historias . . . . . . . . . . . . . . . . . . . 20

1.12 Conclusao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2 Produtividade e adaptabilidade de times ageis: conceitos e paradoxos

25

2.1 Agil e produtivo? . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.2 Conceitos de produtividade . . . . . . . . . . . . . . . . . . . 27

2.3 Agilidade e sobre mudanca de paradigma . . . . . . . . . . . 31

2.4 O que significa produtividade de times ageis? . . . . . . . . . 32

2.5 Paradoxos envolvendo eficiencia e flexibilidade e seu impacto

na produtividade de times ageis . . . . . . . . . . . . . . . . . 35

2.6 Conclusao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3 Peopleware: entendendo ambientes corporativos 39

3.1 Cargos e estruturas . . . . . . . . . . . . . . . . . . . . . . . . 40

3.2 Empatia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.3 Motivadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.3.1 Motivadores extrinsecos . . . . . . . . . . . . . . . . 43

3.3.2 Motivadores intrinsecos . . . . . . . . . . . . . . . . 44

3.4 Algumas ferramentas . . . . . . . . . . . . . . . . . . . . . . . 44

3.4.1 A escala de necessidades de Maslow . . . . . . . . . 45

3.4.2 Os niveis logicos de pensamento . . . . . . . . . . . 46

3.4.3 Os 10 desejos intrinsecos . . . . . . . . . . . . . . . . 48

3.4.4 Mapas de empatia . . . . . . . . . . . . . . . . . . . . 49

3.5 Como usar tudo isso: seu circulo de influencia . . . . . . . . 51

4 Psicologia cognitiva explicando Agil 55

4.1 Nao somos racionais Ilusoes cognitivas e um cerebro que

pensa de forma relativa . . . . . . . . . . . . . . . . . . . . . . 56

4.2 Ilusoes de optica e ilusoes cognitivas . . . . . . . . . . . . . . 59

4.3 O que as ilusoes cognitivas tem a ver com Desenvolvimento

Agil? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

4.4 Sindrome do Estudante explicando iteracoes . . . . . . . . . 62

4.5 Cegueira nao intencional . . . . . . . . . . . . . . . . . . . . . 64

4.6 Geladeira ou radiador? . . . . . . . . . . . . . . . . . . . . . . 65

4.7 Um desmaio na rua, a difusao de responsabilidade e os itens

da retrospectiva . . . . . . . . . . . . . . . . . . . . . . . . . . 67

4.8 Valorizo, pois tambem sou dono . . . . . . . . . . . . . . . . . 68

4.9 Principio da prioridade relativa . . . . . . . . . . . . . . . . . 69

4.10 Um taco, uma bola, um teste . . . . . . . . . . . . . . . . . . . 72

4.11 Resumo das correlacoes . . . . . . . . . . . . . . . . . . . . . . 73

4.12 A importancia das correlacoes . . . . . . . . . . . . . . . . . . 74

4.13 Psicologo por paixao . . . . . . . . . . . . . . . . . . . . . . . 74

5 Queremos inovar! 75

5.1 Uma historia da (falta de) inovacao . . . . . . . . . . . . . . . 76

5.2 Mudar e necessario . . . . . . . . . . . . . . . . . . . . . . . . 78

5.3 Conheca a Lean Startup . . . . . . . . . . . . . . . . . . . . . . 79

5.4 Entendendo as dificuldades . . . . . . . . . . . . . . . . . . . 81

5.4.1 Inovacao nao e so entregar software . . . . . . . . . . 81

5.4.2 Sucesso nao e apenas fazer o que voce ja faz bem . . 82

5.4.3 Uma pessoa com uma ideia, a unidade de inovacao 82

5.4.4 A regra e fracassar . . . . . . . . . . . . . . . . . . . . 83

5.5 Quebrando a uniformidade . . . . . . . . . . . . . . . . . . . 83

5.6 As fases da inovacao . . . . . . . . . . . . . . . . . . . . . . . . 84

5.6.1 Geracao de insights: como fazer as ideias fluirem? . 85

5.6.2 Modelando ideias: transformando pensamentos aleatorios

em modelos de negocios . . . . . . . . . . . . 86

5.6.3 Executando modelos de negocios: transformando

ideias em atividades lucrativas . . . . . . . . . . . . . 88

5.7 Reflexoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

6 Mirebalais Melhorando a sociedade com tecnologia 91

6.1 Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

6.2 O foco diferenciado . . . . . . . . . . . . . . . . . . . . . . . . 94

6.2.1 Parte tecnica . . . . . . . . . . . . . . . . . . . . . . . 95

6.2.2 Produto Minimo Viavel . . . . . . . . . . . . . . . . . 97

6.2.3 Experiencia de usuario . . . . . . . . . . . . . . . . . 98

6.3 Inovacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

6.4 Conclusao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

7 Formando novos profissionais: um relato de parceria entre empresa

e universidade 107

7.1 Motivacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

7.2 Idealizando o programa . . . . . . . . . . . . . . . . . . . . . . 109

7.3 O framework de capacitacao . . . . . . . . . . . . . . . . . . . 111

7.3.1 Captacao de participantes: divulgacao e recrutamento 112

7.3.2 Estrutura: papeis e praticas . . . . . . . . . . . . . . . 116

7.4 Praticas ageis adotadas . . . . . . . . . . . . . . . . . . . . . . 117

7.5 Conclusao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

7.6 Agradecimentos . . . . . . . . . . . . . . . . . . . . . . . . . . 125

8 Programacao em par 127

8.1 Definicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

8.2 Quando parear . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

8.3 Ilhas de conhecimento . . . . . . . . . . . . . . . . . . . . . . 130

8.4 Ferramental e pareamento remoto . . . . . . . . . . . . . . . . 132

8.5 Tecnicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

8.6 Conclusao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

9 Varios projetos, objetivos diferentes, mas o codigo em comum 141

9.1 Problemas com branching . . . . . . . . . . . . . . . . . . . . 142

9.1.1 Merge hell . . . . . . . . . . . . . . . . . . . . . . . . 143

9.1.2 Merge monkey . . . . . . . . . . . . . . . . . . . . . . 144

9.1.3 Integracao promiscua . . . . . . . . . . . . . . . . . . 146

9.2 Trunk Based Development . . . . . . . . . . . . . . . . . . . . 147

9.2.1 Tipos de trunk . . . . . . . . . . . . . . . . . . . . . . 148

9.2.2 Feature toggles . . . . . . . . . . . . . . . . . . . . . . 153

9.3 Branches sao do mal? . . . . . . . . . . . . . . . . . . . . . . . 154

9.4 Conclusao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

10 Dissecando feature toggles 157

10.1 Feature toggles na pratica . . . . . . . . . . . . . . . . . . . . . 158

10.2 Precaucoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

10.3 Tipos de feature toggles . . . . . . . . . . . . . . . . . . . . . . 160

10.3.1 Toggle de desenvolvimento . . . . . . . . . . . . . . . 161

10.3.2 Toggle de operacoes . . . . . . . . . . . . . . . . . . . 161

10.3.3 Toggle de negocio . . . . . . . . . . . . . . . . . . . . 162

10.4 Arquitetura da aplicacao . . . . . . . . . . . . . . . . . . . . . 163

10.4.1 Conteudo estatico . . . . . . . . . . . . . . . . . . . . 164

10.5 Quando remover feature toggles . . . . . . . . . . . . . . . . . 165

10.6 Conclusao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

11 Estudo de caso: automacao comoprimeiro passo para entrega continua

169

11.1 Em busca da entrega continua . . . . . . . . . . . . . . . . . . 170

11.2 Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

11.3 A iniciativa de melhoria de implantacoes . . . . . . . . . . . . 173

11.3.1 Fase 1 – Automacao . . . . . . . . . . . . . . . . . . . 174

11.3.2 Fase 2 Melhorando a confianca nos scripts . . . . . 177

11.4 Avaliando o resultado . . . . . . . . . . . . . . . . . . . . . . . 179

11.5 Conclusao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

12 Explorando padroes de implementacao em Ruby 181

12.1 Padrao State . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

12.2 Padrao Active Record . . . . . . . . . . . . . . . . . . . . . . . 188

12.3 Padroes construtores . . . . . . . . . . . . . . . . . . . . . . . 192

12.4 Padrao Map/Reduce . . . . . . . . . . . . . . . . . . . . . . . . 195

12.5 Conclusao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

13 Testando JavaScript com o Protactor: um exemplo de solucao integradora

201

13.1 Press start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

13.2 Entendendo o Protractor mais a fundo . . . . . . . . . . . . . 203

13.3 Por que usar Protractor? . . . . . . . . . . . . . . . . . . . . . 211

14 Melhore seus testes 213

14.1 Trate codigo de teste como codigo de producao . . . . . . . . 213

14.1.1 Repetir ou nao se repetir? . . . . . . . . . . . . . . . 214

14.1.2 Legibilidade vs. repeticao . . . . . . . . . . . . . . . . 215

14.1.3 Qualidade do codigo de testes . . . . . . . . . . . . . 216

14.2 Utilize padroes de testes . . . . . . . . . . . . . . . . . . . . . . 217

14.2.1 Padroes de organizacao de codigo . . . . . . . . . . . 217

14.2.2 Padroes de banco de dados . . . . . . . . . . . . . . . 219

14.2.3 Padroes de verificacao de resultado . . . . . . . . . . 220

14.2.4 Varios outros tipos de padroes . . . . . . . . . . . . . 221

14.3 Evite testes instaveis . . . . . . . . . . . . . . . . . . . . . . . . 221

14.3.1 Testes nao deterministicos . . . . . . . . . . . . . . . 222

14.3.2 Possiveis causas de instabilidade . . . . . . . . . . . . 222

14.3.3 Melhorando a instabilidade . . . . . . . . . . . . . . 224

14.4 Teste no nivel apropriado . . . . . . . . . . . . . . . . . . . . . 225

14.4.1 Custos e niveis de testes . . . . . . . . . . . . . . . . . 225

14.4.2 Piramide de testes . . . . . . . . . . . . . . . . . . . . 226

14.4.3 Antipadroes de balanceamento . . . . . . . . . . . . 228

14.4.4 Como diminuir o problema . . . . . . . . . . . . . . 228

14.5 Conclusao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

15 Entendendo e utilizando dubles de teste 231

15.1 Stub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

15.2 Fake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

15.3 Dummy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

15.4 Mocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

15.5 Spy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

15.6 Dubles de teste e TDD . . . . . . . . . . . . . . . . . . . . . . 240

15.7 Utilizar dubles, sim . . . . . . . . . . . . . . . . . . . . . . . . 241

16 Desmistificando o BDD 243

16.1 BDD e geralmente mal compreendido . . . . . . . . . . . . . 244

16.2 Os fundamentos de BDD . . . . . . . . . . . . . . . . . . . . . 244

16.3 O BDD aprimorando o TDD . . . . . . . . . . . . . . . . . . . 245

16.4 Os tres principios do BDD . . . . . . . . . . . . . . . . . . . . 248

16.5 Principais reclamacoes sobre BDD . . . . . . . . . . . . . . . 248

16.5.1 O cliente nao se importa com testes, logo, nao lhe

interessa se o time aplica BDD ou nao . . . . . . . . . 248

16.5.2 O cliente nao quer escrever as especificacoes na ferramenta

destinada a isso . . . . . . . . . . . . . . . . . 249

16.6 Comunicacao e o fluxo de trabalho . . . . . . . . . . . . . . . 252

16.7 Sessao de 3 amigos . . . . . . . . . . . . . . . . . . . . . . . . . 254

16.8 Um caso de sucesso usando BDD . . . . . . . . . . . . . . . . 257

16.9 Consideracoes finais . . . . . . . . . . . . . . . . . . . . . . . . 258

Indice Remissivo 259

Bibliografia 269

 

Paulo Caroli

Paulo Caroli is an author, speaker, and consultant specializing in agile transformations, Lean Inception, and OKRs. With over 30 years of experience—including nearly a decade in Silicon Valley and 18 years at ThoughtWorks—he has helped organizations transition from project to product and from strategy to execution. Creator of the Lean Inception methodology and author of bestselling books like Lean Inception and Team OKR, Paulo is dedicated to empowering teams to align, validate, and deliver real business value.
Promoção Amigos

Promoção Amigos

Aproveite suas férias investindo em conhecimento!A Caroli.org preparou uma super ação para você e seus amigos aprenderem muito com nossos Treinamentos exclusivos e autorais.QUANTO MAIS AMIGOS VOCÊ REUNIR, MAIOR SERÁ O DESCONTO RECEBIDO.TODAS AS PESSOAS INSCRITAS...

ler mais

Pin It on Pinterest