113
O Programador Pragmático Andrew Hunt & David Thomas Uma empresa C.E.S.A.R Tadeu Marinho [email protected]

O Programador Pragmático

Embed Size (px)

DESCRIPTION

Treinamento ministrado na Pitang Agile IT entre 2011 e 2012.

Citation preview

Page 1: O Programador Pragmático

O Programador Pragmático

Andrew Hunt & David Thomas

Uma empresaC.E.S.A.R

Tadeu [email protected]

Page 2: O Programador Pragmático

Agenda

O Livro; Introdução;Uma filosofia pragmática;Uma abordagem pragmática;As ferramentas básicas;Paranóia pragmática;Seja flexível;Enquanto você está codificando;Antes do projeto;Projetos pragmáticos.

Page 3: O Programador Pragmático

O Livro

ISBN: 8577807002; ISBN-13: 9788577807000; Idioma: Livro em português;Encadernação: Brochura; Idioma: Português;Ano de Lançamento: 2009;Número de páginas: 343.

Page 4: O Programador Pragmático

Definição

Pragmático:–Do latim: pragmaticus - “Habilidoso no trabalho”;–Do grego: “πραττειν” - “fazer”.

Page 5: O Programador Pragmático

Desenvolvedores

Ser único:–Pontos fortes e fracos;–Preferências e aversões.

Page 6: O Programador Pragmático

Programador Pragmático

Características:–Adoção antecipada / adaptação rápida;– Inquisitivo;–Pensador crítico;–Realista;–Pau para toda obra.

Executam o trabalho e o executam bem!

Page 7: O Programador Pragmático

Dica 1

Preocupe-se com seu trabalho.

Page 8: O Programador Pragmático

Dica 2

Reflita sobre seu trabalho.

Page 9: O Programador Pragmático

Kaizen

Projeto:–Fazer continuamente diversas pequenas melhorias;

Pessoas:–Empenhar-se continuamente em aprimorar as habilidades;–Adicionar novas ferramentas às que já usa.

Page 10: O Programador Pragmático

Uma Filosofia Pragmática

Page 11: O Programador Pragmático

Dica 3

Forneça opções, não dê desculpas esfarrapadas.

Page 12: O Programador Pragmático

Dica 4

Não tolere janelas quebradas.

Page 13: O Programador Pragmático

Dica 5

Seja um catalisador da mudança.

Page 14: O Programador Pragmático

Dica 6

Lembre-se do cenário em larga escala.

Page 15: O Programador Pragmático

Dica 7

Torne a qualidade parte dos requisitos.

Page 16: O Programador Pragmático

Dica 8

Invista regularmente em sua carteira de conhecimentos.

Page 17: O Programador Pragmático

Carteira de Investimentos

Investidores sérios investem regularmente, como um hábito;A diversidade é a chave para o sucesso a longo prazo; Investidores astutos têm uma carteira equilibrada com

investimentos conservadores e de alto risco e remuneração;Os investidores tentam comprar barato e vender caro para

obter o máximo de retorno;As carteiras devem ser reexaminadas e reestruturadas

periodicamente.

Page 18: O Programador Pragmático

Carteira de Conhecimentos

Invista regularmente;Diversifique;Gerencie o risco;Compre barato, venda caro;Reexamine e reestruture.

Page 19: O Programador Pragmático

Sugestões

Aprenda pelo menos uma nova linguagem todo ano;Leia um livro técnico a cada trimestre;Leia também livros não técnicos;Tenha aulas;Participe de grupos de usuários locais;Experimente ambientes diferentes;Mantenha-se informado;Mantenha-se conectado.

Page 20: O Programador Pragmático

Dica 9

Analise criticamente o que você lê e ouve.

Page 21: O Programador Pragmático

Pensamento Crítico

O cuidado e a consulta com especialistas:–Saiba o que quer perguntar;–Seja específico;–Formule sua pergunta cuidadosamente e polidamente;–Preciso de ajuda não é suficiente;–Tenha paciência ao esperar um retorno.

