O Programador PragmáticoAndrew Hunt & David ThomasUma empresaC.E.S.A.RTadeu Marinhotadeu.marinho@pitang.com
AgendaO Livro;Introdução;Uma filosofia pragmática;Uma abordagem pragmática;As ferramentas básicas;Paranóia pragmátic...
O LivroISBN: 8577807002;ISBN-13: 9788577807000;Idioma: Livro em português;Encadernação: Brochura;Idioma: Português;A...
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;...
Dica 1Preocupe-se com seu trabalho.
Dica 2Reflita sobre seu trabalho.
KaizenProjeto:– Fazer continuamente diversas pequenas melhorias;Pessoas:– Empenhar-se continuamente em aprimorar as habi...
Uma Filosofia Pragmática
Dica 3Forneça opções, não dê desculpas esfarrapadas.
Dica 4Não tolere janelas quebradas.
Dica 5Seja um catalisador da mudança.
Dica 6Lembre-se do cenário em larga escala.
Dica 7Torne a qualidade parte dos requisitos.
Dica 8Invista regularmente em sua carteira de conhecimentos.
Carteira de InvestimentosInvestidores sérios investem regularmente, como um hábito;A diversidade é a chave para o sucess...
Carteira de ConhecimentosInvista regularmente;Diversifique;Gerencie o risco;Compre barato, venda caro;Reexamine e ree...
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...
Dica 9Analise 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 p...
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 apa...
Seja ASTUTOO que você quer que eles Aprendam?Qual é Seu interesse no que você tem a dizer?Seu Trabalho tem que nível de so...
EmailReleia;Verifique a ortografia;Mantenha um formato simples;Correspondência formatada;Crédito de citações;Verifiq...
Uma Abordagem Pragmática
Dica 11NSR - 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...
Como Surge a DuplicaçãoDuplicidade imposta:– Acham que não tem escolhas - o ambiente parece pedir.Duplicação inadvertida...
Duplicidade ImpostaVárias representações das informações;Documentação no código;Documentação e código;Problemas de lin...
Duplicação ImpacienteAtalhos causam grandes atrasos;Fácil de detectar e manipular;Exige disciplina e disposição de se p...
Duplicação Entre DesenvolvedoresMais difícil de detectar e manipular;Pode passar despercebida por anos;Encorajar comuni...
Dica 12Facilite a reutilização.
OrtogonalidadeTermo emprestado da geometria;Representa um tipo de independência ou desvinculação;Duas ou mais coisas sã...
Diagramas de CamadasInterface de UsuárioAcesso ao Banco deDadosMecanismo deRelatórioLógica deNegócioEstrutura do Aplicativ...
Dica 13Elimine 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 quandoela é a única que você tem.”Emil-Auguste Chartier, Propos sur ...
Dica 14Não há decisões definitivas.
Dica 15Use projéteis luminosos para encontrar o alvo.
VantagensOs usuários podem ver algo funcionando antes;Os desenvolvedores constroem uma estrutura na qual podemtrabalhar;...
Dica 16Crie protótipos para aprender.
Dica 17Programe em um nível próximo ao domínio do problema.
Dica 18Estime para evitar surpresas.
EstimandoEntenda o que está sendo pedido;Construa um modelo do sistema;Divida o modelo em componentes;Dê a cada parâme...
Dica 19Reexamine o cronograma junto ao código.
As Ferramentas Básicas
Dica 20Mantenha as informações em texto simples.
Dica 21Use o poder dos shells de comando.
Dica 22Use 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?Quanta...
Dica 23Use sempre o controle de código-fonte.
Dica 24Corrija o problema, esqueça o culpado.
Dica 25Não entre em pânico.
Dica 26“select”não está com defeito.
Dica 27Não suponha – teste.
Dica 28Aprenda uma linguagem de manipulação de texto.
Dica 29Escreva um código que crie códigos.
Paranóia Pragmática
Dica 30Você não conseguirá criar um software perfeito.
Dica 31Projete com contratos.
Dica 32Encerre antecipadamente.
Dica 33Se não pode acontecer, use asserções para assegurar que nãoaconteça.
Dica 34Use exceções para problemas excepcionais.
Dica 35Acabe o que começou.
Seja Flexível
Dica 36Reduza a vinculação entre módulos.
Dica 37Configure, não integre.
Dica 38Coloque as abstrações no código e os detalhes em metadados.
Dica 39Analise 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 do...
ConcorrênciaDescascar limõesCortar limõesRemover caroços e filetesbrancosPicar geloEspremer limõesColocar cachaça em umcop...
Dica 40Projete usando serviços.
Dica 41Projete sempre pensando na concorrência.
Dica 42Separe as visualizações dos modelos.
Dica 43Use quadros-negros para coordenar o fluxo de trabalho.
Enquanto Você EstáCodificando
Dica 44Não programe por coincidência.
Programando DeliberadamenteEsteja sempre consciente do que está fazendo;Não codifique às cegas;Aja de acordo com um pla...
Dica 45Estime a ordem de seus algoritmos.
Dica 46Teste suas estimativas.
Dica 47Refatore cedo, refatore sempre.
Quando RefatorarDuplicação;Projeto não ortogonal;Conhecimento desatualizado;Desempenho.
Dica 48Projete para testar.
Dica 49Teste seu software ou seus usuários testarão.
Dica 50Não use o código de assistente que você não entender.
Antes de Começar
Dica 51Não colete requisitos, cave-os.
Dica 52Trabalhe com um usuário para pensar como um usuário.
Dica 53Abstrações tem vida mais longa do que detalhes.
Dica 54Use um glossário do projeto.
Dica 55Não pense fora da caixa - encontre a caixa.
Desafio 1Conectar todos os pontos do quebra-cabeça a seguir e voltar aoponto inicial com apenas três linhas retas – sem t...
Resposta
Desafio 2Você tem 10 soldados. Forme 5 filas com 4 soldados em cadauma.
Resposta
Dica 56Só comece quando estiver pronto.
Dica 57Algumas coisas são fáceis de fazer, mas não de descrever.
Dica 58Não seja escravo dos métodos formais.
Dica 59Ferramentas caras não produzem software melhores.
Projetos Pragmáticos
Dica 60Organize as equipes com base na funcionalidade.
Dica 61Não use procedimentos manuais.
Dica 62Teste cedo. Teste sempre. Teste automaticamente.
Dica 63A codificação só estará concluída após todos os testes seremexecutados.
Dica 64Use sabotadores para testar seus testes.
Dica 65Teste a cobertura de estados e não a cobertura de código.
Dica 66Encontre os erros apenas uma vez.
Dica 67Trate o português simplesmente como outra linguagem deprogramação.
Dica 68Construa a documentação no código, não acrescente comocomplemento.
Dica 69Exceda gentilmente as expectativas de seus usuários.
Dica 70Assine seu trabalho.
Tadeu Marinho81 3134.5875tadeu.marinho@pitang.comwww.pitang.com.br
Próximos SlideShares
Carregando em…5
×

