You are on page 1of 85

b om

O que é SER UM
PROGRAMADOR?

lucas boeing scarduelli / @lucasscarduelli


lucas boeing scarduelli

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

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!
… quero fazer somente aquilo que eu gosto!

… prefiro trabalhar sentado e no ar condicionado!


… 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?
então quando te perguntarem, o que você vai
responder?

se for algo diferente disso… :(


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
não se acomodar
dar sempre o seu melhor

atitude
realmente se importar com o que faz
manter o foco
não se acomodar
dar sempre o seu melhor

SE DESENVOLVER E CRESCER
atitude
realmente se importar com o que faz
manter o foco
não se acomodar
dar sempre o seu melhor

SE DESENVOLVER E CRESCER
atitude gerar resultados

realmente se importar com o que faz


manter o foco
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!
lógica de programação

o difícil é resolver o problema

primeiro de tudo aprenda a pensar

código é a menor parte

pergunte sobre tudo


o resto entra no loop infinito que é a vida do
programador
curso técnico

livros
faculdade
Estudo

projetos open source tutoriais


estágio trabalho

freelancer

prática
aula

open source

hobby
repita práticas de sucesso

lide com o fracasso

absorva o conhecimento aprendizado

lide com os erros

lide melhor com as pessoas


aprenda inglês
novas linguagens

novos domínios

aperfeiçoamento aplique o aprendizado

novas técnicas novas tecnologias


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?
eficiente
simples
elegante
direto

padronizado
sem duplicidade
poucas dependências

fácil manutenção feito com cuidado


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 palavras se preciso use varias
reservadas palavras
o tipo não precisa
estar no nome
use boas praticas
evite palavras que
não são palavras evite palavras que evite trocadilhos
não são palavras

evite a desinformação!
classes e métodos

nomes de classes devem ser


nomes de métodos devem
substantivos e não conter verbos
conter verbos

Veículo, Pessoa,
calculaCusto(),
Cliente, Fornecedor,
lancaEstoque(),
Estoque, ...
geraNotaFiscal(),
...
devem ser pequenos

“a primeira regra dos


métodos e que eles devem ser classes menores são mais
pequenos. a segunda e que fáceis de ler e entender o que
devem ser menores ainda.” estão fazendo.
(uncle bob)

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 tente extrair parte do código


coisa só. 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,


nunca deixe um código
mesmo sem intenção
comentado

comentário é sinal de
comentários não escondem
necessidade de refatoração
código ruim
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

métodos com conceitos


formatação é importante parecidos devem ficar
para a comunicação verticalmente próximos

legibilidade é importante para ordem dos métodos


mudanças futuras influencia na legibilidade do
código
indentação

importante para visualização


de todo o escopo
espaçamento e importante

não deve ter nível maior que


2, para uma compreensão
fácil e rápida
código hadoooouuuken!!
code smells - fique atento a eles

comentários pobres, duplicidade de código


obsoletos ou redundantes
muitos parâmetros ou
nomes pequenos e código comentado parâmetros booleanos
inexpressivos
despadronização
números mágicos
métodos mortos ou que responsabilidades demais ou
fazem muita coisa fora do contexto
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
Perguntas?

lucas boeing scarduelli / @lucasscarduelli

You might also like