Thoughtworks Antologia Brasil Histórias de aprendizado e inovação
ThoughtWorksPrefácio
Quando o Paulo Caroli me pediu este prefácio, a ideia era falar um pouco sobre cada capítulo deste livro. Comecei a escrever sobre cada um, mas hesitei. Em vez disso, optei por explicar o raciocínio que responde a uma antiga curiosidade que eu tinha, antes de conhecer detalhes desta empresa.
Antes de entrar na ThoughtWorks, sempre me intrigou como os thoughtworkers têm tempo e condições para avaliar e usar tantas práticas e tecnologias, e ainda conseguir compartilhar conhecimento em diferentes meios, como no ThoughtWorks Insights (http://www.thoughtworks.com/pt/insights), em blogs pessoais, livros, palestras e workshops, participação em projetos de Software Livre, além do já famoso e aguardado TechRadar (http://www.thoughtworks.com/radar).
Certo dia, presenciei uma pergunta feita ao Danilo Sato por um aluno de mestrado em uma palestra no IME-USP, Instituto de Matemática e Estatística da USP: “Danilo, sei que o conceito de BDD (Behavior Driven Development) foi criado na ThoughtWorks. Todo mundo lá usa esse tal de BDD?”.
A resposta dele surpreendeu professores, mestrandos e doutorandos presentes: “Por acaso, meu time atualmente está usando BDD, mas há tempos não usava”.
Uma das minhas primeiras descobertas na ThoughtWorks foi saber que não se adota a mesma coisa em todos os projetos. Acontece até com as técnicas criadas ou aperfeiçoadas aqui. Por exemplo, os projetos de software livre não são empregados apenas por serem desenvolvidos por outros colegas da mesma empresa.
Descobri que, em vez de unificar suas práticas e tecnologias, de buscar uma solução de referência para todos os projetos, padronizando bancos de dados, linguagens, ferramentas e processos, essa empresa promove, experimenta e amadurece práticas, ferramentas e processos. E é isso que você, meu caro leitor, pode esperar desta antologia.
Buscar uniformidade por conveniência dificulta encontrar o que é mais adequado, e isso é terrível para a criação, a evolução ou a inovação de ideias e das formas de trabalhar. Na ThoughtWorks, cada caso é analisado em busca de agregar experiências passadas e tendências futuras às exigências atuais do projeto. Escolhas são feitas com a visão mais ampla possível. Tudo dentro do nosso conceito de sucesso, que implica na satisfação do cliente junto com o impacto positivo na sociedade.
Somos atualmente uma empresa de quase três mil pessoas, com mais de 30 escritórios em 13 países. Em cada escritório, uma média de 100 pessoas, das quais 30% são de algum outro escritório. Uma troca constante de experiência e ideias.
Temos a paixão por compartilhar conhecimento, interna ou externamente. São comuns as apresentações na hora do almoço ou depois do expediente, abordando temas novos ou mostrando como determinado problema foi resolvido. Muitas dessas palestras ou workshops são feitos para todos os escritórios no Brasil e, algumas vezes, assistimos a apresentações de escritórios de outros países. Tudo de acordo com o que disse o autor, editor e consultor Peter Seibel: “Como ser um engenheiro 10X: ajude 10 outros serem duas vezes melhores”.
Essa exposição ao que está acontecendo em muitos projetos aqui e lá fora é somada às condições de discutir e experimentar novas práticas e tecnologias. Foi assim que entendi como compartilham tanto conhecimento, incluindo escrever antologias como esta.
Espero que aproveitem a leitura e conheçam mais um pouco do que usamos ou fazemos. Tenho certeza de que a experiência aqui compartilhada servirá para que mais pessoas nos ajudem na missão de melhorar a humanidade por meio do software, criando um ecossistema socialmente responsável e economicamente justo, além de mudar o papel da tecnologia na sociedade.
- Luca Bastos – Principal consultant na ThoughtWorks
Sumário
- 1 Inceptions de uma semana
- 1.1 Inception de uma semana
- 1.2 Quebrando o gelo
- 1.3 Visão do produto
- 1.4 Objetivos
- 1.5 Personas
- 1.6 Features
- 1.7 Histórias
- 1.8 Refinamento das histórias
- 1.9 O mapeamento das histórias
- 1.10 Conclusão
- 2 Produtividade e adaptabilidade de times ágeis: conceitos e paradoxos
- 2.1 Ágil é produtivo?
- 2.2 Conceitos de produtividade
- 2.3 Agilidade é sobre mudança de paradigma
- 2.4 O que significa produtividade de times ágeis?
- 2.5 Paradoxos envolvendo eficiência e flexibilidade e seu impacto na produtividade de times ágeis
- 2.6 Conclusão
- 3 Peopleware: entendendo ambientes corporativos
- 3.1 Cargos e estruturas
- 3.2 Empatia
- 3.3 Motivadores
- 3.4 Algumas ferramentas
- 3.5 Como usar tudo isso: seu círculo de influência
- 4 Psicologia cognitiva explicando Ágil
- 4.1 Não somos racionais: ilusões cognitivas e um cérebro que pensa de forma relativa
- 4.2 Ilusões de óptica e ilusões cognitivas
- 4.3 O que as ilusões cognitivas têm a ver com Desenvolvimento Ágil?
- 4.4 Síndrome do Estudante explicando iterações
- 4.5 Cegueira não intencional
- 4.6 Geladeira ou radiador?
- 4.7 Um desmaio na rua, a difusão de responsabilidade e os itens da retrospectiva
- 4.8 Valorizo, pois também sou dono
- 4.9 Princípio da prioridade relativa
- 4.10 Um taco, uma bola, um teste
- 4.11 A importância das correlações
- 5 Queremos inovar!
- 5.1 Uma história da (falta de) inovação
- 5.2 Mudar é necessário
- 5.3 Conheça a Lean Startup
- 5.4 Entendendo as dificuldades
- 5.5 Quebrando a uniformidade
- 5.6 As fases da inovação
- 5.7 Reflexões
- 6 Mirebalais – Melhorando a sociedade com tecnologia
- 6.1 Contexto
- 6.2 O foco diferenciado
- 6.3 Inovação
- 6.4 Conclusão
- 7 Formando novos profissionais: um relato de parceria entre empresa e universidade
- 7.1 Motivação
- 7.2 Idealizando o programa
- 7.3 O framework de capacitação
- 7.4 Práticas ágeis adotadas
- 7.5 Conclusão
- 8 Programação em par
- 8.1 Quando parear
- 8.2 Ilhas de conhecimento
- 8.3 Ferramental e pareamento remoto
- 8.4 Técnicas
- 8.5 Conclusão
- 9 Vários projetos e objetivos diferentes, mas o código em comum
- 9.1 Problemas com branching
- 9.2 Trunk Based Development
- 9.3 Tipos de trunk
- 9.4 Feature toggles
- 9.5 Branches são do mal?
- 9.6 Conclusão
- 10 Dissecando feature toggles
- 10.1 Feature toggles na prática
- 10.2 Precauções
- 10.3 Tipos de feature toggles
- 10.4 Arquitetura da aplicação
- 10.5 Quando remover feature toggles
- 10.6 Conclusão
- 11 Estudo de caso: automação como primeiro passo para entrega contínua
- 11.1 Em busca da entrega contínua
- 11.2 Contexto
- 11.3 A iniciativa de melhoria de implantações
- 11.4 Fase 1 – Automação
- 11.5 Fase 2 – Melhorando a confiança nos scripts
- 11.6 Avaliando o resultado
- 11.7 Conclusão
- 12 Explorando padrões de implementação em Ruby
- 12.1 Padrão State
- 12.2 Padrão Active Record
- 12.3 Padrões construtores
- 12.4 Padrão Map/Reduce
- 12.5 Conclusão
- 13 Testando JavaScript com Protractor: um exemplo de solução integradora
- 13.1 Press start
- 13.2 Entendendo o Protractor mais a fundo
- 13.3 Por que usar Protractor?
- 14 Melhore seus testes
- 14.1 Trate código de teste como código de produção
- 14.2 Utilize padrões de testes
- 14.3 Evite testes instáveis
- 14.4 Teste no nível apropriado
- 14.5 Conclusão
- 15 Entendendo e utilizando dublês de teste
- 15.1 Stub
- 15.2 Fake
- 15.3 Dummy
- 15.4 Mocks
- 15.5 Spy
- 15.6 Dublês de teste e TDD
- 15.7 Utilizar dublês, sim
- 16 Desmistificando o BDD
- 16.1 BDD é geralmente mal compreendido
- 16.2 Os fundamentos de BDD
- 16.3 O BDD aprimorando o TDD
- 16.4 Principais reclamações sobre BDD
- 16.5 Comunicação e o fluxo de trabalho
- 16.6 Sessão de 3 amigos
- 16.7 Um caso de sucesso usando BDD
- 16.8 Considerações finais
- 17 Referências bibliográficas
Dados do produto
- Número de páginas:
- 302
- ISBN:
- 978-85-5519-067-4
- Data publicação:
- 11/2014