o que é ser um bom programador?
TRANSCRIPT
O que é SER UM PROGRAMADOR?
lucas boeing scarduelli / @lucasscarduelli
bom
Arquiteto de softwarelí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ência7 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 acomodardar sempre o seu melhor
manter o focorealmente se importar com o que faz
atitude
não se acomodardar sempre o seu melhor
realmente se importar com o que fazmanter o foco
SE DESENVOLVER E CRESCER
atitude
não se acomodardar sempre o seu melhor
realmente se importar com o que fazmanter 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
faculdadelivros
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 linhasmé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çãonú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 softwarewww.agilemanifest.com
manifesto para o artesanato de softwaremanifesto.softwarecraftsmanship.org
lucas boeing scarduelli / @lucasscarduelli
Perguntas?