seja um programador pragmatico

Post on 01-Jul-2015

2.701 Views

Category:

Technology

13 Downloads

Preview:

Click to see full reader

TRANSCRIPT

SEJA UM PROGRAMADOR PRAGMÁTICO

LEONARDO FERNANDESHTTP://JROLLER.COM/LEOFERNANDESMO

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

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

PARTE I

A FILOSOFIA DO PRAGMATISMO

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

MAIS CARACTERÍSTICAS DE UMA PESSOA PRAGMÁTICA

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

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

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

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

O PP E A FILOSOFIA DO PRAGMATISMO 3

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

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

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

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

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

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

DICAS DE INVESTIMENTO

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

• Trabalhe sua comunicação

PARTE II

UMA ABORDAGEM PRAGMÁTICA

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

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.

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

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)

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

PARTE III

AS FERRAMENTAS BÁSICAS

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

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?

FERRAMENTAS BÁSICAS III

• Geradores de códigoo Passivos e Ativos

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

PARTE IV

FLEXIBILIDADE E ADAPTABILIDADE

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

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

OBRIGADO!

top related