PERGUNTAS?
VOCÊ
GOSTA DE
PROGRAMAR?
O USUÁRIO!
O ENGENHEIRO
DE TESTES!
<h1>
COMO SER UM
DESENVOLVEDOR
MELHOR
</h1>
LEANDRO
FERREIRA
Desenvolvedor de software
do século passado
● Programador desde antes da WEB
● Basic, Assembly, C, Pascal, Java,
ASP, PHP, Javascript, mIRCscript,
…
● Zend ZCPE PHP 5.5
● Atualmente desenvolvo em HTML +
CSS + Laravel + VueJs / AngularJs
● Curso Administração de Empresas
na FCAP/UPE
● Nerd nas horas vagas
● Atendimento ao público,
conhecimento básico de culinária,
como servir refeições à mesa
MEU
PRIMEIRO
COMPUTADOR
<ol>
<li>
Aprenda lógica, não linguagem
</li>
1. Aprenda lógica, não linguagem
● Programar é inventar a solução de um problema
● Decorar sintaxe é importante: produtividade
● Sintaxe? Em PHP?? :
○ strlen
○ str_pad
○ parse_str
○ ‘php’ == true; ‘php’ == 0; /* logo, */ true == 0;
○ list($v1, $v2, $v3) = [‘A’, ‘B’, ‘C’];
<li>
Planeje antes de começar
</li>
2. Planeje antes de começar
● Nunca, NUNCA, JAMAIS, “sente e programe”
● Adote uma mínima organização:
○ Desenvolva o mockup, E/OU
○ Aplique scrum, E/OU
○ Diagrame os casos de uso, E/OU
○ Comece pelo MER
○ Plus: XGH (eXtreme Go Horse)
● Pensou, não é XGH.
● Existem 3 formas de se resolver um problema, a correta, a errada e a XGH, que
é igual à errada, só que mais rápida.
● Quanto mais XGH você faz, mais precisará fazer.
● XGH é totalmente reativo.
● Commit sempre antes de update.
● Esteja preparado para pular fora quando o barco começar a afundar... ou
arrume alguém ou algo para colocar a culpa.
● Seja autêntico, XGH não respeita padrões.
2.1. eXtreme Go Horse (1/2)
● Não existe refactoring, apenas rework.
● Se iluda sempre com promessas de melhorias.
● XGH nem sempre é POG.
● O XGH não é perigoso até surgir um pouco de ordem.
● O XGH é seu brother, mas é vingativo.
● Se tiver funcionando, não rela a mão.
● Teste é para os fracos.
● O problema só é seu quando seu nome está no Doc da classe.
2.1. eXtreme Go Horse (2/2)
<li>
Experimente novas tecnologias e
tendências
</li>
3. Experimente novas tecnologias e tendências (1/3)
● Não reinvente! Experimente, leia sobre vários e
escolha um (ou mais de um) framework:
○ PHP: Laravel, Zend, Cake, CI, Symfony, Slim, Silex,
Lumen, Phalcon
○ CSS: Bootstrap, Bulma, Tailwind, Foundation,
Materialize
○ JS: Vue, Angular, React, jQuery, Handlebars, Lodash,
Ember, etc etc etc etc etc etc etc etc etc etc etc etc etc et
3. Experimente novas tecnologias e tendências (2/3)
● Leia reviews e comparativos
● Leia (ou assista a) tutoriais iniciais
● Dê preferência a boas documentação e grandes
comunidades
● Selecione poucos e leia a documentação
○ Primeiro, leia TUDO (ou quase)
○ Depois, será material de consulta
● Importante: saiba diferenciar se é linguagem ou FW
3. Experimente novas tecnologias e tendências (3/3)
● “Curie” os outros: grandes sites ditam tendências
● Acompanhe novas ferramentas
○ Old school: HTML + CSS + JS + PHP + MySQL
○ Hoje: TUDO ISSO + (Template engine + Sass +
Less + Uglify + NPM + Composer + Typescript +
Transpiler + Webpack + Webfont) +
COMPILAÇÃO!
○ Bonus: JAMstack
<li>
Estude sempre e pra sempre
</li>
● A comunidade é sensacional! S2
● Free learning (ou até mesmo Udemy!)
● Exemplos: Rodrigo Branas, Laracasts, Loiane,
FreeCodeCamp, Vedovelli, Gustavo
Guanabara, Laracon, Packt, ...
● Aprenda inglês! Urgente! Agora!
● Cuidado! Não se empolgue: vá trabalhar!
4. Estude sempre e pra sempre
<li>
Coloque-se no lugar do usuário
</li>
● Empatia!
● Faça as coisas de forma simples, com poucos cliques
e de forma homogênea
● Porque seu usuário “tem” 7 anos de idade
● Crianças de 7 anos não entendem seu dialeto: use
texto cotidiano, sem jargões
● Interface: estude as tendências
● API: programadores erram mais que humanos
5. Coloque-se no lugar do usuário
<li>
Invista tempo em suas
ferramentas
</li>
● Compare e escolha um editor/IDE, sem preconceitos
● Estude exaustivamente seu editor/IDE
● Assista a vídeos sobre o editor/IDE
● Procure por extensões: SEMPRE há uma para fazer
o que você precisa (e o que não sabe que precisa)
● Aprofunde-se em npm, composer, webpack, artisan,
vue-init, tinker, psySH e outras CLI
● Não tenha medo do terminal
6. Invista tempo em suas ferramentas
<li>
Use a solução certa para cada
problema
</li>
● Avalie a real necessidade de construir um site ou usar
um framework para tarefas muito simples
● Pesquise sobre as possíveis opções:
○ Web app complexa: Laravel + Vue + MySQL/Maria
○ Site pequeno e específico: Silex + Twig + SQLite
○ Site estático: Jekyll, Sculpin
○ Documentação online: Gitbook
○ Blog, site dinâmico: WordPress, Drupal, Ghost
○ API: Lumen, Slim
7. Use a solução certa para cada problema (1/2)
● Procure SAAS para cada atividade (sempre tem!)
● Quando não gratuitos, a custo muito baixo
● Exemplos: Mailtrap, Mailchimp, Mailgun,
Bitbucket, Hostinger, Zoho, Dropbox, AWS,
Google Cloud
● Vale citar: PagSeguro, BoletoBancario,
MercadoPago
7. Use a solução certa para cada problema (2/2)
<li>
Aprenda infraestrutura com
urgência
</li>
● Lugar de PHP é no Linux (iOS allowed)
○ Ubuntu desktop: rápido, compatível com tudo,
fácil de aprender e tem interface gráfica
○ Multiplique: VirtualBox, Docker e LXD
● Onde rodar: WAMP, XAMPP, Apache e/ou Nginx
● Onde guardar: MySQL, MariaDB, SqLite
● Como se proteger UFW, ipTables
8. Aprenda infraestrutura com urgência (1/5)
● É importante conhecer todo o processo:
○ registro.br ou name.com + cloudflare
○ DNS: NS, A, MX, CNAME, TXT
○ SSH: você em todo lugar
○ SSL: HTTPS grátis: Let’s Encrypt
○ LAMP stack
○ VPS: uma máquina pra chamar de sua
8. Aprenda infraestrutura com urgência (2/5)
8. Aprenda infraestrutura com urgência (3/5)
● Onde ter um VPS:
○ DigitalOcean 1GB, 1vCPU, 25GB SSD $5
○ Vultr 1GB, 1vCPU, 25GB SSD $5
○ Linode 1GB, 1vCPU, 20GB SSD $5
○ Scaleway 2GB, 2vCPU, 50GB SSD €3
○ Lightsail 0.5GB, 1vCPU, 20GB SSD $5
8. Aprenda infraestrutura com urgência (4/5)
● Amazon Web Services (1/2):
○ Máquina particular: EC2 + EBS
○ Rede particular: VPC
○ Arquivos “soltos” visíveis na web: S3
○ DNS: Route 53
○ Envio de e-mail: SES
○ Backup a preço de banana: Glacier
8. Aprenda infraestrutura com urgência (5/5)
● Amazon Web Services (2/2):
○ Git grátis: CodeCommit
○ BD zero bronca: RDS
○ Chatbot: Lex
○ Reconhecer faces e textos: Rekognition
○ Envio de SMS: SNS
<li>
Conheça design patterns
</li>
9. Conheça design patterns
● MVC: o feijão com arroz dos design patterns
● SOLID: Seus objetos limpinhos e cheirosos
● CRUD: se seus controllers deixarem, qualquer
aplicação será CRUD
● Gang of Four: 23 padrões em 3 categorias
○ Criacional, Estrutural, Comportamental
○ Laravel usa vários destes padrões
<li>
Cultura geral conta muito: leia!
</li>
10. Cultura geral conta muito: leia!
● Vocabulário para se comunicar com o usuário
● Comportamento do usuário
○ Banner blindness
○ Impaciência e leitura em F
● Aspectos visuais: um pouco de design
○ Cores, paletas, proporções, espaçamento e outras
“frescuras”
○ Usabilidade: uma ciência ubíqua e mutante
● Conhecimento geral pra fazer bonito: Assista a TEDs
<li>
Coding for fun and profit
</li>
11. Code for fun and profit
● Pergunta inicial: você gosta de programar?
● Você é um programador! Tem noção disso?
● Ganhar dinheiro não é pecado, mas:
● Projetos particulares “just for fun”
● Vá para o Codingame, HackerEarth,
HackerRank e outros sites legais!
● ENSINE O QUE SABE!
<li>
EMPREENDA!
</li>
12. EMPREENDA!
● Trabalhar para “os outros” é torná-los ricos
● Iniciar um negócio a custo perto de zero?
● Todo mundo é capaz de tocar uma ideia pra
frente (principalmente um programador)
● Não tenha medo do incerto: o próprio
emprego é incerto! Comece com “freelas”
● Não procure emprego: ofereça emprego! //
</ol>
<a href=”mailto:leandrowferreira@gmail.com”>
leandrowferreira@gmail.com
</a>
1. Aprenda lógica, não linguagem
2. Planeje antes de começar
3. Experimente novas tecnologias e tendências
4. Estude sempre e pra sempre
5. Coloque-se no lugar do usuário
6. Invista tempo em suas ferramentas
7. Use a solução certa para cada problema
8. Aprenda infraestrutura com urgência
9. Conheça design patterns
10. Cultura geral conta muito: leia!
11. Coding for fun and profit
12. EMPREENDA!
Como ser um desenvolvedor melhor

