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

Seja Um Programador Pragmatico

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