O Programador Pragmático

1.885 visualizações

Publicada em

Treinamento ministrado na Pitang Agile IT entre 2011 e 2012.

Publicada em: Tecnologia
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.885
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
60
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

O Programador Pragmático

  1. 1. O Programador PragmáticoAndrew Hunt & David ThomasUma empresaC.E.S.A.RTadeu Marinhotadeu.marinho@pitang.com
  2. 2. 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.
  3. 3. 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.
  4. 4. DefiniçãoPragmático:– Do latim: pragmaticus - “Habilidoso no trabalho”;– Do grego: “πραττειν” - “fazer”.
  5. 5. DesenvolvedoresSer único:– Pontos fortes e fracos;– Preferências e aversões.
  6. 6. 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!
  7. 7. Dica 1Preocupe-se com seu trabalho.
  8. 8. Dica 2Reflita sobre seu trabalho.
  9. 9. KaizenProjeto:– Fazer continuamente diversas pequenas melhorias;Pessoas:– Empenhar-se continuamente em aprimorar as habilidades;– Adicionar novas ferramentas às que já usa.
  10. 10. Uma Filosofia Pragmática
  11. 11. Dica 3Forneça opções, não dê desculpas esfarrapadas.
  12. 12. Dica 4Não tolere janelas quebradas.
  13. 13. Dica 5Seja um catalisador da mudança.
  14. 14. Dica 6Lembre-se do cenário em larga escala.
  15. 15. Dica 7Torne a qualidade parte dos requisitos.
  16. 16. Dica 8Invista regularmente em sua carteira de conhecimentos.
  17. 17. 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 cominvestimentos conservadores e de alto risco e remuneração;Os investidores tentam comprar barato e vender caro paraobter o máximo de retorno;As carteiras devem ser reexaminadas e reestruturadasperiodicamente.
  18. 18. Carteira de ConhecimentosInvista regularmente;Diversifique;Gerencie o risco;Compre barato, venda caro;Reexamine e reestruture.
  19. 19. 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.
  20. 20. Dica 9Analise criticamente o que você lê e ouve.
  21. 21. 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.
  22. 22. Dica 10É o que você diz e a maneira como diz.
  23. 23. 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.
  24. 24. Seja ASTUTOO 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?
  25. 25. EmailReleia;Verifique a ortografia;Mantenha um formato simples;Correspondência formatada;Crédito de citações;Verifique a lista de destinatários.
  26. 26. Uma Abordagem Pragmática
  27. 27. Dica 11NSR - Não se repita.
  28. 28. 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.
  29. 29. 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.
  30. 30. Duplicidade ImpostaVárias representações das informações;Documentação no código;Documentação e código;Problemas de linguagem;
  31. 31. Duplicação ImpacienteAtalhos causam grandes atrasos;Fácil de detectar e manipular;Exige disciplina e disposição de se preocupar antes.
  32. 32. Duplicação Entre DesenvolvedoresMais difícil de detectar e manipular;Pode passar despercebida por anos;Encorajar comunicação ativa e freqüente entredesenvolvedores.
  33. 33. Dica 12Facilite a reutilização.
  34. 34. 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 umanão afetam as outras;Vantagens:– Maior produtividade;– Menor risco.
  35. 35. Diagramas de CamadasInterface de UsuárioAcesso ao Banco deDadosMecanismo deRelatórioLógica deNegócioEstrutura do AplicativoBiblioteca C PadrãoSistema Operacional
  36. 36. Dica 13Elimine efeitos entre elementos não relacionados.
  37. 37. CodificandoMantenha seu código desvinculado;Evite dados globais;Evite funções semelhantes;
  38. 38. Reversibilidade“Nada é mais perigoso do que uma idéia quandoela é a única que você tem.”Emil-Auguste Chartier, Propos sur la religion, 1983
  39. 39. Dica 14Não há decisões definitivas.
  40. 40. Dica 15Use projéteis luminosos para encontrar o alvo.
  41. 41. VantagensOs usuários podem ver algo funcionando antes;Os desenvolvedores constroem uma estrutura na qual podemtrabalhar;Você terá uma plataforma de integração;Você terá algo para demonstrar;Você sentirá melhor o progresso;
  42. 42. Dica 16Crie protótipos para aprender.
  43. 43. Dica 17Programe em um nível próximo ao domínio do problema.
  44. 44. Dica 18Estime para evitar surpresas.
  45. 45. 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.
  46. 46. Dica 19Reexamine o cronograma junto ao código.
  47. 47. As Ferramentas Básicas
  48. 48. Dica 20Mantenha as informações em texto simples.
  49. 49. Dica 21Use o poder dos shells de comando.
  50. 50. Dica 22Use bem o seu editor.
  51. 51. 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?
  52. 52. Dica 23Use sempre o controle de código-fonte.
  53. 53. Dica 24Corrija o problema, esqueça o culpado.
  54. 54. Dica 25Não entre em pânico.
  55. 55. Dica 26“select”não está com defeito.
  56. 56. Dica 27Não suponha – teste.
  57. 57. Dica 28Aprenda uma linguagem de manipulação de texto.
  58. 58. Dica 29Escreva um código que crie códigos.
  59. 59. Paranóia Pragmática
  60. 60. Dica 30Você não conseguirá criar um software perfeito.
  61. 61. Dica 31Projete com contratos.
  62. 62. Dica 32Encerre antecipadamente.
  63. 63. Dica 33Se não pode acontecer, use asserções para assegurar que nãoaconteça.
  64. 64. Dica 34Use exceções para problemas excepcionais.
  65. 65. Dica 35Acabe o que começou.
  66. 66. Seja Flexível
  67. 67. Dica 36Reduza a vinculação entre módulos.
  68. 68. Dica 37Configure, não integre.
  69. 69. Dica 38Coloque as abstrações no código e os detalhes em metadados.
  70. 70. Dica 39Analise o fluxo de trabalho para melhorar a concorrência.
  71. 71. 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.
  72. 72. ConcorrênciaDescascar limõesCortar limõesRemover caroços e filetesbrancosPicar geloEspremer limõesColocar cachaça em umcopoColocar açúcar em umcopoColocar gelo picado emum copoAgitar bemSirva
  73. 73. Dica 40Projete usando serviços.
  74. 74. Dica 41Projete sempre pensando na concorrência.
  75. 75. Dica 42Separe as visualizações dos modelos.
  76. 76. Dica 43Use quadros-negros para coordenar o fluxo de trabalho.
  77. 77. Enquanto Você EstáCodificando
  78. 78. Dica 44Não programe por coincidência.
  79. 79. 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.
  80. 80. Dica 45Estime a ordem de seus algoritmos.
  81. 81. Dica 46Teste suas estimativas.
  82. 82. Dica 47Refatore cedo, refatore sempre.
  83. 83. Quando RefatorarDuplicação;Projeto não ortogonal;Conhecimento desatualizado;Desempenho.
  84. 84. Dica 48Projete para testar.
  85. 85. Dica 49Teste seu software ou seus usuários testarão.
  86. 86. Dica 50Não use o código de assistente que você não entender.
  87. 87. Antes de Começar
  88. 88. Dica 51Não colete requisitos, cave-os.
  89. 89. Dica 52Trabalhe com um usuário para pensar como um usuário.
  90. 90. Dica 53Abstrações tem vida mais longa do que detalhes.
  91. 91. Dica 54Use um glossário do projeto.
  92. 92. Dica 55Não pense fora da caixa - encontre a caixa.
  93. 93. Desafio 1Conectar todos os pontos do quebra-cabeça a seguir e voltar aoponto inicial com apenas três linhas retas – sem tirar suacaneta do papel ou executar duas vezes a mesma etapa.
  94. 94. Resposta
  95. 95. Desafio 2Você tem 10 soldados. Forme 5 filas com 4 soldados em cadauma.
  96. 96. Resposta
  97. 97. Dica 56Só comece quando estiver pronto.
  98. 98. Dica 57Algumas coisas são fáceis de fazer, mas não de descrever.
  99. 99. Dica 58Não seja escravo dos métodos formais.
  100. 100. Dica 59Ferramentas caras não produzem software melhores.
  101. 101. Projetos Pragmáticos
  102. 102. Dica 60Organize as equipes com base na funcionalidade.
  103. 103. Dica 61Não use procedimentos manuais.
  104. 104. Dica 62Teste cedo. Teste sempre. Teste automaticamente.
  105. 105. Dica 63A codificação só estará concluída após todos os testes seremexecutados.
  106. 106. Dica 64Use sabotadores para testar seus testes.
  107. 107. Dica 65Teste a cobertura de estados e não a cobertura de código.
  108. 108. Dica 66Encontre os erros apenas uma vez.
  109. 109. Dica 67Trate o português simplesmente como outra linguagem deprogramação.
  110. 110. Dica 68Construa a documentação no código, não acrescente comocomplemento.
  111. 111. Dica 69Exceda gentilmente as expectativas de seus usuários.
  112. 112. Dica 70Assine seu trabalho.
  113. 113. Tadeu Marinho81 3134.5875tadeu.marinho@pitang.comwww.pitang.com.br

×