Você está na página 1de 113

O Programador Pragmtico

Andrew Hunt & David Thomas


Uma empresa
C.E.S.A.R
Tadeu Marinho
tadeu.marinho@pitang.com
Agenda
!
O Livro;
!
Introduo;
!
Uma filosofia pragmtica;
!
Uma abordagem pragmtica;
!
As ferramentas bsicas;
!
Parania pragmtica;
!
Seja flexvel;
!
Enquanto voc est codificando;
!
Antes do projeto;
!
Projetos pragmticos.
O Livro
!
ISBN: 8577807002;
!
ISBN-13: 9788577807000;
!
Idioma: Livro em portugus;
!
Encadernao: Brochura;
!
Idioma: Portugus;
!
Ano de Lanamento: 2009;
!
Nmero de pginas: 343.
Definio
!
Pragmtico:

Do latim: pragmaticus - Habilidoso no trabalho;

Do grego: !"#$$%&' - fazer.


Desenvolvedores
!
Ser nico:

Pontos fortes e fracos;

Preferncias e averses.
Programador Pragmtico
!
Caractersticas:

Adoo antecipada / adaptao rpida;

Inquisitivo;

Pensador crtico;

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 Pragmtica
Dica 3
Fornea opes, no d desculpas esfarrapadas.
Dica 4
No tolere janelas quebradas.
Dica 5
Seja um catalisador da mudana.
Dica 6
Lembre-se do cenrio em larga escala.
Dica 7
Torne a qualidade parte dos requisitos.
Dica 8
Invista regularmente em sua carteira de conhecimentos.
Carteira de Investimentos
!
Investidores srios investem regularmente, como um hbito;
!
A diversidade a chave para o sucesso a longo prazo;
!
Investidores astutos tm uma carteira equilibrada com
investimentos conservadores e de alto risco e remunerao;
!
Os investidores tentam comprar barato e vender caro para
obter o mximo 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.
Sugestes
!
Aprenda pelo menos uma nova linguagem todo ano;
!
Leia um livro tcnico a cada trimestre;
!
Leia tambm livros no tcnicos;
!
Tenha aulas;
!
Participe de grupos de usurios locais;
!
Experimente ambientes diferentes;
!
Mantenha-se informado;
!
Mantenha-se conectado.
Dica 9
Analise criticamente o que voc l e ouve.
Pensamento Crtico
!
O cuidado e a consulta com especialistas:

Saiba o que quer perguntar;

Seja especfico;

Formule sua pergunta cuidadosamente e polidamente;

Preciso de ajuda no suficiente;

Tenha pacincia ao esperar um retorno.


Dica 10
o que voc diz e a maneira como diz.
Comunique-se
!
Saiba o que voc quer dizer;
!
Conhea seu pblico-alvo;
!
Escolha seu momento;
!
Escolha um estilo;
!
D uma boa aparncia.
!
Envolva seu pblico-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 nvel de sofisticao?
Que nvel de detalhes eles Usam?
Quem voc quer que Tenha a posse da informao?
Como voc pode motiv-los a Ouv-lo?
Email
!
Releia;
!
Verifique a ortografia;
!
Mantenha um formato simples;
!
Correspondncia formatada;
!
Crdito de citaes;
!
Verifique a lista de destinatrios.
Uma Abordagem Pragmtica
Dica 11
NSR - No se repita.
Os Males da Duplicao
!
Princpios NSR:

Cada bloco de informaes deve ter uma representao oficial,


exclusiva e sem ambigidades dentro de um sistema.
Como Surge a Duplicao
!
Duplicidade imposta:

Acham que no tem escolhas - o ambiente parece pedir.


!
Duplicao inadvertida:

No percebem que esto duplicando informaes.


!
Duplicao impaciente:

Preguia e duplicam porque parece ser mais fcil.


!
Duplicidade entre desenvolvedores:

Vrias pessoas duplicam por desconhecer o sistema como um todo.


Duplicidade Imposta
!
Vrias representaes das informaes;
!
Documentao no cdigo;
!
Documentao e cdigo;
!
Problemas de linguagem;
Duplicao Impaciente
!
Atalhos causam grandes atrasos;
!
Fcil de detectar e manipular;
!
Exige disciplina e disposio de se preocupar antes.
Duplicao Entre Desenvolvedores
!
Mais difcil de detectar e manipular;
!
Pode passar despercebida por anos;
!
Encorajar comunicao ativa e freqente entre
desenvolvedores.
Dica 12
Facilite a reutilizao.
Ortogonalidade
!
Termo emprestado da geometria;
!
Representa um tipo de independncia ou desvinculao;
!
Duas ou mais coisas so ortogonais quando alteraes em uma
no afetam as outras;
!
Vantagens:

Maior produtividade;

