O que é ser um bom programador?

  • View
    1.253

  • Download
    1

  • Category

    Software

Preview:

Citation preview

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?