O Programador Pragmático

Preview:

DESCRIPTION

Treinamento ministrado na Pitang Agile IT entre 2011 e 2012.

Citation preview

O Programador Pragmático

Andrew Hunt & David Thomas

Uma empresaC.E.S.A.R

Tadeu Marinhotadeu.marinho@pitang.com

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.

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.

Definição

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

Desenvolvedores

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

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!

Dica 1

Preocupe-se com seu trabalho.

Dica 2

Reflita sobre seu trabalho.

Kaizen

Projeto:–Fazer continuamente diversas pequenas melhorias;

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

Uma Filosofia Pragmática

Dica 3

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

Dica 4

Não tolere janelas quebradas.

Dica 5

Seja um catalisador da mudança.

Dica 6

Lembre-se do cenário em larga escala.

Dica 7

Torne a qualidade parte dos requisitos.

Dica 8

Invista regularmente em sua carteira de conhecimentos.

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.

Carteira de Conhecimentos

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

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.

Dica 9

Analise criticamente o que você lê e ouve.

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.

Dica 10

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

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.

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?

Email

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

Uma Abordagem Pragmática

Dica 11

NSR - Não se repita.

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.

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.

Duplicidade Imposta

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

Duplicação Impaciente

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

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.

Dica 12

Facilite a reutilização.

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.

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

Dica 13

Elimine efeitos entre elementos não relacionados.

Codificando

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

Reversibilidade

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

Emil-Auguste Chartier, Propos sur la religion, 1983

Dica 14

Não há decisões definitivas.

Dica 15

Use projéteis luminosos para encontrar o alvo.

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;

Dica 16

Crie protótipos para aprender.

Dica 17

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

Dica 18

Estime para evitar surpresas.

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.

Dica 19

Reexamine o cronograma junto ao código.

As Ferramentas Básicas

Dica 20

Mantenha as informações em texto simples.

Dica 21

Use o poder dos shells de comando.

Dica 22

Use bem o seu editor.

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?

Dica 23

Use sempre o controle de código-fonte.

Dica 24

Corrija o problema, esqueça o culpado.

Dica 25

Não entre em pânico.

Dica 26

“select”não está com defeito.

Dica 27

Não suponha – teste.

Dica 28

Aprenda uma linguagem de manipulação de texto.

Dica 29

Escreva um código que crie códigos.

Paranóia Pragmática

Dica 30

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

Dica 31

Projete com contratos.

Dica 32

Encerre antecipadamente.

Dica 33

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

Dica 34

Use exceções para problemas excepcionais.

Dica 35

Acabe o que começou.

Seja Flexível

Dica 36

Reduza a vinculação entre módulos.

Dica 37

Configure, não integre.

Dica 38

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

Dica 39

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

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.

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

Dica 40

Projete usando serviços.

Dica 41

Projete sempre pensando na concorrência.

Dica 42

Separe as visualizações dos modelos.

Dica 43

Use quadros-negros para coordenar o fluxo de trabalho.

Enquanto Você Está Codificando

Dica 44

Não programe por coincidência.

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.

Dica 45

Estime a ordem de seus algoritmos.

Dica 46

Teste suas estimativas.

Dica 47

Refatore cedo, refatore sempre.

Quando Refatorar

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

Dica 48

Projete para testar.

Dica 49

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

Dica 50

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

Antes de Começar

Dica 51

Não colete requisitos, cave-os.

Dica 52

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

Dica 53

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

Dica 54

Use um glossário do projeto.

Dica 55

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

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.

Resposta

Desafio 2

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

Resposta

Dica 56

Só comece quando estiver pronto.

Dica 57

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

Dica 58

Não seja escravo dos métodos formais.

Dica 59

Ferramentas caras não produzem software melhores.

Projetos Pragmáticos

Dica 60

Organize as equipes com base na funcionalidade.

Dica 61

Não use procedimentos manuais.

Dica 62

Teste cedo. Teste sempre. Teste automaticamente.

Dica 63

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

Dica 64

Use sabotadores para testar seus testes.

Dica 65

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

Dica 66

Encontre os erros apenas uma vez.

Dica 67

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

Dica 68

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

Dica 69

Exceda gentilmente as expectativas de seus usuários.

Dica 70

Assine seu trabalho.

Tadeu Marinho81 3134.5875

tadeu.marinho@pitang.comwww.pitang.com.br