SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
O programador Pragmático
   De aprendiz

      a mestre




                           Edgard Davidson
                           @edgarddavidson
Referências


                      Andrew Hunt




       David Thomas
!"#$#%&'#($)(*+*,-*./0$#1$21$
               3(04#)05$60.)(*)*(#7$0%$*2)0(#%$
                /#%)#$,7'(08$"#$.90$60.%#:27(5$
              3(062(*(#7$6*./7/*)0%$;2#$,#(*1$
                          #%)*$0+(*8<$
    !
   !"#$%%
&'(()(*+",%
Este livro contempla:
  combater a deterioração de software
  não duplicar informações
  escrever código flexível, dinâmico e adaptável
  evitar a programação baseada no acaso
  blindar seu código com contratos, asserções e exceções
  capturar requisitos reais
  testar de modo incansável e eficaz
  agradar seus usuários
  montar equipes de programadores pragmáticos
  aumentar a precisão de seus desenvolvimentos com automação.
Preocupe-se com seu trabalho
       Por que passar sua vida desenvolvendo software
             se não estiver interessado em fazê-lo bem?
Reflita sobre seu trabalho
  Desligue o piloto automático e assuma o controle.
  Critique e avalie constantemente seu trabalho.
Forneça opções, não dê

  desculpas
  esfarrapadas
  Em vez de desculpas,   forneça
     opções. Não diga que não
     pode ser feito; explique o que
     pode ser feito.
Não	 tolere	 janelas	 quebradas
Corrija	 projetos	 incorretos,	 decisões	 
 erradas	 e	 códigos	 frágeis	 quando	 os	 
                 encontrar
Seja	
  um	
  catalisador	
  de	
  mudanças
     Você não pode impor mudanças às pessoas.
Em vez disso, mostre a elas como o futuro pode ser e
         ajude-as a participar de sua criação
Lembre-se do cenário em larga escala
Não fique tão absorvido pelos detalhes a ponto de não ver o que
                  está acontecendo ao seu redor
Tome a qualidade parte dos requisitos
  Envolva seus usuários na determinação dos requisitos de qualidade
                                                        do projeto.
2)3+41&!5%6-7&($%)1%!%$!4-&!8&(1%+(&!*%!
             8#).%8+$%)1#!




                 !
    "#$%!#!&'(%)*+,&*#!!-$!./0+1#!
                 !
Analise criticamente o que você lê e ouve
Não se deixe levar por fornecedores, pela mídia ou por dogmas. Analise as
           informações em relação a si mesmo e ao seu projeto
É o que você diz e a maneira como diz




  Não	
 adianta	
 ter	
 grandes	
 idéias	
 se	
 elas	
 não	
 forem	
 divulgadas	
 de	
 modo	
 eficaz.
NSR	
  –	
  Não	
  Se	
  Repita
     Cada	
  bloco	
  de	
  informações	
  deve	
  ter	
  uma	
  representação	
  oficial,	
  
                  exclusiva	
  e	
  sem	
  ambiguidade	
  dentro	
  de	
  um	
  sistema.
Facilite a reutilização

   Se	
  for	
  fácil	
  reu,lizar,	
  será	
  reu,lizado.	
  Crie	
  um	
  ambiente	
  que	
  
                                       apóie	
  a	
  reu,lização
Elimine efeitos entre
     elementos não
     relacionados
Projete componentes que sejam auto-
suficientes, independentes e com uma
   finalidade exclusiva bem definida.
Não há decisões definitivas
          Nenhuma decisão é irrevogável: planeje-se para a mudança.
Crie protótipos para aprender
A criação de protótipos é uma experiência de aprendizado. Seu valor não
          está no código produzido, mas nas lições aprendidas.
Programe em um nível próximo ao
       domínio do problema

Projete e codifique na linguagem do seu usuário.
Estime	
  para	
  evitar	
  surpresas
Estime	
  antes	
  de	
  começar.	
  Você	
  identificará	
  possíveis	
  problemas	
  
                                  logo	
  de	
  início.
Use controle de versão
O versionamento é a máquina de tempo de seu trabalho – ele o
                      permite voltar.
Corrija o problema,
esqueça o culpado

Não importa se você ou outra
pessoa foi o culpado pelo bug –
  ele precisará de correção de
        qualquer forma.
Não suponha – teste

                 Comprove suas suposições no
                  ambiente real – com dados e
                               condições reais.
Escreva um código que escreva códigos
        Os geradores de códigos aumentam a
           produtividade e ajudam a evitar a
                                 duplicação
Programe por contratos




          Use contratos para
    documentar e provar que
   o código não faz mais nem
    menos do que ele propõe
                       fazer.
Use exceções para problemas excepcionais
  try{
  }catch(){
  }catch(){
  }finally{
  }      As	
  exceções	
  podem	
  sofrer	
  de	
  todos	
  os	
  problemas	
  de	
  
     legibilidade	
  e	
  manutenção	
  dos	
  emaranhados	
  de	
  códigos	
  
      clássicos.	
  Guarde-­‐as	
  para	
  acontecimentos	
  excepcionais.	
  
Reduza a vinculação entre módulos

  Evite a vinculação escrevendo códigos
 “cautelosos” e aplicando a lei de Deméter
Es,me	
  a	
  ordem	
  de	
  complexidade	
                     O(n)	
  de	
  seus	
  algoritmos	
  
   Tenha	
  uma	
  idéia	
  de	
  quanto	
  o	
  processo	
  deve	
  demorar	
  antes	
  de	
  escrever	
  o	
  código




                                                                                    Fonte: Nívio Ziviani
Tenha suas estimativas

 A análise matemática de algoritmos não diz tudo. Tente
  cronometrar seu código em seu ambiente de destino.
Refatore cedo, refatore sempre
Da mesma forma que você pode capinar e reorganizar um jardim,
  reescreva, reorganize e reconstrua o código quanto necessário.
                   Ataque a raiz do problema.
Projete para testar


              Comece a pensar no teste antes de
                  escrever uma linha de código
Teste seu código ou seus usuários
 testarão

  Teste incansavelmente. Não deixe que seus
          usuários encontre erros para você
Não use código de wizard que você não entende

      Wizards	 podem	 gerar	 muitas	 linhas	 de	 código.	 Verifique	 se	 você	 o	 entendeu	 por	 
                                             completo	 antes	 de	 introduzi-lo	 no	 seu	 projeto.
Trabalhe com usuários para
  pensar como um usuário

 É a melhor maneira de entender como o
      sistema será usado de verdade
Abstrações tem vida mais longa do que detalhes
   Invista na abstração e não na implementação.
     As abstrações podem sobreviver às diversas
            mudanças provenientes de diferentes
            implementações e novas tecnologias.
Use um glossário do projeto
      Crie	
  e	
  mantenha	
  uma	
  fonte	
  exclusiva	
  com	
  todos	
  os	
  termos	
  e	
  
                                      vocabulário	
  específicos	
  de	
  um	
  projeto
Não pense fora da caixa – encontre
              a caixa
 Quando diante de um problema difícil, identifique todas as
    restrições reais. Faça a si próprio a pergunta: “Isso
        precisa ser feito?” De fato, precisa ser feito?
Não seja escravo de métodos
           formais

Não adote cegamente qualquer técnica sem
 trazê-la para o contexto de suas práticas e
      capacidades de desenvolvimento
Ferramentas caras não produzem projetos melhores

         Cuidado	
 com	
 a	
 propaganda	
 dos	
 fornecedores,	
 com	
 dogmas	
 da	
 
          indústria	
 e	
 com	
 o	
 apelo	
 da	
 etiqueta	
 de	
 preço.	
 Julgue	
 as	
 
                                                   ferramentas	
 por	
 seu	
 mérito
Organize	 as	 equipes	 com	 base	 na	 funcionalidade
          Não separa projetista de codificadores,
    testadores de modeladores de dados. Construa
                 equipes como constrói o código.
Teste cedo. Teste Sempre. Teste automaticamente
Testes executados a cada construção são muito mais eficazes do
 que planos de teste que ficam aguardando para ser executados.
A codificação só estará concluída
    após todos os testes serem
           executados
Nada mais a declamar.
Use o seu conhecimento para testar seus testes
      Introduza erros de propósito em uma cópia
     separada da fonte para verificar se os testes
                                irão capturá-los.
Teste	
  a	
  cobertura	
  de	
  estados	
  e	
  não	
  a	
  cobertura	
  do	
  código
                 teste	
  estados	
  significa:vos	
  do	
  programa.	
  
 Iden,fique	
  e	
  

      Testar	
  apenas	
  linhas	
  de	
  código	
  não	
  é	
  suficiente.
Encontre os erros apenas uma vez

                  Quanto um testador humano encontrar um
                  erro, essa deve ser a última vez que um
                      testador humano o encontrará. Testes
                     automatizados devem procurá-lo desse
                                       momento em diante.
Construa a documentação no código, não a acrescente como
                           complemento

                            Documentação	
 criada	
 separadamente	
 do	
 código	
 tem	
 menos	
 
                                      probabilidade	
 de	
 estar	
 correta	
 e	
 atualizada




Narrative:
In order to calculate BMI with ease
As a doctor
I want to have BMI Calculator application

Scenario: Simple BMI calculator validation

Given a body mass index calculator
When a patient's is with mass 77 kg and height 1.75 m
Then patient's body mass index is 25.14285659790039
Exceda gentilmente as expectativas de seus usuários

  Tente estender as expectativas de seus usuários e então
                entregue apenas um pouco mais
Assine	
  seu	
  trabalho
Os	
  artesões	
  da	
  an,guidade	
  ficavam	
  orgulhosos	
  em	
  assinar	
  seu	
  
                    trabalho.	
  Você	
  também	
  deve	
  ficar
Obrigado!

Mais conteúdo relacionado

Mais procurados

Sete Passos Para Um Programador De Sucesso
Sete Passos Para Um Programador De SucessoSete Passos Para Um Programador De Sucesso
Sete Passos Para Um Programador De SucessoPlaneta Código
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamentothiagodp
 
P01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhorP01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhorLeandro Ferreira
 
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedoresHenrique Fernandes Gonçalves
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Joao Galdino Mello de Souza
 
10 dicas de carreira em PHP
10 dicas de carreira em PHP10 dicas de carreira em PHP
10 dicas de carreira em PHPElton Minetto
 
Não deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkNão deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkGiuseppe Lopes
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu códigoAna Claudia Nogueira
 
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014Gilmar PSL
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013Gabriel Rubens
 
Design de Interação - SECOMP 2011 - Segundo dia
Design de Interação - SECOMP 2011 - Segundo diaDesign de Interação - SECOMP 2011 - Segundo dia
Design de Interação - SECOMP 2011 - Segundo diaPaulo Cesar
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Raphael Paiva
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 

Mais procurados (20)

Sete Passos Para Um Programador De Sucesso
Sete Passos Para Um Programador De SucessoSete Passos Para Um Programador De Sucesso
Sete Passos Para Um Programador De Sucesso
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamento
 
P01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhorP01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhor
 
TDC 2015 - Torne-se um programador melhor
TDC 2015 - Torne-se um  programador melhorTDC 2015 - Torne-se um  programador melhor
TDC 2015 - Torne-se um programador melhor
 
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
 
Clean Code
Clean CodeClean Code
Clean Code
 
10 dicas de carreira em PHP
10 dicas de carreira em PHP10 dicas de carreira em PHP
10 dicas de carreira em PHP
 
PHPZEIRO: Adote um framework
PHPZEIRO: Adote um frameworkPHPZEIRO: Adote um framework
PHPZEIRO: Adote um framework
 
Não deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkNão deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do framework
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu código
 
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
 
Metodos ageis thinkingdifferent
Metodos ageis thinkingdifferentMetodos ageis thinkingdifferent
Metodos ageis thinkingdifferent
 
Design de Interação - SECOMP 2011 - Segundo dia
Design de Interação - SECOMP 2011 - Segundo diaDesign de Interação - SECOMP 2011 - Segundo dia
Design de Interação - SECOMP 2011 - Segundo dia
 
Over engineering
Over engineeringOver engineering
Over engineering
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 

Semelhante a O programador Pragmático: da aprendiz a mestre

Fisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoFisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoGustavo Neves
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
Projeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.SProjeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.SThoughtworks
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agileAlini Rebonatto
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareDextra Sistemas / Etec Itu
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHPCezar Souza
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceCarolina Karklis
 
Programação defensiva
Programação defensivaProgramação defensiva
Programação defensivaKayo Rayner
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27Hélio Medeiros
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
 
Clean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareClean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareGabriel Felipe Soares
 
TDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilTDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilBruno Eustáquio
 
Analise e desenvolvimento
Analise e desenvolvimentoAnalise e desenvolvimento
Analise e desenvolvimentoGabriel Moura
 

Semelhante a O programador Pragmático: da aprendiz a mestre (20)

Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Fisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoFisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmo
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Projeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.SProjeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.S
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
 
Programação defensiva
Programação defensivaProgramação defensiva
Programação defensiva
 
eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
Clean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareClean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de Software
 
TDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilTDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software Ágil
 
Test day 2012
Test day 2012Test day 2012
Test day 2012
 
Analise e desenvolvimento
Analise e desenvolvimentoAnalise e desenvolvimento
Analise e desenvolvimento
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 

Mais de edgarddavidson.com

qualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrõesqualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrõesedgarddavidson.com
 
Pós Graduação em Engenharia de Software Centrada em Métodos Ágeis
Pós Graduação em Engenharia de Software Centrada em Métodos ÁgeisPós Graduação em Engenharia de Software Centrada em Métodos Ágeis
Pós Graduação em Engenharia de Software Centrada em Métodos Ágeisedgarddavidson.com
 
Localização de Placas de Veículos Baseada em Métodos Estatísticos
Localização de Placas de Veículos Baseada em Métodos EstatísticosLocalização de Placas de Veículos Baseada em Métodos Estatísticos
Localização de Placas de Veículos Baseada em Métodos Estatísticosedgarddavidson.com
 
Localização de Placas de Veículos Baseada em Métodos Estatísticos
Localização de Placas de Veículos Baseada em Métodos EstatísticosLocalização de Placas de Veículos Baseada em Métodos Estatísticos
Localização de Placas de Veículos Baseada em Métodos Estatísticosedgarddavidson.com
 

Mais de edgarddavidson.com (10)

Scrum checklists
Scrum checklistsScrum checklists
Scrum checklists
 
Scrum checklist
Scrum checklistScrum checklist
Scrum checklist
 
Scrum checklist pt-br
Scrum checklist pt-brScrum checklist pt-br
Scrum checklist pt-br
 
qualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrõesqualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrões
 
Carreira de Professor?
Carreira  de Professor?Carreira  de Professor?
Carreira de Professor?
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Formei, mas não sei nada!!!
Formei, mas não sei nada!!!Formei, mas não sei nada!!!
Formei, mas não sei nada!!!
 
Pós Graduação em Engenharia de Software Centrada em Métodos Ágeis
Pós Graduação em Engenharia de Software Centrada em Métodos ÁgeisPós Graduação em Engenharia de Software Centrada em Métodos Ágeis
Pós Graduação em Engenharia de Software Centrada em Métodos Ágeis
 
Localização de Placas de Veículos Baseada em Métodos Estatísticos
Localização de Placas de Veículos Baseada em Métodos EstatísticosLocalização de Placas de Veículos Baseada em Métodos Estatísticos
Localização de Placas de Veículos Baseada em Métodos Estatísticos
 
Localização de Placas de Veículos Baseada em Métodos Estatísticos
Localização de Placas de Veículos Baseada em Métodos EstatísticosLocalização de Placas de Veículos Baseada em Métodos Estatísticos
Localização de Placas de Veículos Baseada em Métodos Estatísticos
 

Último

Libras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS MemoriaLibras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS Memorialgrecchi
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfMarianaMoraesMathias
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxBeatrizLittig1
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxTainTorres4
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFtimaMoreira35
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresAnaCarinaKucharski1
 
análise de redação completa - Dissertação
análise de redação completa - Dissertaçãoanálise de redação completa - Dissertação
análise de redação completa - DissertaçãoMaiteFerreira4
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfMárcio Azevedo
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 

Último (20)

Libras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS MemoriaLibras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS Memoria
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docx
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdf
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
 
análise de redação completa - Dissertação
análise de redação completa - Dissertaçãoanálise de redação completa - Dissertação
análise de redação completa - Dissertação
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdf
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 

O programador Pragmático: da aprendiz a mestre

  • 1. O programador Pragmático De aprendiz a mestre Edgard Davidson @edgarddavidson
  • 2. Referências Andrew Hunt David Thomas
  • 3. !"#$#%&'#($)(*+*,-*./0$#1$21$ 3(04#)05$60.)(*)*(#7$0%$*2)0(#%$ /#%)#$,7'(08$"#$.90$60.%#:27(5$ 3(062(*(#7$6*./7/*)0%$;2#$,#(*1$ #%)*$0+(*8<$ ! !"#$%% &'(()(*+",%
  • 4. Este livro contempla: combater a deterioração de software não duplicar informações escrever código flexível, dinâmico e adaptável evitar a programação baseada no acaso blindar seu código com contratos, asserções e exceções capturar requisitos reais testar de modo incansável e eficaz agradar seus usuários montar equipes de programadores pragmáticos aumentar a precisão de seus desenvolvimentos com automação.
  • 5. Preocupe-se com seu trabalho Por que passar sua vida desenvolvendo software se não estiver interessado em fazê-lo bem?
  • 6. Reflita sobre seu trabalho Desligue o piloto automático e assuma o controle. Critique e avalie constantemente seu trabalho.
  • 7. Forneça opções, não dê desculpas esfarrapadas Em vez de desculpas, forneça opções. Não diga que não pode ser feito; explique o que pode ser feito.
  • 8. Não tolere janelas quebradas Corrija projetos incorretos, decisões erradas e códigos frágeis quando os encontrar
  • 9. Seja  um  catalisador  de  mudanças Você não pode impor mudanças às pessoas. Em vez disso, mostre a elas como o futuro pode ser e ajude-as a participar de sua criação
  • 10. Lembre-se do cenário em larga escala Não fique tão absorvido pelos detalhes a ponto de não ver o que está acontecendo ao seu redor
  • 11. Tome a qualidade parte dos requisitos Envolva seus usuários na determinação dos requisitos de qualidade do projeto.
  • 12. 2)3+41&!5%6-7&($%)1%!%$!4-&!8&(1%+(&!*%! 8#).%8+$%)1#! ! "#$%!#!&'(%)*+,&*#!!-$!./0+1#! !
  • 13. Analise criticamente o que você lê e ouve Não se deixe levar por fornecedores, pela mídia ou por dogmas. Analise as informações em relação a si mesmo e ao seu projeto
  • 14. É o que você diz e a maneira como diz Não adianta ter grandes idéias se elas não forem divulgadas de modo eficaz.
  • 15. NSR  –  Não  Se  Repita Cada  bloco  de  informações  deve  ter  uma  representação  oficial,   exclusiva  e  sem  ambiguidade  dentro  de  um  sistema.
  • 16. Facilite a reutilização Se  for  fácil  reu,lizar,  será  reu,lizado.  Crie  um  ambiente  que   apóie  a  reu,lização
  • 17. Elimine efeitos entre elementos não relacionados Projete componentes que sejam auto- suficientes, independentes e com uma finalidade exclusiva bem definida.
  • 18. Não há decisões definitivas Nenhuma decisão é irrevogável: planeje-se para a mudança.
  • 19. Crie protótipos para aprender A criação de protótipos é uma experiência de aprendizado. Seu valor não está no código produzido, mas nas lições aprendidas.
  • 20. Programe em um nível próximo ao domínio do problema Projete e codifique na linguagem do seu usuário.
  • 21. Estime  para  evitar  surpresas Estime  antes  de  começar.  Você  identificará  possíveis  problemas   logo  de  início.
  • 22. Use controle de versão O versionamento é a máquina de tempo de seu trabalho – ele o permite voltar.
  • 23. Corrija o problema, esqueça o culpado Não importa se você ou outra pessoa foi o culpado pelo bug – ele precisará de correção de qualquer forma.
  • 24. Não suponha – teste Comprove suas suposições no ambiente real – com dados e condições reais.
  • 25. Escreva um código que escreva códigos Os geradores de códigos aumentam a produtividade e ajudam a evitar a duplicação
  • 26. Programe por contratos Use contratos para documentar e provar que o código não faz mais nem menos do que ele propõe fazer.
  • 27. Use exceções para problemas excepcionais try{ }catch(){ }catch(){ }finally{ } As  exceções  podem  sofrer  de  todos  os  problemas  de   legibilidade  e  manutenção  dos  emaranhados  de  códigos   clássicos.  Guarde-­‐as  para  acontecimentos  excepcionais.  
  • 28. Reduza a vinculação entre módulos Evite a vinculação escrevendo códigos “cautelosos” e aplicando a lei de Deméter
  • 29. Es,me  a  ordem  de  complexidade   O(n)  de  seus  algoritmos   Tenha  uma  idéia  de  quanto  o  processo  deve  demorar  antes  de  escrever  o  código Fonte: Nívio Ziviani
  • 30. Tenha suas estimativas A análise matemática de algoritmos não diz tudo. Tente cronometrar seu código em seu ambiente de destino.
  • 31. Refatore cedo, refatore sempre Da mesma forma que você pode capinar e reorganizar um jardim, reescreva, reorganize e reconstrua o código quanto necessário. Ataque a raiz do problema.
  • 32. Projete para testar Comece a pensar no teste antes de escrever uma linha de código
  • 33. Teste seu código ou seus usuários testarão Teste incansavelmente. Não deixe que seus usuários encontre erros para você
  • 34. Não use código de wizard que você não entende Wizards podem gerar muitas linhas de código. Verifique se você o entendeu por completo antes de introduzi-lo no seu projeto.
  • 35. Trabalhe com usuários para pensar como um usuário É a melhor maneira de entender como o sistema será usado de verdade
  • 36. Abstrações tem vida mais longa do que detalhes Invista na abstração e não na implementação. As abstrações podem sobreviver às diversas mudanças provenientes de diferentes implementações e novas tecnologias.
  • 37. Use um glossário do projeto Crie  e  mantenha  uma  fonte  exclusiva  com  todos  os  termos  e   vocabulário  específicos  de  um  projeto
  • 38. Não pense fora da caixa – encontre a caixa Quando diante de um problema difícil, identifique todas as restrições reais. Faça a si próprio a pergunta: “Isso precisa ser feito?” De fato, precisa ser feito?
  • 39. Não seja escravo de métodos formais Não adote cegamente qualquer técnica sem trazê-la para o contexto de suas práticas e capacidades de desenvolvimento
  • 40. Ferramentas caras não produzem projetos melhores Cuidado com a propaganda dos fornecedores, com dogmas da indústria e com o apelo da etiqueta de preço. Julgue as ferramentas por seu mérito
  • 41. Organize as equipes com base na funcionalidade Não separa projetista de codificadores, testadores de modeladores de dados. Construa equipes como constrói o código.
  • 42. Teste cedo. Teste Sempre. Teste automaticamente Testes executados a cada construção são muito mais eficazes do que planos de teste que ficam aguardando para ser executados.
  • 43. A codificação só estará concluída após todos os testes serem executados Nada mais a declamar.
  • 44. Use o seu conhecimento para testar seus testes Introduza erros de propósito em uma cópia separada da fonte para verificar se os testes irão capturá-los.
  • 45. Teste  a  cobertura  de  estados  e  não  a  cobertura  do  código teste  estados  significa:vos  do  programa.   Iden,fique  e   Testar  apenas  linhas  de  código  não  é  suficiente.
  • 46. Encontre os erros apenas uma vez Quanto um testador humano encontrar um erro, essa deve ser a última vez que um testador humano o encontrará. Testes automatizados devem procurá-lo desse momento em diante.
  • 47. Construa a documentação no código, não a acrescente como complemento Documentação criada separadamente do código tem menos probabilidade de estar correta e atualizada Narrative: In order to calculate BMI with ease As a doctor I want to have BMI Calculator application Scenario: Simple BMI calculator validation Given a body mass index calculator When a patient's is with mass 77 kg and height 1.75 m Then patient's body mass index is 25.14285659790039
  • 48. Exceda gentilmente as expectativas de seus usuários Tente estender as expectativas de seus usuários e então entregue apenas um pouco mais
  • 49. Assine  seu  trabalho Os  artesões  da  an,guidade  ficavam  orgulhosos  em  assinar  seu   trabalho.  Você  também  deve  ficar
  • 50.