Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
S EJA   UM  P ROGRAMADOR  P RAGMÁTICO L EONARDO  F ERNANDES HTTP :// JROLLER . COM / LEOFERNANDESMO
Q UEM  S OU ... <ul><ul><li>Engenheiro de Software na Usina Coruripe </li></ul></ul><ul><ul><li>4 anos de experiência </li...
S OBRE   O   QUE   É   A  P ALESTRA ? <ul><ul><li>Baseada no livro  The Pragmatic Programmer </li></ul></ul><ul><ul><li>Di...
P ARTE  I A F ILOSOFIA   DO  P RAGMATISMO
D EFINIÇÃO <ul><ul><li>Pragmatismo - &quot; doutrina filosófica que adota como critério da verdade a utilidade prática, id...
M AIS   CARACTERÍSTICAS   DE   UMA   PESSOA   PRAGMÁTICA <ul><ul><li>Aberto a mudanças </li></ul></ul><ul><ul><li>Curioso ...
E  LEMBRE - SE   QUE   ISSO   É   UM   PROCESSO   CONTÍNUO ... <ul><ul><li>Preocupe-se com suas habilidades(Portofólio de ...
O PP  E   A  F ILOSOFIA   DO  P RAGMATISMO  1 <ul><ul><li>Senso de responsabilidade </li></ul></ul><ul><ul><ul><li>Assuma ...
O PP  E   A  F ILOSOFIA   DO  P RAGMATISMO  2 <ul><ul><li>Entropia de Software </li></ul></ul><ul><ul><ul><li>Desordem no ...
O PP  E   A  F ILOSOFIA   DO  P RAGMATISMO  3 <ul><ul><li>Seja um catalisador das mudanças </li></ul></ul><ul><ul><ul><li>...
O PP  E   A  F ILOSOFIA   DO  P RAGMATISMO  4  <ul><ul><li>Um Software  suficientemente  bom </li></ul></ul><ul><ul><ul><l...
Estes são exemplos de produtos suficientemente bons...
O PP  E   A  F ILOSOFIA   DO  P RAGMATISMO  5  <ul><ul><li>Portfolio  de Conhecimento </li></ul></ul><ul><ul><ul><li>portf...
G ERENCIANDO   O   SEU   PORTOFÓLIO   DE   CONHECIMENTO <ul><ul><li>Investidores sérios  investem constantemente </li></ul...
M ETAS   PARA   NÓS  PP <ul><ul><li>Aprender pelo menos uma nova linguagem por ano. </li></ul></ul><ul><ul><li>Ler um livr...
D ICAS   DE  I NVESTIMENTO <ul><ul><li>Cultive gurus </li></ul></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  </li...
P ARTE  II U MA  A BORDAGEM  P RAGMÁTICA
O I NFERNO   DA  D UPLICAÇÃO <ul><ul><li>Siga o princípio &quot; DRY &quot;  </li></ul></ul><ul><ul><li>Avalie como as dup...
O RTOGONALIDADE   E  R EVERSIBILIDADE   <ul><li>Ortogonal = Perpendicular (Geometria) </li></ul><ul><li>Em software:  Comp...
O RTOGONALIDADE   E  R EVERSIBILIDADE   <ul><ul><li>Ortogonalidade... </li></ul></ul><ul><ul><ul><li>no seu time </li></ul...
L INGUAGEM   DO  D OMÍNIO <ul><ul><li>Conheça o domínio da sua aplicação  </li></ul></ul><ul><ul><ul><li>Estabeleça uma &q...
E STIMATIVAS <ul><ul><li>Estimativas  </li></ul></ul><ul><ul><ul><li>Trabalhe com estimativas para evitar surpresas  </li>...
P ARTE  III A S  F ERRAMENTAS  B ÁSICAS
F ERRAMENTAS   BÁSICAS  I <ul><ul><li>O poder dos arquivos de texto </li></ul></ul><ul><ul><ul><li>  Ajuda na manutenabili...
F ERRAMENTAS   BÁSICAS  II <ul><ul><li>Source Code Control System </li></ul></ul><ul><ul><ul><li>Sempre use controle de ve...
F ERRAMENTAS   BÁSICAS  III <ul><ul><li>Geradores de código </li></ul></ul><ul><ul><ul><li>Passivos e Ativos </li></ul></u...
P ARTE  IV F LEXIBILIDADE   E  A DAPTABILIDADE
C UIDADOS   COM   SEU   CÓDIGO  I <ul><ul><li>Desacoplamento e a Lei de Demtrius </li></ul></ul><ul><ul><li>Metaprogrammin...
C UIDADOS   COM   SEU   CÓDIGO  II <ul><ul><li>Enquanto você está codificando... </li></ul></ul><ul><ul><ul><li>Evite prog...
O BRIGADO !
Upcoming SlideShare
Loading in …5
×

Seja Um Programador Pragmatico

3,297 views

Published on

Published in: Technology, Business

Seja Um Programador Pragmatico

  1. 1. S EJA UM P ROGRAMADOR P RAGMÁTICO L EONARDO F ERNANDES HTTP :// JROLLER . COM / LEOFERNANDESMO
  2. 2. Q UEM S OU ... <ul><ul><li>Engenheiro de Software na Usina Coruripe </li></ul></ul><ul><ul><li>4 anos de experiência </li></ul></ul><ul><ul><li>SCJP e SCWCD </li></ul></ul><ul><ul><li>Entusiasta de Práticas Ágeis </li></ul></ul><ul><ul><li>Coordenador do Grupo de Engenharia de Software-AL </li></ul></ul><ul><li>  </li></ul>
  3. 3. S OBRE O QUE É A P ALESTRA ? <ul><ul><li>Baseada no livro The Pragmatic Programmer </li></ul></ul><ul><ul><li>Dicas para se tornar um programador melhor </li></ul></ul><ul><ul><li>Bastante uso de analogias , não levem ao pé da letra </li></ul></ul>Programador Pragmático = PP
  4. 4. P ARTE I A F ILOSOFIA DO P RAGMATISMO
  5. 5. D EFINIÇÃO <ul><ul><li>Pragmatismo - &quot; doutrina filosófica que adota como critério da verdade a utilidade prática, identificando o verdadeiro como útil &quot; (Silveira Bueno) </li></ul></ul><ul><ul><li>Ou seja, ser pragmático é ser... </li></ul></ul><ul><ul><ul><li>objetivo </li></ul></ul></ul><ul><ul><ul><li>prático </li></ul></ul></ul><ul><ul><ul><li>direto </li></ul></ul></ul>
  6. 6. M AIS CARACTERÍSTICAS DE UMA PESSOA PRAGMÁTICA <ul><ul><li>Aberto a mudanças </li></ul></ul><ul><ul><li>Curioso </li></ul></ul><ul><ul><li>Visão Crítica  </li></ul></ul><ul><ul><li>Realista </li></ul></ul><ul><ul><li>Um especialista generalista </li></ul></ul><ul><li>  </li></ul>
  7. 7. E LEMBRE - SE QUE ISSO É UM PROCESSO CONTÍNUO ... <ul><ul><li>Preocupe-se com suas habilidades(Portofólio de Conhecimento) </li></ul></ul><ul><ul><li>  Reflita sobre seu trabalho </li></ul></ul><ul><ul><li>Construir software é uma disciplina de engenharia? </li></ul></ul><ul><ul><li>  O Jardineiro e o Turista </li></ul></ul><ul><ul><li>Kaizen </li></ul></ul>
  8. 8. O PP E A F ILOSOFIA DO P RAGMATISMO 1 <ul><ul><li>Senso de responsabilidade </li></ul></ul><ul><ul><ul><li>Assuma compromissos </li></ul></ul></ul><ul><ul><ul><li>Quando cometer um erro(e todos nós cometemos) admita-o e sugira soluções </li></ul></ul></ul><ul><ul><ul><li>Tenha planos de contingência </li></ul></ul></ul><ul><ul><ul><li>Forneça opções e não lamentações </li></ul></ul></ul><ul><ul><ul><li>Princípio da comunicação aberta - XP </li></ul></ul></ul>
  9. 9. O PP E A F ILOSOFIA DO P RAGMATISMO 2 <ul><ul><li>Entropia de Software </li></ul></ul><ul><ul><ul><li>Desordem no sistema </li></ul></ul></ul><ul><ul><ul><li>Vários fatores podem contribuir para a &quot;desordem&quot; de um sistema </li></ul></ul></ul><ul><ul><ul><li>&quot;A Teoria das Janelas Quebradas&quot; - Não viva com Janelas quebradas. </li></ul></ul></ul>&quot;Adding manpower to a late software project makes it later.&quot; - Frederik Brooks
  10. 10. O PP E A F ILOSOFIA DO P RAGMATISMO 3 <ul><ul><li>Seja um catalisador das mudanças </li></ul></ul><ul><ul><ul><li>&quot;A sopa de pedras&quot; </li></ul></ul></ul><ul><ul><ul><li>&quot;Rã fervidas&quot; </li></ul></ul></ul>
  11. 11. O PP E A F ILOSOFIA DO P RAGMATISMO 4 <ul><ul><li>Um Software suficientemente bom </li></ul></ul><ul><ul><ul><li>Não precisamos produzir o software mais perfeito do mundo, precisamos fazer SWs suficientemente bons. </li></ul></ul></ul><ul><ul><ul><li>Traga seus usuários para perto de você </li></ul></ul></ul><ul><ul><ul><li>Saiba quando parar </li></ul></ul></ul>&quot;You can discipline yourself to write software that's good enough—good enough for your users, for future maintainers, for your own peace of mind. You'll find that you are more productive and your users are happier.&quot; Ed Yourdon
  12. 12. Estes são exemplos de produtos suficientemente bons...
  13. 13. O PP E A F ILOSOFIA DO P RAGMATISMO 5 <ul><ul><li>Portfolio de Conhecimento </li></ul></ul><ul><ul><ul><li>portfolio = conjunto de investimentos  </li></ul></ul></ul><ul><ul><ul><li>Seu conhecimento e sua experiência são seus maiores bens profissionais </li></ul></ul></ul><ul><ul><ul><li>Com o passar do tempo e com as mudanças do mercado: </li></ul></ul></ul><ul><ul><ul><ul><li>o conhecimento torna-se desatualizado </li></ul></ul></ul></ul><ul><ul><ul><ul><li>a experiência torna-se obsoleta ou irrelevante </li></ul></ul></ul></ul>An investment in knowledge always pays the best interest. Benjamin Franklin
  14. 14. G ERENCIANDO O SEU PORTOFÓLIO DE CONHECIMENTO <ul><ul><li>Investidores sérios  investem constantemente </li></ul></ul><ul><ul><li>Diversificação é a chave para o sucesso a longo prazo </li></ul></ul><ul><ul><li>Investidores inteligentes se dividem em investimentos conservadores e de alto risco </li></ul></ul><ul><ul><li>Investidores tentam comprar barato e vender caro </li></ul></ul><ul><ul><li>Trabalhe com metas e lembre-se. Metas precisam ser revisadas e refeitas periodicamente </li></ul></ul>
  15. 15. M ETAS PARA NÓS PP <ul><ul><li>Aprender pelo menos uma nova linguagem por ano. </li></ul></ul><ul><ul><li>Ler um livro técnico a cada trimestre </li></ul></ul><ul><ul><li>Ler livros não técnicos também </li></ul></ul><ul><ul><li>Fazer cursos </li></ul></ul><ul><ul><li>Participar de de grupos de usuários locais </li></ul></ul><ul><ul><li>Experimentar diferentes ambientes </li></ul></ul><ul><ul><li>Manter-se atualizado </li></ul></ul><ul><ul><li>Envolva-se  </li></ul></ul>
  16. 16. D ICAS DE I NVESTIMENTO <ul><ul><li>Cultive gurus </li></ul></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><ul><li>Tenha pensamento crítico...afinal,¨ No Silver Bullet ¨ </li></ul></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><ul><li>Trabalhe sua comunicação  </li></ul></ul>
  17. 17. P ARTE II U MA A BORDAGEM P RAGMÁTICA
  18. 18. O I NFERNO DA D UPLICAÇÃO <ul><ul><li>Siga o princípio &quot; DRY &quot; </li></ul></ul><ul><ul><li>Avalie como as duplicações aparecem e elimine-as </li></ul></ul><ul><ul><ul><li>em documentação </li></ul></ul></ul><ul><ul><ul><li>em código </li></ul></ul></ul><ul><ul><li>Faça as coisas fáceis para reuso </li></ul></ul>
  19. 19. O RTOGONALIDADE E R EVERSIBILIDADE   <ul><li>Ortogonal = Perpendicular (Geometria) </li></ul><ul><li>Em software:  Componentes independentes </li></ul><ul><li>( desacoplados) </li></ul><ul><ul><li>Sistemas não ortogonais </li></ul></ul><ul><ul><li>Benefícios da ortogonalidade </li></ul></ul><ul><ul><ul><li>Ganho de produtividade </li></ul></ul></ul><ul><ul><ul><li>  Redução de riscos </li></ul></ul></ul><ul><li>  </li></ul><ul><li>Dica: Elimine acoplamento entre coisas não  </li></ul><ul><li>relacionadas. </li></ul><ul><li>Em OO: Baixo acoplamento e alta coesão. </li></ul>
  20. 20. O RTOGONALIDADE E R EVERSIBILIDADE <ul><ul><li>Ortogonalidade... </li></ul></ul><ul><ul><ul><li>no seu time </li></ul></ul></ul><ul><ul><ul><li>no seu design </li></ul></ul></ul><ul><ul><ul><li>em toolkits e bibliotecas de terceiros </li></ul></ul></ul><ul><ul><ul><li>no seu código fonte </li></ul></ul></ul><ul><li>  </li></ul><ul><ul><li>Sistemas Reversíveis </li></ul></ul><ul><ul><ul><li>&quot;A única certeza que temos é a da mudança.&quot;  </li></ul></ul></ul><ul><ul><ul><li>Não existe decisões finais </li></ul></ul></ul>
  21. 21. L INGUAGEM DO D OMÍNIO <ul><ul><li>Conheça o domínio da sua aplicação </li></ul></ul><ul><ul><ul><li>Estabeleça uma &quot; Ubiquitous Language &quot; </li></ul></ul></ul><ul><ul><ul><li>Programa próximo de quem conhece o domínio </li></ul></ul></ul><ul><ul><ul><li>Fácil desenvolvimento ou fácil manutenção?  </li></ul></ul></ul>// exemplo 1 - Fluent Interface Set programas = WebMediaAPI. programas () . comTitulo ( &quot;Fantastico&quot; ) ;   // exemplo 2 - Fluent Interface Long multishow = new Long ( 123 ) ; Set videos = WebMediaAPI. videos () . favoritos () . doCanal ( multishow ) ;   (Código extraído do blog do Guilherme Chapiewski)
  22. 22. E STIMATIVAS <ul><ul><li>Estimativas  </li></ul></ul><ul><ul><ul><li>Trabalhe com estimativas para evitar surpresas  </li></ul></ul></ul><ul><ul><ul><li>Mas, seja honesto com estimativas  </li></ul></ul></ul><ul><ul><ul><li>Tente diversas alternativas  </li></ul></ul></ul><ul><ul><ul><ul><li>APF, APCU, Planning Game, Story Point </li></ul></ul></ul></ul><ul><ul><ul><li>Mantenha um log das suas estimativas  </li></ul></ul></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>Duration Quote                               Estimate in  1-15 dias--------------------------------------Dias  3-8 semanas---------------------------------Semanas (Tente não passar disso)  8-30 semanas-------------------------------Meses  </li></ul><ul><li>  30+ semanas--------------------------------Pense muito antes de estimar </li></ul>
  23. 23. P ARTE III A S F ERRAMENTAS B ÁSICAS
  24. 24. F ERRAMENTAS BÁSICAS I <ul><ul><li>O poder dos arquivos de texto </li></ul></ul><ul><ul><ul><li>  Ajuda na manutenabilidade </li></ul></ul></ul><ul><ul><li>Não se esqueça do Shell e das linguagens de Script </li></ul></ul><ul><ul><ul><li>  Tarefas Ad hoc </li></ul></ul></ul><ul><ul><li>Adote um Editor de Texto  </li></ul></ul><ul><ul><ul><li>Antes de escolher avalie: </li></ul></ul></ul><ul><ul><ul><ul><li>Se é Configurável, Extensível, Programável </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Se possui Syntax highlighting </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Se possui Auto-completion </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Se possui Auto-indentation </li></ul></ul></ul></ul><ul><li>  </li></ul>
  25. 25. F ERRAMENTAS BÁSICAS II <ul><ul><li>Source Code Control System </li></ul></ul><ul><ul><ul><li>Sempre use controle de versão, sempre, sempre sempre...até você sozinho em um projeto. </li></ul></ul></ul><ul><ul><li>Debugging </li></ul></ul><ul><ul><ul><li>Estratégias para elucidar bugs </li></ul></ul></ul><ul><ul><ul><ul><li>Não entre em pânico </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Não procure culpados </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Não tenha medo do stack trace . </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Como minimizar? </li></ul></ul></ul></ul>
  26. 26. F ERRAMENTAS BÁSICAS III <ul><ul><li>Geradores de código </li></ul></ul><ul><ul><ul><li>Passivos e Ativos </li></ul></ul></ul><ul><ul><li>Bug Tracking system </li></ul></ul><ul><ul><ul><li>Mantém um log dos bugs </li></ul></ul></ul><ul><ul><ul><li>Ajuda na qualidade  </li></ul></ul></ul><ul><li>  </li></ul>
  27. 27. P ARTE IV F LEXIBILIDADE E A DAPTABILIDADE
  28. 28. C UIDADOS COM SEU CÓDIGO I <ul><ul><li>Desacoplamento e a Lei de Demtrius </li></ul></ul><ul><ul><li>Metaprogramming </li></ul></ul><ul><ul><li>Separe o Modelo da Visão </li></ul></ul><ul><ul><li>O poder de um Quadro-Negro </li></ul></ul>
  29. 29. C UIDADOS COM SEU CÓDIGO II <ul><ul><li>Enquanto você está codificando... </li></ul></ul><ul><ul><ul><li>Evite programar por coincidência </li></ul></ul></ul><ul><ul><ul><li>Não vire escravo do tempo, refatore </li></ul></ul></ul><ul><ul><ul><li>Crie códigos fáceis de testar </li></ul></ul></ul><ul><ul><ul><li>Cuidado com os famosos Wizards </li></ul></ul></ul><ul><ul><li>E antes de codificar... </li></ul></ul><ul><ul><ul><li>Não levante os requisitos, escave-os </li></ul></ul></ul><ul><ul><ul><li>Não invente requisitos </li></ul></ul></ul><ul><ul><ul><li>Mantenha os requisitos públicos </li></ul></ul></ul>
  30. 30. O BRIGADO !

×