P01 - Como ser um desenvolvedor melhor

  • 1.
  • 2.
  • 5.
  • 6.
  • 7.
  • 8.
    LEANDRO FERREIRA Desenvolvedor de software doséculo passado ● Programador desde antes da WEB ● Basic, Assembly, C, Pascal, Java, ASP, PHP, Javascript, mIRCscript, … ● Zend ZCPE PHP 5.5 ● Atualmente desenvolvo em HTML + CSS + Laravel + VueJs / AngularJs ● Curso Administração de Empresas na FCAP/UPE ● Nerd nas horas vagas ● Atendimento ao público, conhecimento básico de culinária, como servir refeições à mesa
  • 9.
  • 10.
  • 11.
  • 12.
    1. Aprenda lógica,não linguagem ● Programar é inventar a solução de um problema ● Decorar sintaxe é importante: produtividade ● Sintaxe? Em PHP?? : ○ strlen ○ str_pad ○ parse_str ○ ‘php’ == true; ‘php’ == 0; /* logo, */ true == 0; ○ list($v1, $v2, $v3) = [‘A’, ‘B’, ‘C’];
  • 13.
    <li> Planeje antes decomeçar </li>
  • 14.
    2. Planeje antesde começar ● Nunca, NUNCA, JAMAIS, “sente e programe” ● Adote uma mínima organização: ○ Desenvolva o mockup, E/OU ○ Aplique scrum, E/OU ○ Diagrame os casos de uso, E/OU ○ Comece pelo MER ○ Plus: XGH (eXtreme Go Horse)
  • 15.
    ● Pensou, nãoé XGH. ● Existem 3 formas de se resolver um problema, a correta, a errada e a XGH, que é igual à errada, só que mais rápida. ● Quanto mais XGH você faz, mais precisará fazer. ● XGH é totalmente reativo. ● Commit sempre antes de update. ● Esteja preparado para pular fora quando o barco começar a afundar... ou arrume alguém ou algo para colocar a culpa. ● Seja autêntico, XGH não respeita padrões. 2.1. eXtreme Go Horse (1/2)
  • 16.
    ● Não existerefactoring, apenas rework. ● Se iluda sempre com promessas de melhorias. ● XGH nem sempre é POG. ● O XGH não é perigoso até surgir um pouco de ordem. ● O XGH é seu brother, mas é vingativo. ● Se tiver funcionando, não rela a mão. ● Teste é para os fracos. ● O problema só é seu quando seu nome está no Doc da classe. 2.1. eXtreme Go Horse (2/2)
  • 17.
  • 18.
    3. Experimente novastecnologias e tendências (1/3) ● Não reinvente! Experimente, leia sobre vários e escolha um (ou mais de um) framework: ○ PHP: Laravel, Zend, Cake, CI, Symfony, Slim, Silex, Lumen, Phalcon ○ CSS: Bootstrap, Bulma, Tailwind, Foundation, Materialize ○ JS: Vue, Angular, React, jQuery, Handlebars, Lodash, Ember, etc etc etc etc etc etc etc etc etc etc etc etc etc et
  • 19.
    3. Experimente novastecnologias e tendências (2/3) ● Leia reviews e comparativos ● Leia (ou assista a) tutoriais iniciais ● Dê preferência a boas documentação e grandes comunidades ● Selecione poucos e leia a documentação ○ Primeiro, leia TUDO (ou quase) ○ Depois, será material de consulta ● Importante: saiba diferenciar se é linguagem ou FW
  • 20.
    3. Experimente novastecnologias e tendências (3/3) ● “Curie” os outros: grandes sites ditam tendências ● Acompanhe novas ferramentas ○ Old school: HTML + CSS + JS + PHP + MySQL ○ Hoje: TUDO ISSO + (Template engine + Sass + Less + Uglify + NPM + Composer + Typescript + Transpiler + Webpack + Webfont) + COMPILAÇÃO! ○ Bonus: JAMstack
  • 21.
    <li> Estude sempre epra sempre </li>
  • 22.
    ● A comunidadeé sensacional! S2 ● Free learning (ou até mesmo Udemy!) ● Exemplos: Rodrigo Branas, Laracasts, Loiane, FreeCodeCamp, Vedovelli, Gustavo Guanabara, Laracon, Packt, ... ● Aprenda inglês! Urgente! Agora! ● Cuidado! Não se empolgue: vá trabalhar! 4. Estude sempre e pra sempre
  • 23.
    <li> Coloque-se no lugardo usuário </li>
  • 24.
    ● Empatia! ● Façaas coisas de forma simples, com poucos cliques e de forma homogênea ● Porque seu usuário “tem” 7 anos de idade ● Crianças de 7 anos não entendem seu dialeto: use texto cotidiano, sem jargões ● Interface: estude as tendências ● API: programadores erram mais que humanos 5. Coloque-se no lugar do usuário
  • 25.
    <li> Invista tempo emsuas ferramentas </li>
  • 26.
    ● Compare eescolha um editor/IDE, sem preconceitos ● Estude exaustivamente seu editor/IDE ● Assista a vídeos sobre o editor/IDE ● Procure por extensões: SEMPRE há uma para fazer o que você precisa (e o que não sabe que precisa) ● Aprofunde-se em npm, composer, webpack, artisan, vue-init, tinker, psySH e outras CLI ● Não tenha medo do terminal 6. Invista tempo em suas ferramentas
  • 27.
    <li> Use a soluçãocerta para cada problema </li>
  • 28.
    ● Avalie areal necessidade de construir um site ou usar um framework para tarefas muito simples ● Pesquise sobre as possíveis opções: ○ Web app complexa: Laravel + Vue + MySQL/Maria ○ Site pequeno e específico: Silex + Twig + SQLite ○ Site estático: Jekyll, Sculpin ○ Documentação online: Gitbook ○ Blog, site dinâmico: WordPress, Drupal, Ghost ○ API: Lumen, Slim 7. Use a solução certa para cada problema (1/2)
  • 29.
    ● Procure SAASpara cada atividade (sempre tem!) ● Quando não gratuitos, a custo muito baixo ● Exemplos: Mailtrap, Mailchimp, Mailgun, Bitbucket, Hostinger, Zoho, Dropbox, AWS, Google Cloud ● Vale citar: PagSeguro, BoletoBancario, MercadoPago 7. Use a solução certa para cada problema (2/2)
  • 30.
  • 31.
    ● Lugar dePHP é no Linux (iOS allowed) ○ Ubuntu desktop: rápido, compatível com tudo, fácil de aprender e tem interface gráfica ○ Multiplique: VirtualBox, Docker e LXD ● Onde rodar: WAMP, XAMPP, Apache e/ou Nginx ● Onde guardar: MySQL, MariaDB, SqLite ● Como se proteger UFW, ipTables 8. Aprenda infraestrutura com urgência (1/5)
  • 32.
    ● É importanteconhecer todo o processo: ○ registro.br ou name.com + cloudflare ○ DNS: NS, A, MX, CNAME, TXT ○ SSH: você em todo lugar ○ SSL: HTTPS grátis: Let’s Encrypt ○ LAMP stack ○ VPS: uma máquina pra chamar de sua 8. Aprenda infraestrutura com urgência (2/5)
  • 33.
    8. Aprenda infraestruturacom urgência (3/5) ● Onde ter um VPS: ○ DigitalOcean 1GB, 1vCPU, 25GB SSD $5 ○ Vultr 1GB, 1vCPU, 25GB SSD $5 ○ Linode 1GB, 1vCPU, 20GB SSD $5 ○ Scaleway 2GB, 2vCPU, 50GB SSD €3 ○ Lightsail 0.5GB, 1vCPU, 20GB SSD $5
  • 34.
    8. Aprenda infraestruturacom urgência (4/5) ● Amazon Web Services (1/2): ○ Máquina particular: EC2 + EBS ○ Rede particular: VPC ○ Arquivos “soltos” visíveis na web: S3 ○ DNS: Route 53 ○ Envio de e-mail: SES ○ Backup a preço de banana: Glacier
  • 35.
    8. Aprenda infraestruturacom urgência (5/5) ● Amazon Web Services (2/2): ○ Git grátis: CodeCommit ○ BD zero bronca: RDS ○ Chatbot: Lex ○ Reconhecer faces e textos: Rekognition ○ Envio de SMS: SNS
  • 36.
  • 37.
    9. Conheça designpatterns ● MVC: o feijão com arroz dos design patterns ● SOLID: Seus objetos limpinhos e cheirosos ● CRUD: se seus controllers deixarem, qualquer aplicação será CRUD ● Gang of Four: 23 padrões em 3 categorias ○ Criacional, Estrutural, Comportamental ○ Laravel usa vários destes padrões
  • 38.
    <li> Cultura geral contamuito: leia! </li>
  • 39.
    10. Cultura geralconta muito: leia! ● Vocabulário para se comunicar com o usuário ● Comportamento do usuário ○ Banner blindness ○ Impaciência e leitura em F ● Aspectos visuais: um pouco de design ○ Cores, paletas, proporções, espaçamento e outras “frescuras” ○ Usabilidade: uma ciência ubíqua e mutante ● Conhecimento geral pra fazer bonito: Assista a TEDs
  • 40.
    <li> Coding for funand profit </li>
  • 41.
    11. Code forfun and profit ● Pergunta inicial: você gosta de programar? ● Você é um programador! Tem noção disso? ● Ganhar dinheiro não é pecado, mas: ● Projetos particulares “just for fun” ● Vá para o Codingame, HackerEarth, HackerRank e outros sites legais! ● ENSINE O QUE SABE!
  • 42.
  • 43.
    12. EMPREENDA! ● Trabalharpara “os outros” é torná-los ricos ● Iniciar um negócio a custo perto de zero? ● Todo mundo é capaz de tocar uma ideia pra frente (principalmente um programador) ● Não tenha medo do incerto: o próprio emprego é incerto! Comece com “freelas” ● Não procure emprego: ofereça emprego! //
  • 44.
  • 45.
    <a href=”mailto:leandrowferreira@gmail.com”> leandrowferreira@gmail.com </a> 1. Aprendalógica, não linguagem 2. Planeje antes de começar 3. Experimente novas tecnologias e tendências 4. Estude sempre e pra sempre 5. Coloque-se no lugar do usuário 6. Invista tempo em suas ferramentas 7. Use a solução certa para cada problema 8. Aprenda infraestrutura com urgência 9. Conheça design patterns 10. Cultura geral conta muito: leia! 11. Coding for fun and profit 12. EMPREENDA! Como ser um desenvolvedor melhor