O Programador Pragmatico

51
Edgard Davidson @edgarddavidson a mestre De aprendiz O programador Pragmático

description

Sinopse bem elaborada por Edgard Davidson do livro "The Pragmatic Programmer" de Andrew Hunt e David Thomas.

Transcript of O Programador Pragmatico

Page 1: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 1/51

Edgard Davidson

@edgarddavidson

a mestre

De aprendiz

O programador Pragmático

Page 2: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 2/51

Referências

Andrew Hunt

David Thomas

Page 3: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 3/51

 

!"#$

&'(()(*+",

!"# #%&'#( )(*+*,-*./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<

Page 4: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 4/51

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.

Page 5: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 5/51

Preocupe-se com seu trabalhoPor que passar sua vida desenvolvendo software

se não estiver interessado em fazê-lo bem?

Page 6: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 6/51

Page 7: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 7/51

Forneça opções, não dê

desculpasesfarrapadas

Em vez de desculpas, forneça

opções. Não diga que não

pode ser feito; explique o quepode ser feito.

Page 8: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 8/51

Page 9: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 9/51

!"#$ &' ($)$*+,$-./ -" '&-$01$,

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

Page 10: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 10/51

Lembre-se do cenário em larga escalaNão fique tão absorvido pelos detalhes a ponto de não ver o que

está acontecendo ao seu redor

Page 11: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 11/51

Tome a qualidade parte dos requisitos

Envolva seus usuários na determinação dos requisitos de qualidade

do projeto.

Page 12: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 12/51

 

"#$% # &'(%)*+,&*# -$ ./0+1#

2)3+41& 5%6-7&($%)1% %$ 4-& 8&(1%+(& *%

8#).%8+$%)1#

Page 13: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 13/51

Analise criticamente o que você lê e ouveNã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

Page 14: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 14/51

É o que você diz e a maneira como diz

ã    é   ã     

Page 15: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 15/51

2!3 4 25. !" 3"6+)$!"#" %&'(' #) *+,'-."/0)1 #)2) 3)- 4." -)5-)1)+3"/6' '7(*"&8

)9(&41*2" ) 1). ".%*:4*#"#) #)+3-' #) 4. 1*13).";

Page 16: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 16/51

Facili te a reutilização

!" $%& $'()* &"+,*)-.&/ 0"&' &"+,*)-.1%2 3&)" +4 .45)"67" 8+"

.9:)" . &"+,*)-.;<%

Page 17: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 17/51

Elimine efeitos entreelementos nãorelacionados

Projete 

componentes 

que 

sejam 

auto-

suficientes, independentes e com uma 

finalidade exclusiva bem definida.

Page 18: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 18/51

Não há decisões definitivasNenhuma decisão é irrevogável: planeje-se para a mudança.

Page 19: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 19/51

Crie protótipos para aprenderA criação de protótipos é uma experiência de aprendizado. Seu valor não

está no código produzido, mas nas lições aprendidas.

ó

Page 20: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 20/51

Programe em um nível próximo aodomínio do problema

Projete e codifique na linguagem do seu usuário.

Page 21: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 21/51

!"#$%& ()*) &+$#)* ",*(*&")"!"#$%& )-#&" .& /0%&1)*2 30/4 $.&-#$5$/)*6 (0""7+&$" (*089&%)"

90:0 .& $-7/$02

Page 22: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 22/51

! se con " ole de vers#o

O versionamen $ %  a m &quina de 'mpo de seu " abalho (  ele o)ermi ' voltar.

Page 23: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 23/51

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.

Page 24: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 24/51

Não suponha – teste

çõ

çõ

Page 25: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 25/51

Escreva um código que escreva códigos

Os geradores de códigos aumentam aprodutividade e ajudam a evitar a

duplicação

Page 26: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 26/51

Programe por contratos

Use contratos paradocumentar e provar que

o código não faz mais nemmenos do que ele propõe

fazer.

Page 27: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 27/51

çõ

<1 )9()/0)1 5'#). 1',-)- #) 3'#'1 '1 5-'%&)."1 #)

&):*%*&*#"#) ) ."+43)+/6' #'1 )."-"+="#'1 #) (>#*:'1

(&?11*('1; @4"-#)A"1 5"-" "('+3)(*.)+3'1 )9()5(*'+"*1;

Page 28: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 28/51

Reduza a vinculação entre módulos

Evite a vinculação escrevendo códigos

“cautelosos” e aplicando a lei de Deméter

Page 29: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 29/51

=0,4" . %&1"4 1" (%49*">)1.1" ?@6A 1" 0"+0 .*B%&)74%0

C"6D. +4. )1E). 1" 8+.67% % 9&%("00% 1"F" 1"4%&.& .67"0 1" "0(&"F"& % (:1)B%

Fonte: Nívio Ziviani

Page 30: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 30/51

Tenha suas estimativas

A análise matemática de algoritmos não diz tudo. Tente

cronometrar seu código em seu ambiente de destino.

Page 31: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 31/51

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.

Page 32: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 32/51

Projete para testar

  ó

Page 33: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 33/51

Teste seu código ou seus usuáriostestarão 

Teste incansavelmente. Não deixe que seus

usuários encontre erros para você

Page 34: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 34/51

Não use código de wizard que você não entende

      ó   ê    

 

 

 

 

 

 

Page 35: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 35/51

Trabalhe com usuários para pensar como um usuário

É a melhor maneira de entender como osistema será usado de verdade

Page 36: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 36/51

Page 37: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 37/51

Page 38: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 38/51

Page 39: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 39/51

Não seja escravo de métodos

formais

  !"o ado# cegamen # qualquer  t $ cnica sem  

% az & -la  para o con #x ' de suas  pr () cas e 

* apacidades de desenvolvimen '

+ t " d j ' lh

Page 40: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 40/51

 + erramentas caras n "o  produzem   proje's melhore,

                    

 

 

 

Page 41: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 41/51

Page 42: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 42/51

Teste cedo. Teste Sempre. Teste automaticamente

çã ã

Page 43: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 43/51

A codificação só estará concluída

após todos os testes seremexecutados

Nada mais a declamar.

Page 44: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 44/51

Page 45: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 45/51

C"07" . (%5"&7+&. 1" ",)$-., " 6<% . (%5"&7+&. 1% (7-+8.

G1"6,H8+" " )",)" ",)$-., ,+80+9($:;., 1% 9&%B&.4.2

C"07.& $6"0$, *)6D.0 1" (7-+8. 05. < ,&9(+"0)"2

Page 46: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 46/51

Encontre os erros apenas uma vez Quanto um testador humano encontrar umerro, essa deve ser a última vez que um

testador humano o encontrará. Testesautomatizados devem procurá-lo desse

momento em diante.

Page 47: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 47/51

Construa a documentação no código, não a acrescente comocomplemento

 

 

 

 

 

 

 

 

 

 

 

 

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

Page 48: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 48/51

Exceda gentilmente as expectativas de seus usuários

Tente estender as expectativas de seus usuários e entãoentregue apenas um pouco mais

Page 49: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 49/51

Page 50: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 50/51

Page 51: O Programador Pragmatico

7/17/2019 O Programador Pragmatico

http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 51/51

Obrigado!