Page 22: O Programador Pragmático

Dica 10

É o que você diz e a maneira como diz.

Page 23: O Programador Pragmático

Comunique-se

Saiba o que você quer dizer;Conheça seu público-alvo;Escolha seu momento;Escolha um estilo;Dê uma boa aparência.Envolva seu público-alvo;Seja um ouvinte;Dê retorno às pessoas.

Page 24: O Programador Pragmático

Seja ASTUTO

O que você quer que eles Aprendam?

Qual é Seu interesse no que você tem a dizer?

Seu Trabalho tem que nível de sofisticação?

Que nível de detalhes eles Usam?

Quem você quer que Tenha a posse da informação?

Como você pode motivá-los a Ouví-lo?

Page 25: O Programador Pragmático

Email

Releia;Verifique a ortografia;Mantenha um formato simples;Correspondência formatada;Crédito de citações;Verifique a lista de destinatários.

Page 26: O Programador Pragmático

Uma Abordagem Pragmática

Page 27: O Programador Pragmático

Dica 11

NSR - Não se repita.

Page 28: O Programador Pragmático

Os Males da Duplicação

Princípios NSR:–Cada bloco de informações deve ter uma representação oficial, exclusiva e sem ambigüidades dentro de um sistema.

Page 29: O Programador Pragmático

Como Surge a Duplicação

Duplicidade imposta:–Acham que não tem escolhas - o ambiente parece pedir.

Duplicação inadvertida:–Não percebem que estão duplicando informações.

Duplicação impaciente:–Preguiça e duplicam porque parece ser mais fácil.

Duplicidade entre desenvolvedores:–Várias pessoas duplicam por desconhecer o sistema como um todo.

Page 30: O Programador Pragmático

Duplicidade Imposta

Várias representações das informações;Documentação no código;Documentação e código;Problemas de linguagem;

Page 31: O Programador Pragmático

Duplicação Impaciente

Atalhos causam grandes atrasos;Fácil de detectar e manipular;Exige disciplina e disposição de se preocupar antes.

Page 32: O Programador Pragmático

Duplicação Entre Desenvolvedores

Mais difícil de detectar e manipular;Pode passar despercebida por anos;Encorajar comunicação ativa e freqüente entre

desenvolvedores.

Page 33: O Programador Pragmático

Dica 12

Facilite a reutilização.

Page 34: O Programador Pragmático

Ortogonalidade

Termo emprestado da geometria;Representa um tipo de independência ou desvinculação;Duas ou mais coisas são ortogonais quando alterações em uma

não afetam as outras;Vantagens:

–Maior produtividade;–Menor risco.

Page 35: O Programador Pragmático

Diagramas de Camadas

Interface de Usuário

Acesso ao Banco de Dados

Mecanismo de Relatório

Lógica de Negócio

Estrutura do AplicativoBiblioteca C Padrão

Sistema Operacional

Page 36: O Programador Pragmático

Dica 13

Elimine efeitos entre elementos não relacionados.

Page 37: O Programador Pragmático

Codificando

Mantenha seu código desvinculado;Evite dados globais;Evite funções semelhantes;

Page 38: O Programador Pragmático

Reversibilidade

“Nada é mais perigoso do que uma idéia quando ela é a única que você tem.”

Emil-Auguste Chartier, Propos sur la religion, 1983

Page 39: O Programador Pragmático

Dica 14

Não há decisões definitivas.

Page 40: O Programador Pragmático

Dica 15

Use projéteis luminosos para encontrar o alvo.

Page 41: O Programador Pragmático

Vantagens

Os usuários podem ver algo funcionando antes;Os desenvolvedores constroem uma estrutura na qual podem

trabalhar;Você terá uma plataforma de integração;Você terá algo para demonstrar;Você sentirá melhor o progresso;

