Anda di halaman 1dari 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 autosuficientes, 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

O(n) de seus algoritmos

Es,me a ordem de complexidade

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.


Testar apenas linhas de cdigo no suciente.

Iden,que e

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!