o programador pragmático

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

Upload: edgarddavidsoncom

Post on 02-Dec-2014

6.049 views

Category:

Education


73 download

DESCRIPTION

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

TRANSCRIPT

Page 1: O programador pragmático

Edgard Davidson

@edgarddavidson

a mestre

De aprendiz

O programador Pragmático

Page 2: O programador pragmático

Referências

Andrew Hunt

David Thomas

Page 3: O programador pragmático

!!"#$%%

&'(()(*+",%

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

Este livro contempla:combater a deterioração de softwarenão duplicar informaçõesescrever código flexível, dinâmico e adaptávelevitar a programação baseada no acasoblindar seu código com contratos, asserções e exceçõescapturar requisitos reaistestar de modo incansável e eficazagradar seus usuáriosmontar equipes de programadores pragmáticosaumentar a precisão de seus desenvolvimentos com automação.

Page 5: O programador pragmático

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

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

Page 6: O programador pragmático

Reflita sobre seu trabalhoDesligue o piloto automático e assuma o controle. Critique e avalie constantemente seu trabalho.

Page 7: O programador pragmático

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.

Page 8: O programador pragmático

Não tolere janelas quebradasCorrija projetos incorretos, decisões erradas e códigos frágeis quando os

encontrar

Page 9: O programador pragmático

Seja  um  catalisador  de  mudançasVocê 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 pragmático

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 pragmático

Tome a qualidade parte dos requisitosEnvolva seus usuários na determinação dos requisitos de qualidade

do projeto.

Page 12: O programador pragmático

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

!

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

Page 13: O programador pragmático

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 pragmático

É o que você diz e a maneira como diz

Não adianta ter grandes idéias se elas não forem divulgadas de modo eficaz.

Page 15: O programador pragmático

NSR  –  Não  Se  RepitaCada  bloco  de  informações  deve  ter  uma  representação  oficial,  

exclusiva  e  sem  ambiguidade  dentro  de  um  sistema.

Page 16: O programador pragmático

Facilite a reutilização

Se  for  fácil  reu,lizar,  será  reu,lizado.  Crie  um  ambiente  que  apóie  a  reu,lização

Page 17: O programador pragmático

Elimine efeitos entre elementos não relacionados

Projete componentes que sejam auto-

suficientes, independentes e com uma

finalidade exclusiva bem definida.

Page 18: O programador pragmático

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

Page 19: O programador pragmático

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 pragmático

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

Projete e codifique na linguagem do seu usuário.

Page 21: O programador pragmático

Estime  para  evitar  surpresasEstime  antes  de  começar.  Você  identificará  possíveis  problemas  

logo  de  início.

Page 22: O programador pragmático

Use controle de versãoO versionamento é a máquina de tempo de seu trabalho – ele o

permite voltar.

Page 23: O programador pragmático

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 pragmático

Não suponha – teste

Comprove suas suposições no ambiente real – com dados e

condições reais.

Page 25: O programador pragmático

Escreva um código que escreva códigos

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

duplicação

Page 26: O programador pragmático

Programe por contratos

Use contratos para documentar e provar que

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

fazer.

Page 27: O programador pragmático

Use exceções para problemas excepcionais

As  exceções  podem  sofrer  de  todos  os  problemas  de  legibilidade  e  manutenção  dos  emaranhados  de  códigos  clássicos.  Guarde-­‐as  para  acontecimentos  excepcionais.  

try{}catch(){}catch(){}finally{}

Page 28: O programador pragmático

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 pragmático

Es,me  a  ordem  de  complexidade  O(n)  de  seus  algoritmos  Tenha  uma  idéia  de  quanto  o  processo  deve  demorar  antes  de  escrever  o  código

Fonte: Nívio Ziviani

Page 30: O programador pragmático

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 pragmático

Refatore cedo, refatore sempreDa 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 pragmático

Projete para testar

Comece a pensar no teste antes de escrever uma linha de código

Page 33: O programador pragmático

Teste seu código ou seus usuários testarão

Teste incansavelmente. Não deixe que seus usuários encontre erros para você

Page 34: O programador pragmático

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

Wizards podem gerar muitas linhas de código. Verifique se você o entendeu por completo antes de introduzi-lo no seu projeto.

Page 35: O programador pragmático

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

É a melhor maneira de entender como o sistema será usado de verdade

Page 36: O programador pragmático

Abstrações tem vida mais longa do que detalhesInvista 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.

Page 37: O programador pragmático

Use um glossário do projeto

Crie  e  mantenha  uma  fonte  exclusiva  com  todos  os  termos  e  vocabulário  específicos  de  um  projeto

Page 38: O programador pragmático

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?

Page 39: O programador pragmático

Não seja escravo de métodos formais

Não adote cegamente qualquer técnica sem

trazê-la para o contexto de suas práticas e capacidades de desenvolvimento

Page 40: O programador pragmático

Ferramentas caras não produzem projetos melhores

Cuidado com a propaganda dos fornecedores, com dogmas da indústria e com o apelo da etiqueta de preço. Julgue as

ferramentas por seu mérito

Page 41: O programador pragmático

Organize as equipes com base na funcionalidadeNão separa projetista de codificadores,

testadores de modeladores de dados. Construa equipes como constrói o código.

Page 42: O programador pragmático

Teste cedo. Teste Sempre. Teste automaticamenteTestes executados a cada construção são muito mais eficazes do que planos de teste que ficam aguardando para ser executados.

Page 43: O programador pragmático

A codificação só estará concluída após todos os testes serem

executadosNada mais a declamar.

Page 44: O programador pragmático

Use o seu conhecimento para testar seus testesIntroduza erros de propósito em uma cópia separada da fonte para verificar se os testes

irão capturá-los.

Page 45: O programador pragmático

Teste  a  cobertura  de  estados  e  não  a  cobertura  do  códigoIden,fique  e  teste  estados  significa:vos  do  programa.  

Testar  apenas  linhas  de  código  não  é  suficiente.

Page 46: O programador pragmático

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.

Page 47: O programador pragmático

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

Documentação criada separadamente do código 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

Page 48: O programador pragmático

Exceda gentilmente as expectativas de seus usuários

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

Page 49: O programador pragmático

Assine  seu  trabalhoOs  artesões  da  an,guidade  ficavam  orgulhosos  em  assinar  seu  

trabalho.  Você  também  deve  ficar

Page 50: O programador pragmático
Page 51: O programador pragmático

Obrigado!