Page 42: O Programador Pragmático

Dica 16

Crie protótipos para aprender.

Page 43: O Programador Pragmático

Dica 17

Programe em um nível próximo ao domínio do problema.

Page 44: O Programador Pragmático

Dica 18

Estime para evitar surpresas.

Page 45: O Programador Pragmático

Estimando

Entenda o que está sendo pedido;Construa um modelo do sistema;Divida o modelo em componentes;Dê a cada parâmetro um valor;Calcule respostas;Acompanhe sua habilidade em estimar.

Page 46: O Programador Pragmático

Dica 19

Reexamine o cronograma junto ao código.

Page 47: O Programador Pragmático

As Ferramentas Básicas

Page 48: O Programador Pragmático

Dica 20

Mantenha as informações em texto simples.

Page 49: O Programador Pragmático

Dica 21

Use o poder dos shells de comando.

Page 50: O Programador Pragmático

Dica 22

Use bem o seu editor.

Page 51: O Programador Pragmático

O Que Fazer?

Quem fez alterações nessa linha de código;Qual é a diferença entre a versão atual e da última semana?Quantas linhas de código alteramos nessa versão?Que arquivos foram alterados com mais freqüência?

Page 52: O Programador Pragmático

Dica 23

Use sempre o controle de código-fonte.

Page 53: O Programador Pragmático

Dica 24

Corrija o problema, esqueça o culpado.

Page 54: O Programador Pragmático

Dica 25

Não entre em pânico.

Page 55: O Programador Pragmático

Dica 26

“select”não está com defeito.

Page 56: O Programador Pragmático

Dica 27

Não suponha – teste.

Page 57: O Programador Pragmático

Dica 28

Aprenda uma linguagem de manipulação de texto.

Page 58: O Programador Pragmático

Dica 29

Escreva um código que crie códigos.

Page 59: O Programador Pragmático

Paranóia Pragmática

Page 60: O Programador Pragmático

Dica 30

Você não conseguirá criar um software perfeito.

Page 61: O Programador Pragmático

Dica 31

Projete com contratos.

Page 62: O Programador Pragmático

Dica 32

Encerre antecipadamente.

Page 63: O Programador Pragmático

Dica 33

Se não pode acontecer, use asserções para assegurar que não aconteça.

Page 64: O Programador Pragmático

Dica 34

Use exceções para problemas excepcionais.

Page 65: O Programador Pragmático

Dica 35

Acabe o que começou.

Page 66: O Programador Pragmático

Seja Flexível

Page 67: O Programador Pragmático

Dica 36

Reduza a vinculação entre módulos.

Page 68: O Programador Pragmático

Dica 37

Configure, não integre.

Page 69: O Programador Pragmático

Dica 38

Coloque as abstrações no código e os detalhes em metadados.

Page 70: O Programador Pragmático

Dica 39

Analise o fluxo de trabalho para melhorar a concorrência.

Page 71: O Programador Pragmático

Caipirinha

Passos:–Descasque os limões;–Corte em quatro partes cada limão;–Tire os caroços e o filete branco do meio dos limões;–Esprema alguns limões diretamente no copo com açúcar;–Pique gelo;–Acrescente o gelo picado e a cachaça ao copo;–Agite bem;–Sirva.

Page 72: O Programador Pragmático

Concorrência

Descascar limões

Cortar limões

Remover caroços e filetes brancos

Picar gelo

Espremer limões

Colocar cachaça em um copo

Colocar açúcar em um copo

Colocar gelo picado em um copo

Agitar bem

Sirva

Page 73: O Programador Pragmático

Dica 40

Projete usando serviços.

Page 74: O Programador Pragmático

Dica 41

Projete sempre pensando na concorrência.

Page 75: O Programador Pragmático

Dica 42

Separe as visualizações dos modelos.

Page 76: O Programador Pragmático

Dica 43

