Profissão Programador:

Práticas para
Melhoria Contínua
Unimonte - Outubro 2013

Agatha Lisboa
Gabriel 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
milagrosas
Metodologias
que resolvem
todos os
problemas
Linguagens de
Programação
pra todas as
situações
Sistemas
Operacionais
que são
melhores que
os outros
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.
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
e
Deterioração do
software
Teoria da janela
quebrada
Apagando incêndios
Dica :)

Não tolere janelas
quebradas
Software
Satisfatório
Envolva os usuários
na tomada de
decisões
Dica :)

Torne qualidade
parte dos
requisitos
Software
funcionando é a
medida primária
de progresso
Programação como
uma pintura
Ciência + arte +
trabalho manual
Saiba quando parar
MVC
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 :)

Não é o que você diz
e a 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
Reversibilidade
Dica :)

Não há decisões
definitivas
Projéteis
Luminosos
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?
Refine sempre essa
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
Quando você não
presta Atenção no
que está fazendo!
(mesmo que você seja muito bom)
Refatoração
Refatorar é melhorar
um código existente
sem alterar o seu
funcionamento
Refatoração
Quando Refatorar?
-Código duplicado
-Método longo
-Classe grande
-Lista de parâmetros longa
-Má indentação
E 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
Testando a Carga
que seu Sistema
Suporta
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
1970...
[...]ironicamente, Royce
defendia um abordagem
iterativa para o
desenvolvimento de
software e nem mesmo
usou o termo cascata[...]
[...]Royce originalmente
descreve o que é hoje
conhecido como o
modelo em cascata como
um exemplo de um
método que ele
argumentava ser um risco
e um convite para
falhas[...]
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
Dica :)

Seja um
catalizador de
mudanças
Sopas de pedras
Dica :)

Lembre-se do
cenário em larga
escala
Sapos cozidos
RUP, XP,
Scrum,
Kanban e
etc...
Pratique!
DOJOS
Programe!
Programe!
Programe!
Pra quem só tem
martelo todo
problema é um
prego!
Profissão Programador:

Práticas para
Melhoria Contínua
Unimonte - Outubro 2013

Agatha Lisboa
Gabriel Rubens
agatha.lisboa@gmail.com / @gabrielrubenss

Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013