Menor risco.
Diagramas de Camadas
Interface de Usurio
Acesso ao Banco de
Dados
Mecanismo de
Relatrio
Lgica de
Negcio
Estrutura do Aplicativo
Biblioteca C Padro
Sistema Operacional
Dica 13
Elimine efeitos entre elementos no relacionados.
Codificando
!
Mantenha seu cdigo desvinculado;
!
Evite dados globais;
!
Evite funes semelhantes;
Reversibilidade
Nada mais perigoso do que uma idia quando
ela a nica que voc tem.
Emil-Auguste Chartier, Propos sur la religion, 1983
Dica 14
No h decises definitivas.
Dica 15
Use projteis luminosos para encontrar o alvo.
Vantagens
!
Os usurios podem ver algo funcionando antes;
!
Os desenvolvedores constroem uma estrutura na qual podem
trabalhar;
!
Voc ter uma plataforma de integrao;
!
Voc ter algo para demonstrar;
!
Voc sentir melhor o progresso;
Dica 16
Crie prottipos para aprender.
Dica 17
Programe em um nvel prximo ao domnio 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 parmetro um valor;
!
Calcule respostas;
!
Acompanhe sua habilidade em estimar.
Dica 19
Reexamine o cronograma junto ao cdigo.
As Ferramentas Bsicas
Dica 20
Mantenha as informaes em texto simples.
Dica 21
Use o poder dos shells de comando.
Dica 22
Use bem o seu editor.
O Que Fazer?
!
Quem fez alteraes nessa linha de cdigo;
!
Qual a diferena entre a verso atual e da ltima semana?
!
Quantas linhas de cdigo alteramos nessa verso?
!
Que arquivos foram alterados com mais freqncia?
Dica 23
Use sempre o controle de cdigo-fonte.
Dica 24
Corrija o problema, esquea o culpado.
Dica 25
No entre em pnico.
Dica 26
selectno est com defeito.
Dica 27
No suponha teste.
Dica 28
Aprenda uma linguagem de manipulao de texto.
Dica 29
Escreva um cdigo que crie cdigos.
Parania Pragmtica
Dica 30
Voc no conseguir criar um software perfeito.
Dica 31
Projete com contratos.
Dica 32
Encerre antecipadamente.
Dica 33
Se no pode acontecer, use asseres para assegurar que no
acontea.
Dica 34
Use excees para problemas excepcionais.
Dica 35
Acabe o que comeou.
Seja Flexvel
Dica 36
Reduza a vinculao entre mdulos.
Dica 37
Configure, no integre.
Dica 38
Coloque as abstraes no cdigo e os detalhes em metadados.
Dica 39
Analise o fluxo de trabalho para melhorar a concorrncia.
Caipirinha
!
Passos:

Descasque os limes;

Corte em quatro partes cada limo;

Tire os caroos e o filete branco do meio dos limes;

Esprema alguns limes diretamente no copo com acar;

Pique gelo;

Acrescente o gelo picado e a cachaa ao copo;

Agite bem;

Sirva.
Concorrncia
Descascar limes
Cortar limes
Remover caroos e filetes
brancos
Picar gelo
Espremer limes
Colocar cachaa em um
copo
Colocar acar em um
copo
Colocar gelo picado em
um copo
Agitar bem
Sirva
Dica 40
Projete usando servios.
Dica 41
Projete sempre pensando na concorrncia.
Dica 42
Separe as visualizaes dos modelos.
Dica 43
Use quadros-negros para coordenar o fluxo de trabalho.
Enquanto Voc Est
Codificando
Dica 44
No programe por coincidncia.
Programando Deliberadamente
!
Esteja sempre consciente do que est fazendo;
!
No codifique s cegas;
!
Aja de acordo com um plano;
!
Confie apenas em coisas confiveis;
!
Documente suas suposies;
!
No teste apenas seu cdigo;
!
Priorize seu esforo;
!
No seja escravo da histria.
Dica 45
Estime a ordem de seus algoritmos.
Dica 46
Teste suas estimativas.
Dica 47
Refatore cedo, refatore sempre.
Quando Refatorar
!
Duplicao;
!
Projeto no ortogonal;
!
Conhecimento desatualizado;
!
Desempenho.
Dica 48
Projete para testar.
Dica 49
Teste seu software ou seus usurios testaro.
Dica 50
No use o cdigo de assistente que voc no entender.
Antes de Comear
Dica 51
No colete requisitos, cave-os.
Dica 52
Trabalhe com um usurio para pensar como um usurio.
Dica 53
Abstraes tem vida mais longa do que detalhes.
Dica 54
Use um glossrio do projeto.
Dica 55
No pense fora da caixa - encontre a caixa.
Desafio 1
!
Conectar todos os pontos do quebra-cabea a seguir e voltar ao
ponto inicial com apenas trs 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 so fceis de fazer, mas no de descrever.
Dica 58
No seja escravo dos mtodos formais.
Dica 59
Ferramentas caras no produzem software melhores.
Projetos Pragmticos
Dica 60
Organize as equipes com base na funcionalidade.
Dica 61
No use procedimentos manuais.
Dica 62
Teste cedo. Teste sempre. Teste automaticamente.
Dica 63
A codificao s estar concluda aps todos os testes serem
executados.
Dica 64
Use sabotadores para testar seus testes.
Dica 65
Teste a cobertura de estados e no a cobertura de cdigo.
Dica 66
Encontre os erros apenas uma vez.
Dica 67
Trate o portugus simplesmente como outra linguagem de
programao.
Dica 68
Construa a documentao no cdigo, no acrescente como
complemento.
Dica 69
Exceda gentilmente as expectativas de seus usurios.
Dica 70
Assine seu trabalho.
Tadeu Marinho
81 3134.5875
tadeu.marinho@pitang.com
www.pitang.com.br