Post on 01-Jul-2015
Profissão Programador: Práticas para
Melhoria Contínua
Semana de Tecnologia FATEC Rubens Lara (Santos) - Outubro 2013
Agatha LisboaGabriel Rubens
agatha.lisboa@gmail.com / @gabrielrubenss
Profissão Programador: Práticas para
Melhoria Contínua
De onde vem a palavra pragmático?
O foco da palestra é ajudar
programadores a se tornarem melhores
Não importa se você trabalha
sozinho, em equipe ou com muitos
clientes
Programar é uma arte, e como
programador você é um artesão
Transformar requisitos vagos em
um programa. Documentar seu
trabalho
Ferramentas Ferramentas milagrosasmilagrosas
MetodologiaMetodologias que s que
resolvem resolvem todos os todos os
problemasproblemas
Linguagens de Linguagens de Programação Programação pra todas as pra todas as
situaçõessituações
Sistemas Sistemas Operacionais Operacionais
que são que são melhores que melhores que
os outrosos outros
Não existe bala de Não existe bala de prata!prata!
Não há uma solução que resolva todos
os problemas.
Existem ferramentas/
linguagens/SOs apropriados para
cada situação
Dica :)
Reflita sobre seu trabalho.
Bibliografia
Uma Filosofia Pragmática
O que diferencia programadores
pragmáticos?
O gato comeu meu
código-fonte
Assuma responsabilidade
Dica :)
Forneça soluções e não desculpas
esfarrapadas.
Entropia de software
Deterioração do Deterioração do softwaresoftware
Teoria da janela Teoria da janela quebradaquebrada
Apagando incêndiosApagando incêndios
Dica :)
Não tolere janelas
quebradas
Sopas de pedras e sapos cozidos
Dica :)
Seja um catalizador de
mudanças
Sopas de pedras
Dica :)
Lembre-se do cenário em larga
escala
Software Satisfatório
Envolva os usuários na tomada de
decisões
Dica :)
Torne qualidade parte dos requisitos
Programação como uma pintura
Ciência + arte + trabalho manual
Saiba quando parar
MVCMVC
Carteira de conhecimentos
Semelhante ao gerenciamento de
uma carteira de investimentos
Construindo uma carteira
Dica :)
Invista regularmente em
sua carteira de conhecimentos
Dica :)
Analise criticamente o que você vê e
ouve
Comunicação
Conheça o que vai dizer
Conheça pra quem vai dizer
Escolha o momento certo
Seja ouvinte
Dica :)Dica :)
É o que você diz e É o que você diz e a maneira como diza maneira como diz
Uma Abordagem Pragmática
Males da duplicação
Conceito de manutenção
Dica :)
NSR - Não Se Repita
DRY - Don't Repeat Yourself
Tipos de duplicação
Duplicação imposta
Dica :)
Facilite a reutilização
Ortogonalidade
Conceito emprestado da
geometria
Sistema ortogonal
Dica :)
Elimine efeitos entre elementos não relacionados
ReversibilidadeReversibilidade
Dica :)
Não há decisões definitivas
Projéteis Projéteis LuminososLuminosos
Código Rastreador
Dica :)
Use projéteis luminosos para encontrar seu
alvo
Programe Igual ao Domínio do Usuário
Dica :)
Programe em um nível próximo ao
domínio do problema (usuário)
Estimando
Dica :)
Estime para evitar surpresas
Que nível de exatidão é
suficientemente exato?
Entenda o que está sendo pedido
Acompanhe sua habilidade de
estimar
Dica :)
Reexamine o cronograma
junto ao código
O que dizer quando lhe pedirem uma
estimativa?
Seja Flexível
Quadros-Negros
A melhor forma de se comunicar é
visualmente
Enquanto Você Está Codificando
Programação Baseada no Acaso
Programar é uma tarefa que envolve muita habilidade e
raciocínio
Refine sempre essa estimativa
Refatoração
Refatorar é melhorar um código
existente sem alterar o seu
funcionamento
Quando Refatorar?
-Código duplicado-Método longo-Classe grande
-Lista de parâmetros longa
-Má indentaçãoE muito mais!
Dica :)
Refatore cedo, refatore sempre
Código Que Seja Fácil de Testar
Testando as Unidades
Devemos ter o hábito de testar
unitariamente nosso software
(procure o xUnit da sua linguagem favorita)
Testando a Integração entre os
Componentes
Dica :)
Teste seu software ou seus usuários testarão
Programadores Profissionais
Escrevem Testes, Ponto Final
http://blog.fragmental.com.br/2007/10/31/programadores-profissionais-escrevem-testes-ponto-final/
Existem várias camadas de teste.
Aprenda para saber quais são
necessárias para seu problema
Dica :)
Projete para testar
Assistentes do Mal
Dica :)
Não use um código de
assistente que você não entender
Antes do Projeto
O Abismo dos Requisitos
RUP você pega toda a documentação no
início.
RUP você pega toda a documentação no início.
Agile você não documenta nada.
RUP você pega toda a documentação no início.Agile você não documenta nada.
Será mesmo!?
P.: RUP você pega toda a documentação no início?
R.: Isso é cascata!
P.: Agile você não documenta nada.
R.: Não há isso em lugar nenhum!
Dica :)
Trabalhe com usuário para
pensar como um usuário
Dica :)
Abstração tem vida mais longa do que detalhes
Projetos Pragmáticos
Uma visão geral de como ser
Pragmático
Uma visão geral de como ser uma
equipe Pragmático
Dica :)
Sem janelas quebradas
Dica :)
Comunique-se
Dica :)
Não se repita
Dica :)
Automação
Dica :)
Saiba quando parar de adicionar retoques
Dica :)
Teste!
O melhor amigo do Programador
Pratique!Pratique!
RUP, XP, Scrum,
Kanban e etc...
DOJOSDOJOS
Dica :)
Sapos cozidos
Programe!Programe!Programe!
Pra quem só tem martelo todo
problema é um prego!
Profissão Programador: Práticas para
Melhoria Contínua
Semana de Tecnologia FATEC Rubens Lara (Santos) - Outubro 2013
Agatha LisboaGabriel Rubens
agatha.lisboa@gmail.com / @gabrielrubenss