O Programador Pragmático se concentra no processo fundamental do desenvolvimento de software:
a partir de um requisito, produzir código funcional e de fácil manutenção que agrade aos usuários.
Sem se ater a uma tecnologia específica, esta obra aborda tópicos que vão do desenvolvimento da ...
O Programador Pragmático se concentra no processo fundamental do desenvolvimento de software:
a partir de um requisito, produzir código funcional e de fácil manutenção que agrade aos usuários.
Sem se ater a uma tecnologia específica, esta obra aborda tópicos que vão do desenvolvimento da carreira a técnicas de projeto para manter seu código flexível e fácil de adaptar
Size: 22 MB
Language: pt
Added: Apr 30, 2012
Slides: 51 pages
Slide Content
Edgard Davidson
@edgarddavidson
a mestre
De aprendiz
O programador Pragmático
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.
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.
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
/ãPBEJBOUBUFSHSBOEFTJE éJBTTFFMBTO ãPGPSFNEJWVMHBEBTEFNPEPFGJDB[
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.
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
$PNFDFBQFOTBSOPUFTUFBOUFTEF
FTDSFWFSVNBMJOIBEFDóEJHP
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
8J[BSETQPEFNHFSBSNVJUBTMJOIBTEFD óEJHP7FSJGJRVFTFWPD êPFOUFOEFVQPS
DPNQMFUPBOUFTEFJOUSPEV[JMPOPTFVQSPKFUP
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 ado# cegamen# qualquer técnica sem
%azê-la para o con#x' de suas prá)cas e
capacidades de desenvolvimen'
Ferramentas caras não produzem proje's melhores
$VJEBEPDPNBQSPQBHBOEBEPTGPSOFDFEPSFTDPNEPHNBTEB
JOEÙTUSJBFDPNPBQFMPEBFUJRVFUBEFQSFÇP+VMHVFBT
GFSSBNFOUBTQPSTFVNÉSJUP
0SHBOJ[FBTFRVJQFTDPNCBTFOBGVODJPOBMJEBEF
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
5FTUFTFYFDVUBEPTBDBEBDPOTUSVçãPTãPNVJUPNBJTFGJDB[FTEP
RVFQMBOPTEFUFTUFRVFGJDBNBHVBSEBOEPQBSBTFSFYFDVUBEPT
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.
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
%PDVNFOUBÇÄPDSJBEBTFQBSBEBNFOUFEPDÓEJHPUFNNFOPT
QSPCBCJMJEBEFEFFTUBSDPSSFUBFBUVBMJ[BEB
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