profissão programador práticas para melhoria contínua fatec pg setembro 2013
DESCRIPTION
Palestra apresentada na Fatec de Praia Grande. O motivação da palestra é mostrar para iniciantes um caminho que deve ser seguido, e como manter a sua carteira de conhecimento atualizada.TRANSCRIPT
Profissão Programador: Práticas para
Melhoria Contínua
Semana de Tecnologia FATEC Praia Grande - Setembro 2013
Agatha LisboaGabriel Rubens
@agathalisboa / @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
Metodologias Metodologias que resolvem que 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 prata!Não existe bala de 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.
- O Programador Progmático: de Aprendiz a Mestre de David Thomas e Andrew Hunt
- Código Limpo: Habilidades Práticas do Agile Software de Robert C. Martin
- A Arte do Desenvolvimento Ágil de Jim Shore e Shane Warden
- Rework de Jason Fried- Agile: Desenvolvimento de software com entregas
frequentes e foco no valor de negócio de André Faria Gomes
- O Mítico Homem-Mês de Frederick P. Brooks Jr.
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
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
Saiba quando parar
Programação como uma pintura
Ciência + arte + trabalho manual
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 a É o que você diz e a maneira como dizmaneira 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 duplicadoMétodo longoClasse grande
Lista de parâmetros longaMá indentação
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 :)
Sapos cozidos
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
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 Praia Grande - Setembro 2013
Agatha LisboaGabriel Rubens
@agathalisboa / @gabrielrubenss