Você está na página 1de 51

O programador Pragmtico

De aprendiz

a mestre

Edgard Davidson
@edgarddavidson
Referncias

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 deteriorao de software
no duplicar informaes
escrever cdigo flexvel, dinmico e adaptvel
evitar a programao baseada no acaso
blindar seu cdigo com contratos, asseres e excees
capturar requisitos reais
testar de modo incansvel e eficaz
agradar seus usurios
montar equipes de programadores pragmticos
aumentar a preciso de seus desenvolvimentos com automao.
Preocupe-se com seu trabalho
Por que passar sua vida desenvolvendo software
se no estiver interessado em faz-lo bem?
Reflita sobre seu trabalho
Desligue o piloto automtico e assuma o controle.
Critique e avalie constantemente seu trabalho.
Fornea opes, no d

desculpas
esfarrapadas
Em vez de desculpas, fornea
opes. No diga que no
pode ser feito; explique o que
pode ser feito.
No tolere janelas quebradas
Corrija projetos incorretos, decises
erradas e cdigos frgeis quando os
encontrar
Seja um catalisador de mudanas
Voc no pode impor mudanas s pessoas.
Em vez disso, mostre a elas como o futuro pode ser e
ajude-as a participar de sua criao
Lembre-se do cenrio em larga escala
No fique to absorvido pelos detalhes a ponto de no ver o que
est acontecendo ao seu redor
Tome a qualidade parte dos requisitos
Envolva seus usurios na determinao 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
No se deixe levar por fornecedores, pela mdia ou por dogmas. Analise as
informaes em relao a si mesmo e ao seu projeto
o que voc diz e a maneira como diz

No adianta ter grandes idias se elas no forem divulgadas de modo eficaz.


NSR No Se Repita
Cada bloco de informaes deve ter uma representao ocial,
exclusiva e sem ambiguidade dentro de um sistema.
Facilite a reutilizao

Se for fcil reu,lizar, ser reu,lizado. Crie um ambiente que


apie a reu,lizao
Elimine efeitos entre
elementos no
relacionados
Projete componentes que sejam auto-
suficientes, independentes e com uma
finalidade exclusiva bem definida.
No h decises definitivas
Nenhuma deciso irrevogvel: planeje-se para a mudana.
Crie prottipos para aprender
A criao de prottipos uma experincia de aprendizado. Seu valor no
est no cdigo produzido, mas nas lies aprendidas.
Programe em um nvel prximo ao
domnio do problema

Projete e codifique na linguagem do seu usurio.


Estime para evitar surpresas
Estime antes de comear. Voc identificar possveis problemas
logo de incio.
Use controle de verso
O versionamento a mquina de tempo de seu trabalho ele o
permite voltar.
Corrija o problema,
esquea o culpado

No importa se voc ou outra


pessoa foi o culpado pelo bug
ele precisar de correo de
qualquer forma.
No suponha teste

Comprove suas suposies no


ambiente real com dados e
condies reais.
Escreva um cdigo que escreva cdigos
Os geradores de cdigos aumentam a
produtividade e ajudam a evitar a
duplicao
Programe por contratos

Use contratos para


documentar e provar que
o cdigo no faz mais nem
menos do que ele prope
fazer.
Use excees para problemas excepcionais
try{
}catch(){
}catch(){
}finally{
} As excees podem sofrer de todos os problemas de
legibilidade e manuteno dos emaranhados de cdigos
clssicos. Guarde-as para acontecimentos excepcionais.
Reduza a vinculao entre mdulos

Evite a vinculao escrevendo cdigos


cautelosos e aplicando a lei de Demter
Es,me a ordem de complexidade O(n) de seus algoritmos
Tenha uma idia de quanto o processo deve demorar antes de escrever o cdigo

Fonte: Nvio Ziviani


Tenha suas estimativas

A anlise matemtica de algoritmos no diz tudo. Tente


cronometrar seu cdigo 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 cdigo quanto necessrio.
Ataque a raiz do problema.
Projete para testar

Comece a pensar no teste antes de


escrever uma linha de cdigo
Teste seu cdigo ou seus usurios
testaro

Teste incansavelmente. No deixe que seus


usurios encontre erros para voc
No use cdigo de wizard que voc no entende

Wizards podem gerar muitas linhas de cdigo. Verifique se voc o entendeu por
completo antes de introduzi-lo no seu projeto.
Trabalhe com usurios para
pensar como um usurio

a melhor maneira de entender como o


sistema ser usado de verdade
Abstraes tem vida mais longa do que detalhes
Invista na abstrao e no na implementao.
As abstraes podem sobreviver s diversas
mudanas provenientes de diferentes
implementaes e novas tecnologias.
Use um glossrio do projeto
Crie e mantenha uma fonte exclusiva com todos os termos e
vocabulrio especficos de um projeto
No pense fora da caixa encontre
a caixa
Quando diante de um problema difcil, identifique todas as
restries reais. Faa a si prprio a pergunta: Isso
precisa ser feito? De fato, precisa ser feito?
No seja escravo de mtodos
formais

No adote cegamente qualquer tcnica sem


traz-la para o contexto de suas prticas e
capacidades de desenvolvimento
Ferramentas caras no produzem projetos melhores

Cuidado com a propaganda dos fornecedores, com dogmas da


indstria e com o apelo da etiqueta de preo. Julgue as
ferramentas por seu mrito
Organize as equipes com base na funcionalidade
No separa projetista de codificadores,
testadores de modeladores de dados. Construa
equipes como constri o cdigo.
Teste cedo. Teste Sempre. Teste automaticamente
Testes executados a cada construo so muito mais eficazes do
que planos de teste que ficam aguardando para ser executados.
A codificao s estar concluda
aps todos os testes serem
executados
Nada mais a declamar.
Use o seu conhecimento para testar seus testes
Introduza erros de propsito em uma cpia
separada da fonte para verificar se os testes
iro captur-los.
Teste a cobertura de estados e no a cobertura do cdigo
teste estados signica:vos do programa.
Iden,que e

Testar apenas linhas de cdigo no suciente.


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 documentao no cdigo, no a acrescente como
complemento

Documentao criada separadamente do cdigo 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 usurios

Tente estender as expectativas de seus usurios e ento


entregue apenas um pouco mais
Assine seu trabalho
Os arteses da an,guidade cavam orgulhosos em assinar seu
trabalho. Voc tambm deve car
Obrigado!

Você também pode gostar