O que é SER UM
PROGRAMADOR?
lucas boeing scarduelli / @lucasscarduelli
bom
Arquiteto de software
líder setor de pesquisa e desenvolvimento (P&D)
Técnico em Informática industrial (#sqn)
bacharel em sistemas de informação
pós graduado em gerenciamento de projetos
9 anos de experiência
7 anos desenvolvendo software web
lucas boeing scarduelli
scarduelli.com
@lucasscarduelli
motivação
nós não precisamos de mais
programadores, nós precisamos
de bons programadores.
(edson yanaga)
motivação
contrate o carácter.
treine as habilidades.
(peter schutz)
O que é um programador?
“profissional especializado no desenvolvimento e no
aperfeiçoamento de programas de computador.”
mas pode ser também…
“quem te resolve um problema que você não sabia
que tinha de uma maneira que você não compreende “
… ou também …
… ou ainda!!! #melhordetodas
“e aquele cara que muitas vezes tem que encontrar a
melhor e mais simples solução, para um problema de
uma área que ele não conhece e de que ele não faz a
mínima ideia do porque acontece”
somos pagos para resolver problemas…
… muitos problemas, mais muitos mesmo, todos os
dias e quase sempre pra ontem!! #napressao
na real … ser programador não e fácil!
mais e massa pra caramba!!!
porque você quer ser um programador?
… porque eu gosto de internet e redes sociais!
… porque eu gosto de jogar!
… prefiro trabalhar sentado e no ar condicionado!
… quero fazer somente aquilo que eu gosto!
… quero trabalhar igual o pessoal do google!
… quero ser o orgulho da família!
… é a profissão do futuro!
… porque quero ter
uma ideia genial e
ficar rico rápido!
então quando te perguntarem, o que você vai
responder?
se for algo diferente disso… :(
então quando te perguntarem, o que você vai
responder?
o que é ser um bom programador?
Uma escola ou faculdade vão me formar um bom
programador?
Eu preciso conhecer e dominar as melhores
linguagens de programação?
Eu preciso conhecer o melhor banco de dados?
Eu preciso usar e conhecer a melhor ide ou
ferramenta de desenvolvimento?
Eu preciso conhecer e aplicar as melhores
metodologias e práticas de desenvolvimento?
Eu preciso ter uma super estação de trabalho?
programação é coisa para
nerd?
quanto mais linhas
de código, melhor
programador eu
sou?
Eu preciso digitar muito ou ser o mais rápido?
tudo isso te ajuda, mas não é o principal!!!
se nada disso é o principal, então o que eu realmente
preciso?
atitude
atitude
não se acomodar
dar sempre o seu melhor
manter o foco
realmente se importar com o que faz
atitude
não se acomodar
dar sempre o seu melhor
realmente se importar com o que faz
manter o foco
SE DESENVOLVER E CRESCER
atitude
não se acomodar
dar sempre o seu melhor
realmente se importar com o que faz
manter o foco
SE DESENVOLVER E CRESCER gerar resultados
ser um bom programador é muito mais do que fazer
um software funcionar
é ter domínio da área que atua…
é comprometimento com aquilo que faz…
é gerar bons resultados…
é buscar sempre a melhor solução…
com a melhor qualidade…
com a melhor experiência…
e com o melhor custo benefício!
então, que dizer que eu vou levar a vida toda para
ser um bom programador?
não, você é bom quando faz o seu melhor.
tudo tem um começo!
primeiro de tudo aprenda a pensar
lógica de programação
o difícil é resolver o problema
pergunte sobre tudo
código é a menor parte
o resto entra no loop infinito que é a vida do
programador
Estudo
curso técnico
faculdade
livros
tutoriaisprojetos open source
prática
estágio trabalho
aula
freelancer
open source
hobby
aprendizadoabsorva o conhecimento
lide melhor com as pessoas
lide com os erros
lide com o fracasso
repita práticas de sucesso
aperfeiçoamento
novas técnicas
novas linguagens
novos domínios
novas tecnologias
aplique o aprendizado
aprenda inglês
o loop infinito!
while programador.estaVivo() {
programador.estudar();
programador.praticar();
programador.cometerErros();
programador.aprender();
programador.corrigirErros();
programador.evoluir();
}
robert c. martin
@unclebobmartin
o que é um código limpo?
simples
direto
eficiente
sem duplicidade
elegante
feito com cuidadofácil manutenção
padronizado
poucas dependências
o que é um código limpo?
teoria da janela quebrada
como se mede o quão limpo um código e?
nomes significativos
nos escolhemos nomes para tudo E TEMOS QUE FAZER ISSO BEM
FEITO, por isso eles devem nos dizer...
- por que existe
- o que faz
- como e usado
devem revelar sua intenção…
devem revelar sua intenção…
devem revelar sua intenção…
devem revelar sua intenção…
devem ser pronunciáveis…
não seja genérico…
não economize nas palavras!
evite a desinformação!
evite palavras que
não são palavras
se preciso use varias
palavras
evite palavras
reservadas
o tipo não precisa
estar no nome
evite trocadilhosevite palavras que
não são palavras
use boas praticas
classes e métodos
nomes de classes devem ser
substantivos e não conter verbos
Veículo, Pessoa,
Cliente, Fornecedor,
Estoque, ...
nomes de métodos devem
conter verbos
calculaCusto(),
lancaEstoque(),
geraNotaFiscal(),
...
devem ser pequenos
“a primeira regra dos
métodos e que eles devem ser
pequenos. a segunda e que
devem ser menores ainda.”
(uncle bob)
classes menores são mais
fáceis de ler e entender o que
estão fazendo.
classe = 200 a 500 linhas
métodos <= 20 linhas
linhas <= 100 caracteres
métodos devem fazer uma coisa só e fazer certo!
o difícil e definir o que é uma
coisa só.
tente extrair parte do código
e dar um nome a ele.
métodos devem fazer algo ou responder algo!
os dois juntos causa
confusão.
simplifique as estruturas de decisão, evite O hard
codE E APROXIME-SE DA MARGEM
simplifique as estruturas de decisão, evite O hard
codE E APROXIME-SE DA MARGEM
dry - don’t repeat yourself
evite duplicidade de código!
reutilize seus métodos.
srp - principio da responsabilidade única
uma classe deve ter uma, e
somente uma razão para
mudar
classes devem ser coesas
poucas variáveis
cada método deve manipular
uma ou mais variáveis quanto mais variáveis um
método consegue manipular,
mais coeso ele é
coesão e a co-dependencia
entre métodos e variáveis
comentários
podem ser mentirosos,
mesmo sem intenção
comentários não escondem
código ruim
comentário é sinal de
necessidade de refatoração
nunca deixe um código
comentado
explique-se com código
closing brace comments
comentários podem ser uteis
mostra a intenção por trás
de uma decisão tomada
avisa aos desenvolvedores
sobre a consequência de um
trecho de código
formatação
formatação é importante
para a comunicação
legibilidade é importante para
mudanças futuras
métodos com conceitos
parecidos devem ficar
verticalmente próximos
ordem dos métodos
influencia na legibilidade do
código
indentação
importante para visualização
de todo o escopo
não deve ter nível maior que
2, para uma compreensão
fácil e rápida
espaçamento e importante
código hadoooouuuken!!
code smells - fique atento a eles
comentários pobres,
obsoletos ou redundantes
métodos mortos ou que
fazem muita coisa
código comentado
responsabilidades demais ou
fora do contexto
nomes pequenos e
inexpressivos
muitos parâmetros ou
parâmetros booleanos
despadronização
números mágicos
duplicidade de código
mantenha sempre sua cozinha limpa!
regra do escoteiro
deixe a areá do acampamento mais limpa do que
como você encontrou.
manifesto para desenvolvimento ágil de software
www.agilemanifest.com
manifesto para o artesanato de software
manifesto.softwarecraftsmanship.org
lucas boeing scarduelli / @lucasscarduelli
Perguntas?

O que é ser um bom programador?