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

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
    } :) [

    View Slide

  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 [

    View Slide

  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
    } ;) [

    View Slide

  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}

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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}

    View Slide

  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

    View Slide

  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/>

    View Slide

  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

    View Slide

  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 />

    View Slide

  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"

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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/>

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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.

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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 />

    View Slide

  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

    View Slide

  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

    View Slide