Use quadros-negros para coordenar o fluxo de trabalho.

Page 77: O Programador Pragmático

Enquanto Você Está Codificando

Page 78: O Programador Pragmático

Dica 44

Não programe por coincidência.

Page 79: O Programador Pragmático

Programando Deliberadamente

Esteja sempre consciente do que está fazendo;Não codifique às cegas;Aja de acordo com um plano;Confie apenas em coisas confiáveis;Documente suas suposições;Não teste apenas seu código;Priorize seu esforço;Não seja escravo da história.

Page 80: O Programador Pragmático

Dica 45

Estime a ordem de seus algoritmos.

Page 81: O Programador Pragmático

Dica 46

Teste suas estimativas.

Page 82: O Programador Pragmático

Dica 47

Refatore cedo, refatore sempre.

Page 83: O Programador Pragmático

Quando Refatorar

Duplicação;Projeto não ortogonal;Conhecimento desatualizado;Desempenho.

Page 84: O Programador Pragmático

Dica 48

Projete para testar.

Page 85: O Programador Pragmático

Dica 49

Teste seu software ou seus usuários testarão.

Page 86: O Programador Pragmático

Dica 50

Não use o código de assistente que você não entender.

Page 87: O Programador Pragmático

Antes de Começar

Page 88: O Programador Pragmático

Dica 51

Não colete requisitos, cave-os.

Page 89: O Programador Pragmático

Dica 52

Trabalhe com um usuário para pensar como um usuário.

Page 90: O Programador Pragmático

Dica 53

Abstrações tem vida mais longa do que detalhes.

Page 91: O Programador Pragmático

Dica 54

Use um glossário do projeto.

Page 92: O Programador Pragmático

Dica 55

Não pense fora da caixa - encontre a caixa.

Page 93: O Programador Pragmático

Desafio 1

Conectar todos os pontos do quebra-cabeça a seguir e voltar ao ponto inicial com apenas três linhas retas – sem tirar sua caneta do papel ou executar duas vezes a mesma etapa.

Page 94: O Programador Pragmático

Resposta

Page 95: O Programador Pragmático

Desafio 2

Você tem 10 soldados. Forme 5 filas com 4 soldados em cada uma.

Page 96: O Programador Pragmático

Resposta

Page 97: O Programador Pragmático

Dica 56

Só comece quando estiver pronto.

Page 98: O Programador Pragmático

Dica 57

Algumas coisas são fáceis de fazer, mas não de descrever.

Page 99: O Programador Pragmático

Dica 58

Não seja escravo dos métodos formais.

Page 100: O Programador Pragmático

Dica 59

Ferramentas caras não produzem software melhores.

Page 101: O Programador Pragmático

Projetos Pragmáticos

Page 102: O Programador Pragmático

Dica 60

Organize as equipes com base na funcionalidade.

Page 103: O Programador Pragmático

Dica 61

Não use procedimentos manuais.

Page 104: O Programador Pragmático

Dica 62

Teste cedo. Teste sempre. Teste automaticamente.

Page 105: O Programador Pragmático

Dica 63

A codificação só estará concluída após todos os testes serem executados.

Page 106: O Programador Pragmático

Dica 64

Use sabotadores para testar seus testes.

Page 107: O Programador Pragmático

Dica 65

Teste a cobertura de estados e não a cobertura de código.

Page 108: O Programador Pragmático

Dica 66

Encontre os erros apenas uma vez.

Page 109: O Programador Pragmático

Dica 67

Trate o português simplesmente como outra linguagem de programação.

Page 110: O Programador Pragmático

Dica 68

Construa a documentação no código, não acrescente como complemento.

Page 111: O Programador Pragmático

Dica 69

Exceda gentilmente as expectativas de seus usuários.

Page 112: O Programador Pragmático

Dica 70

Assine seu trabalho.

Page 113: O Programador Pragmático

Tadeu Marinho81 3134.5875

[email protected]