seja um programador pragmatico

30
SEJA UM PROGRAMADOR PRAGMÁTICO LEONARDO FERNANDES HTTP://JROLLER.COM/LEOFERNANDESMO

Upload: leonardo-fernandes

Post on 01-Jul-2015

2.699 views

Category:

Technology


13 download

TRANSCRIPT

Page 1: Seja Um Programador Pragmatico

SEJA UM PROGRAMADOR PRAGMÁTICO

LEONARDO FERNANDESHTTP://JROLLER.COM/LEOFERNANDESMO

Page 2: Seja Um Programador Pragmatico

QUEM SOU...

• Engenheiro de Software na Usina Coruripe• 4 anos de experiência• SCJP e SCWCD• Entusiasta de Práticas Ágeis• Coordenador do Grupo de Engenharia de Software-AL

Page 3: Seja Um Programador Pragmatico

SOBRE O QUE É A PALESTRA?

• Baseada no livro The Pragmatic Programmer• Dicas para se tornar um programador melhor• Bastante uso de analogias, não levem ao pé da letra

Programador Pragmático = PP

Page 4: Seja Um Programador Pragmatico

PARTE I

A FILOSOFIA DO PRAGMATISMO

Page 5: Seja Um Programador Pragmatico

DEFINIÇÃO

• Pragmatismo - " doutrina filosófica que adota como critério da verdade a utilidade prática, identificando o verdadeiro como útil " (Silveira Bueno)

• Ou seja, ser pragmático é ser...• objetivo• prático• direto

Page 6: Seja Um Programador Pragmatico

MAIS CARACTERÍSTICAS DE UMA PESSOA PRAGMÁTICA

• Aberto a mudanças• Curioso• Visão Crítica • Realista• Um especialista generalista

Page 7: Seja Um Programador Pragmatico

E LEMBRE-SE QUE ISSO É UM PROCESSO CONTÍNUO...

• Preocupe-se com suas habilidades(Portofólio de Conhecimento)

• Reflita sobre seu trabalho• Construir software é uma disciplina de engenharia?• O Jardineiro e o Turista• Kaizen

Page 8: Seja Um Programador Pragmatico

O PP E A FILOSOFIA DO PRAGMATISMO 1

• Senso de responsabilidade• Assuma compromissos• Quando cometer um erro(e todos nós cometemos)

admita-o e sugira soluções• Tenha planos de contingência• Forneça opções e não lamentações• Princípio da comunicação aberta - XP

Page 9: Seja Um Programador Pragmatico

O PP E A FILOSOFIA DO PRAGMATISMO 2

• Entropia de Software• Desordem no sistema • Vários fatores podem contribuir para a "desordem" de um

sistema• "A Teoria das Janelas Quebradas" - Não viva com Janelas

quebradas.

"Adding manpower to a late software project makes it later." - Frederik Brooks

Page 10: Seja Um Programador Pragmatico

O PP E A FILOSOFIA DO PRAGMATISMO 3

• Seja um catalisador das mudanças• "A sopa de pedras" • "Rã fervidas"

Page 11: Seja Um Programador Pragmatico

O PP E A FILOSOFIA DO PRAGMATISMO 4

• Um Software suficientemente bom• Não precisamos produzir o software mais perfeito do

mundo, precisamos fazer SWs suficientemente bons.• Traga seus usuários para perto de você• Saiba quando parar

"You can discipline yourself to write software that's good enough—good enough for your users, for future maintainers, for your own peace of mind. You'll find that you are more productive and your users are happier."Ed Yourdon

Page 12: Seja Um Programador Pragmatico

Estes são exemplos de produtos suficientemente bons...

Page 13: Seja Um Programador Pragmatico

O PP E A FILOSOFIA DO PRAGMATISMO 5

• Portfolio de Conhecimentoo portfolio = conjunto de investimentos o Seu conhecimento e sua experiência são seus maiores

bens profissionaiso Com o passar do tempo e com as mudanças do mercado:

o conhecimento torna-se desatualizado a experiência torna-se obsoleta ou irrelevante

An investment in knowledge always pays the best interest.Benjamin Franklin

Page 14: Seja Um Programador Pragmatico

GERENCIANDO O SEU PORTOFÓLIO DE CONHECIMENTO

• Investidores sérios investem constantemente• Diversificação é a chave para o sucesso a longo prazo• Investidores inteligentes se dividem em investimentos

conservadores e de alto risco• Investidores tentam comprar barato e vender caro• Trabalhe com metas e lembre-se. Metas precisam ser

revisadas e refeitas periodicamente

Page 15: Seja Um Programador Pragmatico

METAS PARA NÓS PP

