seja um programador pragmatico
Post on 01-Jul-2015
2.701 Views
Preview:
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