SlideShare ist ein Scribd-Unternehmen logo
1 von 133
Downloaden Sie, um offline zu lesen
Profissão Programador:
Práticas para
Melhoria Contínua
Semana de Tecnologia FATEC Praia Grande -
Setembro 2013
Agatha Lisboa
Gabriel 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
FerramentasFerramentas
milagrosasmilagrosas
MetodologiasMetodologias
que resolvemque resolvem
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 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 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
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é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
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 Lisboa
Gabriel Rubens
@agathalisboa / @gabrielrubenss

Weitere ähnliche Inhalte

Was ist angesagt?

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
 
Lógica de Programação e a magia de codar em qualquer linguagem
Lógica de Programação e a magia de codar em qualquer linguagemLógica de Programação e a magia de codar em qualquer linguagem
Lógica de Programação e a magia de codar em qualquer linguagemMorganna Giovanelli de Souza
 
Algoritmo apresentação
Algoritmo   apresentaçãoAlgoritmo   apresentação
Algoritmo apresentaçãopronatecvja
 
Aula 3 - Lógica de Programação
Aula 3 - Lógica de ProgramaçãoAula 3 - Lógica de Programação
Aula 3 - Lógica de ProgramaçãoInstituto CENTEC
 
Lógica de Programação - Algoritmos
Lógica de Programação - AlgoritmosLógica de Programação - Algoritmos
Lógica de Programação - AlgoritmosRoney Sousa
 
Como começar a programar!
Como começar a programar!Como começar a programar!
Como começar a programar!Augusto Bilabila
 
Introdução ao Test Driven Development (TDD)
Introdução ao Test Driven Development (TDD)Introdução ao Test Driven Development (TDD)
Introdução ao Test Driven Development (TDD)Lucas Nery
 
Desmistificando Design Patterns
Desmistificando Design PatternsDesmistificando Design Patterns
Desmistificando Design PatternsMaicon Heck
 
Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )Iure Guimaraes
 
Semanadeletras 2012-giraffa
Semanadeletras 2012-giraffaSemanadeletras 2012-giraffa
Semanadeletras 2012-giraffaLucia Giraffa
 
TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação Icaro Camelo
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"thiagobapt
 
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
 

Was ist angesagt? (20)

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
 
Lógica de Programação e a magia de codar em qualquer linguagem
Lógica de Programação e a magia de codar em qualquer linguagemLógica de Programação e a magia de codar em qualquer linguagem
Lógica de Programação e a magia de codar em qualquer linguagem
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Qualidade de Código
Qualidade de CódigoQualidade de Código
Qualidade de Código
 
Remote Design Sprint
Remote Design SprintRemote Design Sprint
Remote Design Sprint
 
Algoritmo apresentação
Algoritmo   apresentaçãoAlgoritmo   apresentação
Algoritmo apresentação
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Aula 3 - Lógica de Programação
Aula 3 - Lógica de ProgramaçãoAula 3 - Lógica de Programação
Aula 3 - Lógica de Programação
 
Lógica de Programação - Algoritmos
Lógica de Programação - AlgoritmosLógica de Programação - Algoritmos
Lógica de Programação - Algoritmos
 
Como começar a programar!
Como começar a programar!Como começar a programar!
Como começar a programar!
 
Introdução ao Test Driven Development (TDD)
Introdução ao Test Driven Development (TDD)Introdução ao Test Driven Development (TDD)
Introdução ao Test Driven Development (TDD)
 
Desmistificando Design Patterns
Desmistificando Design PatternsDesmistificando Design Patterns
Desmistificando Design Patterns
 
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
 
Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )
 
Semanadeletras 2012-giraffa
Semanadeletras 2012-giraffaSemanadeletras 2012-giraffa
Semanadeletras 2012-giraffa
 
TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
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
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
QA e BDD - A TI careta esta morta?
QA e BDD - A TI careta esta morta?QA e BDD - A TI careta esta morta?
QA e BDD - A TI careta esta morta?
 

Ähnlich wie Profissão programador práticas para melhoria contínua fatec pg setembro 2013

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
 
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
 
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
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador PragmaticoLeonardo Fernandes
 
Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de ...
Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de ...Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de ...
Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de ...Rafael Caceres
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
Fisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoFisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoGustavo Neves
 
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
 
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
 
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
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
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
 
IPA Conhecendo XP
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XPWildtech
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013André Borgonovo
 
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
 

Ähnlich wie Profissão programador práticas para melhoria contínua fatec pg setembro 2013 (20)

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?
 
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
 
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
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador Pragmatico
 
Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de ...
Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de ...Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de ...
Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de ...
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
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
 
Gt 2 – ferramentas
Gt 2 – ferramentasGt 2 – ferramentas
Gt 2 – ferramentas
 
Fisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoFisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmo
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
 
A saga do desenvolvedor java
A saga do desenvolvedor javaA saga do desenvolvedor java
A saga do desenvolvedor java
 
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
 
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...
 
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)
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
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
 
IPA Conhecendo XP
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XP
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013
 
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...
 

Profissão programador práticas para melhoria contínua fatec pg setembro 2013