• Aprender pelo menos uma nova linguagem por ano.• Ler um livro técnico a cada trimestre• Ler livros não técnicos também• Fazer cursos• Participar de de grupos de usuários locais• Experimentar diferentes ambientes• Manter-se atualizado• Envolva-se

Page 16: Seja Um Programador Pragmatico

DICAS DE INVESTIMENTO

• Cultive gurus • Tenha pensamento crítico...afinal,¨No Silver Bullet¨

• Trabalhe sua comunicação

Page 17: Seja Um Programador Pragmatico

PARTE II

UMA ABORDAGEM PRAGMÁTICA

Page 18: Seja Um Programador Pragmatico

O INFERNO DA DUPLICAÇÃO

• Siga o princípio "DRY" • Avalie como as duplicações aparecem e elimine-as

o em documentação o em código

• Faça as coisas fáceis para reuso

Page 19: Seja Um Programador Pragmatico

ORTOGONALIDADE E REVERSIBILIDADE

Ortogonal = Perpendicular (Geometria)Em software: Componentes independentes( desacoplados)• Sistemas não ortogonais• Benefícios da ortogonalidade

o Ganho de produtividadeo Redução de riscos

Dica: Elimine acoplamento entre coisas não relacionadas.Em OO: Baixo acoplamento e alta coesão.

Page 20: Seja Um Programador Pragmatico

ORTOGONALIDADE E REVERSIBILIDADE

• Ortogonalidade...o no seu timeo no seu designo em toolkits e bibliotecas de terceiroso no seu código fonte

• Sistemas Reversíveis

o "A única certeza que temos é a da mudança." o Não existe decisões finais

Page 21: Seja Um Programador Pragmatico

LINGUAGEM DO DOMÍNIO

• Conheça o domínio da sua aplicação o Estabeleça uma "Ubiquitous Language"o Programa próximo de quem conhece o domínioo Fácil desenvolvimento ou fácil manutenção?

// exemplo 1 - Fluent InterfaceSet programas = WebMediaAPI.programas().comTitulo("Fantastico"); // exemplo 2 - Fluent InterfaceLong multishow = new Long(123);Set videos = WebMediaAPI.videos().favoritos().doCanal(multishow); (Código extraído do blog do Guilherme Chapiewski)

Page 22: Seja Um Programador Pragmatico

ESTIMATIVAS

• Estimativas o Trabalhe com estimativas para evitar surpresas o Mas, seja honesto com estimativas o Tente diversas alternativas

APF, APCU, Planning Game, Story Point o Mantenha um log das suas estimativas

Duration Quote Estimate in 1-15 dias--------------------------------------Dias 3-8 semanas---------------------------------Semanas (Tente não passar disso) 8-30 semanas-------------------------------Meses

30+ semanas--------------------------------Pense muito antes de estimar

Page 23: Seja Um Programador Pragmatico

PARTE III

AS FERRAMENTAS BÁSICAS

Page 24: Seja Um Programador Pragmatico

FERRAMENTAS BÁSICAS I

• O poder dos arquivos de textoo Ajuda na manutenabilidade

• Não se esqueça do Shell e das linguagens de Scripto Tarefas Ad hoc

• Adote um Editor de Texto o Antes de escolher avalie:

Se é Configurável, Extensível, Programável Se possui Syntax highlighting Se possui Auto-completion Se possui Auto-indentation

Page 25: Seja Um Programador Pragmatico

FERRAMENTAS BÁSICAS II

• Source Code Control Systemo Sempre use controle de versão, sempre, sempre

sempre...até você sozinho em um projeto.• Debugging

o Estratégias para elucidar bugs–Não entre em pânico–Não procure culpados–Não tenha medo do stack trace. –Como minimizar?

Page 26: Seja Um Programador Pragmatico

FERRAMENTAS BÁSICAS III

• Geradores de códigoo Passivos e Ativos

• Bug Tracking systemo Mantém um log dos bugso Ajuda na qualidade

Page 27: Seja Um Programador Pragmatico

PARTE IV

FLEXIBILIDADE E ADAPTABILIDADE

Page 28: Seja Um Programador Pragmatico

CUIDADOS COM SEU CÓDIGO I

• Desacoplamento e a Lei de Demtrius• Metaprogramming• Separe o Modelo da Visão• O poder de um Quadro-Negro

Page 29: Seja Um Programador Pragmatico

CUIDADOS COM SEU CÓDIGO II

• Enquanto você está codificando...o Evite programar por coincidênciao Não vire escravo do tempo, refatoreo Crie códigos fáceis de testaro Cuidado com os famosos Wizards

• E antes de codificar...o Não levante os requisitos, escave-oso Não invente requisitoso Mantenha os requisitos públicos

Page 30: Seja Um Programador Pragmatico

OBRIGADO!