o programador pragmatico
DESCRIPTION
Sinopse bem elaborada por Edgard Davidson do livro "The Pragmatic Programmer" de Andrew Hunt e David Thomas.TRANSCRIPT
![Page 1: O Programador Pragmatico](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/1.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/2.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/3.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/4.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/5.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/6.jpg)
7/17/2019 O Programador Pragmatico
http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 6/51
![Page 7: O Programador Pragmatico](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/7.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/8.jpg)
7/17/2019 O Programador Pragmatico
http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 8/51
![Page 9: O Programador Pragmatico](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/9.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/10.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/11.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/12.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/13.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/14.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/15.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/16.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/17.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/18.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/19.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/20.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/21.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/22.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/23.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/24.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/25.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/26.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/27.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/28.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/29.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/30.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/31.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/32.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/33.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/34.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/35.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/36.jpg)
7/17/2019 O Programador Pragmatico
http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 36/51
![Page 37: O Programador Pragmatico](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/37.jpg)
7/17/2019 O Programador Pragmatico
http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 37/51
![Page 38: O Programador Pragmatico](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/38.jpg)
7/17/2019 O Programador Pragmatico
http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 38/51
![Page 39: O Programador Pragmatico](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/39.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/40.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/41.jpg)
7/17/2019 O Programador Pragmatico
http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 41/51
![Page 42: O Programador Pragmatico](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/42.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/43.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/44.jpg)
7/17/2019 O Programador Pragmatico
http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 44/51
![Page 45: O Programador Pragmatico](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/45.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/46.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/47.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/48.jpg)
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](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/49.jpg)
7/17/2019 O Programador Pragmatico
http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 49/51
![Page 50: O Programador Pragmatico](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/50.jpg)
7/17/2019 O Programador Pragmatico
http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 50/51
![Page 51: O Programador Pragmatico](https://reader031.vdocument.in/reader031/viewer/2022020709/563db878550346aa9a940207/html5/thumbnails/51.jpg)
7/17/2019 O Programador Pragmatico
http://slidepdf.com/reader/full/o-programador-pragmatico-568ca5193e691 51/51
Obrigado!