Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[codecon_2023] Dicas de Engenharia de Software

[codecon_2023] Dicas de Engenharia de Software

A palestra "Dicas de Engenharia de Software" vai te ajudar a dar um up na sua carreira na área de tecnologia. Aprenda como evoluir suas habilidades de desenvolvimento e engenharia, os fundamentos que você precisa estudar, o que procurar em code reviews, como usar testes automatizados e as armadilhas em alguns tipos de testes. Além disso, descubra como construir uma carreira duradoura, mantendo um currículo curto, documentando sua jornada, respondendo perguntas com o método STAR e fazendo do aprendizado um hábito diário.

Hugo Marques

June 23, 2023
Tweet

More Decks by Hugo Marques

Other Decks in Technology

Transcript

  1. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 2023 Dicas de Engenharia de Software //by Hugo Marques } :) [
  2. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 Sobre mim </> 2023 } :D [
  3. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 Aprendizado 01 </> 2023 } ;) [
  4. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 /> < Dica #1 /> {Aprenda 1 linguagem, 1 framework e 1 tecnologia de apoio}
  5. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Linguagens 02 Frameworks 03 Tecnologia de apoio 04 Construa projetos front-end back-end mobile
  6. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Aprenda Inglês} < Dica #2 />
  7. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Oportunidades 02 Bons salários 03 Imigração
  8. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Aprenda a escrever} < Dica #3 />
  9. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 E-mails 02 Documentos de arquitetura 03 Documentação 04 Mensagens de commit 05 Perguntas no Slack
  10. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Estude fundamentos} /> < Dica #4 />
  11. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Algoritmos 02 Estrutura de dados 03 Sistemas operacionais 04 Redes 05 Protocolos | HTTP·TCP·UDP
  12. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Aprenda a perguntar} < Dica #5 />
  13. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 Título Escreva um título específico // Template Boa Pergunta 01 Contexto Forneça o contexto relevante 02 Expectativa Explique as suas expectativas com relação ao problema 03 Código Forneça o trecho de código relevante para a pergunta 04
  14. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 No dia-a-dia </> 2023 } ;) [ 02
  15. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Não existe processo de software perfeito} /> < Dica #6 />
  16. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 SCRUM 02 Kanban 03 Extreme Go Horse
  17. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Não programe por coincidência} /> < Dica #7 />
  18. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Saiba explicar o código 02 Não codifique às escuras 03 Documente as suas suposições 04 Teste as suas hipóteses // Dica #7
  19. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Entenda seus algoritmos e trade-offs} /> < Dica #8 />
  20. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Lembre-se dos fundamentos 02 Entenda seu contexto 03 Lembre da Dica #7 e evite coincidências
  21. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Organize a casa melhor do que a encontrou} /> < Dica #9 />
  22. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Adiciona testes 02 Refatore, se possível 03 Corrija documentação ultrapassada 04 Escreva uma pequena melhoria no código
  23. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Cuidado com otimização prematura | KISS > DRY} /> < Dica #10 />
  24. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Escreva testes automatizados} < Dica #11 />
  25. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Aumento da qualidade 02 Aumento da confiança 03 Ciclo de desenvolvimento mais ágil 04 Facilita atingir CI/CD
  26. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Evite testes end-to-end} /> < Dica #12 />
  27. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Lentos 02 Não confiáveis 03 Falhas não isoláveis 04 Simulam o comportamento real do usuário
  28. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 < Dica #13 /> {Faça code reviews}
  29. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Distribua conhecimento 02 Encontre problemas antes de produção 03 Valide o cumprimento dos padrões da equipe 04 Promova discussões sobre problemas
  30. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Seja gentil em code reviews} /> < Dica #14/>
  31. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Foque no código, não na pessoa 02 Ofereça sugestões, evite impor regras 03 Evite o viés de "meu jeito é melhor" 04 Elogie SEMPRE que possível 05 Valorize o esforço da pessoa
  32. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Saiba o que procurar em code-reviews} < Dica #15 />
  33. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Testes, testes e testes 02 Segurança 03 Reusabilidade e legibilidade 04 Padrões do time 05 "Overengineering"
  34. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Entenda o significado de "entregue" no contexto} /> < Dica #16 />
  35. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Quando o código é mergeado? 02 Quando o código é implantado em pré-produção? 03 Quando o código é implantado em produção? Developer Machine Test Environment Pre-production Production
  36. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Monitore, no mínimo, os 4 golden signals} /> < Dica #17 />
  37. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Latência 02 Tráfego 03 Erros 04 Saturação de recursos
  38. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Cuidado com a famosa frase "Já fiz isso 100x antes..."} /> < Dica #18/>
  39. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Não existe software perfeito. Entregue > Perfeito} /> < Dica #19 />
  40. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 Ferramentas </> 2023 } ;) [ 03
  41. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Aprenda a usar sua IDE, editor de texto, e ferramenta de escolha} /> < Dica #20 />
  42. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 Aumente sua performance e resolva problemas de forma eficiente Mover, selecionar, deletar blocos de código Editar texto por coluna ou realizar substituições Identar o código e importar dependências automaticamente // Dica #20 Executar o código Testar o código Usar o debugger quando necessário
  43. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Use uma ferramenta de controle de versão} < Dica #21 />
  44. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Uso obrigatório em 2023 02 Aprenda o básico do VCS 03 Comandos básicos (git): git init git add git push git pull git clone git commit git merge git rebase
  45. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Aprenda a usar o Terminal} /> < Dica #22 />
  46. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Navegação básica: cd, pwd, ls 02 Trabalhar com arquivos: cat, head, tail, mv, cp 03 Redirecionar entrada/saída de arquivos: <, >, | 04 Procurar algo: find, grep 05 Manipulação de dados: sed, awk, cut, sort, uniq
  47. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 Carreira </> Pitch Deck 20xx } ;) [ 04
  48. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Explore, carreira não é nada linear} /> < Dica #23 />
  49. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Explore um pouco, se possível 02 Evite focar sem conhecer as áreas 03 Aprenda para ajudar na escolha do foco: front-end back-end infraestrutura
  50. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Mantenha um diário de desenvolvimento} < Dica #24 />
  51. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Inclua suas contribuições 02 Foque nos exemplos 03 Tente atualizar pelo menos 1x semana.
  52. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Use o método STAR para soft skills} < Dica #25 />
  53. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 (Situação) Descreva o contexto ou situação em que você se encontrava // Dica #25 S (Tarefa) Explique qual era a tarefa ou objetivo que você cumpriu T (Ação) Descreva as ações que você tomou para cumprir a tarefa A (Resultado) Compartilhe os resultados alcançados por meio de suas ações R
  54. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Crie o hábito de estudar regularmente} < Dica #26 />
  55. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Faça cursos relacionados 02 Pratique com projetos pessoais (pet-projects) 03 Contribua para projetos de código aberto 04 Escreva sobre o que você aprendeu
  56. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Leia livros técnicos} < Dica #27 />
  57. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Pragmatic Programmer 02 Fundamentals of Software Architecture 03 Effective Java 04 Designing Data-Intensive Applications
  58. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 {Carreira é uma maratona, não uma corrida de curto alcance} < Dica #28 />
  59. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 01 Não tente aplicar todas as dicas de uma só vez 02 Faça melhorias gradualmente 03 A conquista leva anos, não semanas ou meses 04 Eu não nasci Senior
  60. 1 0 1 1 0 1 1 0 1 1

    0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 Obrigado! </> 2023 Créditos: Slidesgo · Flaticon · Freepik · Midjourney } :D [ @hugaomarques hugodesmarques helloworldcomics