SlideShare uma empresa Scribd logo
1 de 137
Baixar para ler offline
Profissão Programador:
Práticas para
Melhoria Contínua
Semana de Tecnologia FATEC Rubens Lara
(Santos) - 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
FerramentasFerramentas
milagrosasmilagrosas
MetodologiaMetodologia
s ques que
resolvemresolvem
todos ostodos os
problemasproblemas
Linguagens deLinguagens de
ProgramaçãoProgramação
pra todas aspra todas as
situaçõessituações
SistemasSistemas
OperacionaisOperacionais
que sãoque são
melhores quemelhores que
os outrosos outros
Não existe bala deNã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 doDeterioração do
softwaresoftware
Teoria da janelaTeoria 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éteisProjé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çã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
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 Lisboa
Gabriel Rubens
agatha.lisboa@gmail.com / @gabrielrubenss

Mais conteúdo relacionado

Mais procurados

Aula 1 módulo i - psi
Aula 1   módulo i - psiAula 1   módulo i - psi
Aula 1 módulo i - psi111111119
 
Critérios de avaliação de linguagens
Critérios de avaliação de linguagensCritérios de avaliação de linguagens
Critérios de avaliação de linguagensPaulo Muniz
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoAdriano Teixeira de Souza
 
Como fazer a gestão do Time de Desenvolvimento
Como fazer a gestão do Time de DesenvolvimentoComo fazer a gestão do Time de Desenvolvimento
Como fazer a gestão do Time de DesenvolvimentoAragon Vieira
 
TDC2016SP - Depurando Aplicações PHP Like a BOSS
TDC2016SP - Depurando Aplicações PHP Like a BOSSTDC2016SP - Depurando Aplicações PHP Like a BOSS
TDC2016SP - Depurando Aplicações PHP Like a BOSStdc-globalcode
 
Plp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoPlp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoJosé Meirelles
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Raphael Paiva
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de ProgramaçãoNatanael Simões
 
Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoElaine Cecília Gatto
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Ismar Silveira
 
Semanadeletras 2012-giraffa
Semanadeletras 2012-giraffaSemanadeletras 2012-giraffa
Semanadeletras 2012-giraffaLucia Giraffa
 
Como começar a programar!
Como começar a programar!Como começar a programar!
Como começar a programar!Augusto Bilabila
 

Mais procurados (20)

Aula 1 módulo i - psi
Aula 1   módulo i - psiAula 1   módulo i - psi
Aula 1 módulo i - psi
 
Critérios de avaliação de linguagens
Critérios de avaliação de linguagensCritérios de avaliação de linguagens
Critérios de avaliação de linguagens
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - Introdução
 
Como fazer a gestão do Time de Desenvolvimento
Como fazer a gestão do Time de DesenvolvimentoComo fazer a gestão do Time de Desenvolvimento
Como fazer a gestão do Time de Desenvolvimento
 
TDC 2015 - Torne-se um programador melhor
TDC 2015 - Torne-se um  programador melhorTDC 2015 - Torne-se um  programador melhor
TDC 2015 - Torne-se um programador melhor
 
Qualidade de Código
Qualidade de CódigoQualidade de Código
Qualidade de Código
 
TDC2016SP - Depurando Aplicações PHP Like a BOSS
TDC2016SP - Depurando Aplicações PHP Like a BOSSTDC2016SP - Depurando Aplicações PHP Like a BOSS
TDC2016SP - Depurando Aplicações PHP Like a BOSS
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
1.1.paradigmas
1.1.paradigmas1.1.paradigmas
1.1.paradigmas
 
Algoritmia Tutorial
Algoritmia TutorialAlgoritmia Tutorial
Algoritmia Tutorial
 
Plp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoPlp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliação
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de Programação
 
Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de Programação
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1
 
Semanadeletras 2012-giraffa
Semanadeletras 2012-giraffaSemanadeletras 2012-giraffa
Semanadeletras 2012-giraffa
 
Como começar a programar!
Como começar a programar!Como começar a programar!
Como começar a programar!
 

Semelhante a Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013

Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003Edgar Silva
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador PragmaticoLeonardo Fernandes
 
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Marcio Miyamoto
 
Métodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de SoftwareMétodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de Softwarealexandre_malaquias
 
A Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao SêniorA Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao SêniorMarcos Pereira
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
5 meses de python o que aprendi
5 meses de python  o que aprendi5 meses de python  o que aprendi
5 meses de python o que aprendiVinta Software
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agileAlini Rebonatto
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)André Dias
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceCarolina Karklis
 
Gerenciamento de equipes no desenvolvimento de software
Gerenciamento de equipes no desenvolvimento de softwareGerenciamento de equipes no desenvolvimento de software
Gerenciamento de equipes no desenvolvimento de softwareRoberto Brandini
 

Semelhante a Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013 (20)

Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
 
O que é ser um bom programador?
O que é ser um bom programador?O que é ser um bom programador?
O que é ser um bom programador?
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador Pragmatico
 
eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
 
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
 
Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008
 
Métodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de SoftwareMétodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de Software
 
A Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao SêniorA Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao Sênior
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
5 meses de python o que aprendi
5 meses de python  o que aprendi5 meses de python  o que aprendi
5 meses de python o que aprendi
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
 
Gt 2 – ferramentas
Gt 2 – ferramentasGt 2 – ferramentas
Gt 2 – ferramentas
 
Aula 4- Engenharia de Software
Aula 4- Engenharia de SoftwareAula 4- Engenharia de Software
Aula 4- Engenharia de Software
 
Gerenciamento de equipes no desenvolvimento de software
Gerenciamento de equipes no desenvolvimento de softwareGerenciamento de equipes no desenvolvimento de software
Gerenciamento de equipes no desenvolvimento de software
 

Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013