https://roadmap.sh/roadmaps/backend.png
CARREIRADEV
ALVARO VIEBRANTZ
Developer Relations Engineer at Google Cloud
aviebrantz.com
@alvaroviebrantz
EU PENSANDO EM UM TEMA PARA ESTE EVENTO
“QUE TAL FALAR SOBRE
CARREIRA ?”
DICA #1
Estamos sempre aprendendo
MAS VAMOS AO BÁSICO
• Frontend
• Backend
• DevOps
• FullStack
roadmap.sh
COISAS COMUNS A TODOS
COMO A INTERNET FUNCIONA ?
• HTTP
• DNS
• SSL e criptogra
fi
a
• Arquitetura Cliente < - > Servidor
• Não precisa ser expert em nada disso, só ter
noções
VERSIONAMENTO
• Trabalhar em conjunto com outras pessoas
• Multiplas features
• Code review
• Git
• Git
fl
ow
• Hospedagem - Github, Bitbucket, Gitlab
• Boas praticas para documentar seu commits
ALGORITMOS E ESTRUTURAS DE DADOS
• Quando usar uma lista, hash map, conjuntos, árvores
• Vejo muitas perguntas em Javascript por exemplo - uso .forEach ou .map ?
• Nada é de graça, ter noções do custo que aquele código tem ao executar
• Faço uma chamada no banco ou múltiplas ?
• Queries N+1
• Quebrar problemas em sub problemas
• A gente acaba vendo muito isso ao estudar algoritmos de ordenação por exemplo
exercism.io
Leet Code
PROGRAMADOR FULL STACK OVERFLOW
“AAAAAALVARO, NUNCA
PRECISEI IMPLEMENTAR UM
ALGORITMO DE ORDENAÇÃO”
ALGORITMOS E ESTRUTURAS DE DADOS
• De fato você no dia a dia não vai implementar essas coisas
• Mas vai se deparar com problemas em que você tem que saber qual opção usar
• Uso uma lista ou um hash map aqui ?
• No Java vc tem várias implementações como LinkedList, ArrayList, HashMap
• Tem muitos problemas que se resolve com Conjuntos/Sets
• São conhecimentos que vão além de qualquer linguagem/framework
DESIGN PATTERNS
• Alguns padrões de programação se repetem
• Ajudam a refatorar código
• Pode ser reutilizado independente da linguagem
• Organizar um projeto
• Não abuse disso
• Se você tem um martelo, tudo parece um prego
DEV SENIOR DA EMPRESA
“A ISSO AI RESOLVE FÁCIL
COM UM SINGLETON”
refactoring.guru/design-patterns
DICA #2
Só por você não usar no dia a dia,
não significa que é inútil.
FRONTEND
ATRIBUIÇÕES DO FRONTEND
• Interfaces com o usuário
• Seja ela Web, Desktop ou Mobile
• Experiência do usuário
• Layout e semântica - HTML
• Estilização - CSS
• Manipulação - Javascript
• Formulários, Validação de dados, Tratamento de erros
FRONTEND EVOLUIU MUITO
• Arquitetura de projetos Frontend
• Style Guides
• Padrões de projetos
• CSS Moderno
• Pré processadores CSS - SASS, LESS
• CSS in JS - Styled Components
• Linters e Formatters - ESLint, Prettier, etc
• Build Tools - Webpack, Snowpack, Parcel
FRONTEND EVOLUIU MUITO
• App Like Experience - Progressive Web Apps
• Of
fl
ine, Banco de dados local, cache, noti
fi
cações, etc
• Web Bluetooth e Web Serial
• Como lidar com multiplas fontes de dados e interações ?
• Como interagir com o backend
• Rest, GraphQL, Websockets
• Gerenciamento de estados
• Redux, MobX, RxJS, Ramda
DICAS PARA ESTUDAR FRONTEND
• Estude Javascript/Typescript
• Escolha um dos 3 maiores frameworks pra focar inicialmente - talvez
baseado em vagas que você já ache interessante
• Construa aplicações por diversão
• github.com/public-apis/public-apis
• Backend as a Service
• Hasura, Firebase, MirageJS, AWS App Sync, etc
• Auth - Auth0, Firebase, AWS Cognito
BACKEND
ATRIBUIÇÕES DO BACKEND
• Integrações entre várias partes do sistema e entre sistemas
• Banco de Dados
• Armazenamento de arquivo
• Mensageria
• Autenticação e Autorização
• API Externas
• Pagamentos, Fonte de dados para cruzamento, Logistica, etc
• Regras de negócio, validação de dados e tratamento de erros
• Desenvolvimento de APIs
• Rest, GraphQL, gRPC
O QUE VOU USAR PRO MEU BACKEND ?
• Várias linguagens
• Java, C#, Node.js, Go, Python, Elixir, PHP e muitas outras
• Não tem bala de prata
• Seja promiscuo, não se apegue demais a uma
• Frameworks
• Alguns mais voltados para entrega rápida - Rails (Ruby), Laravel (PHP), Django (Python), etc
• Sem opinião forte, faça você mesmo - Express (Node), Spring boot (Java), Flask (Python)
• Arquitetura e Padrões de Projeto
• Clean Code, Arquitetura Hexagonal, Enterprise Patterns, etc
• Manutenção a longo prazo
• Pensar em formas de integrar com outros sistemas
BACKEND TAMBÉM DEVE TER NOÇÕES DE CLOUD
• Onde vai rodar meu código ?
• Noções de Linux e Servidores
• Containers
• Não deve rodar só na sua maquina
• Docker, Kubernetes, etc
• Nuvem/Cloud
• Google Cloud, Amazon (AWS) e Azure (Microsoft)
• IaaS, PaaS, CaaS, Serverless
• Monitoramento e Métricas
DEV OPS
INFRAESTRUTURA
• Servidores
• Linux
• Containers
• Docker e Kubernetes
• Nuvem/Cloud
• IaaS, PaaS, CaaS, Serverless
• Cloud Native Foundation é sua biblia
• cncf.io
• SRE - Site Reliability Engineer
• sre.google/sre-book
PESSOAS DE OPS SE TORNARAM DEVS
• Reduzir barreira entre Dev e Ops
• Hoje em dia até mesmo roteadores são “programáveis” com Python
• “Na minha máquina funciona”
• Prover ferramentas, bibliotecas e boas práticas relacionadas a infra
• Infra que suporte os Devs
• Dados
• Computação
• Logs
IaC - Infra as Code
• Automatizar o provisionamento de infra
• Reprodução de um ambiente de forma mais “stateless”
• Terraform, Puppet, Ansible, Hashicorp Nomad
• Kubernetes
• Versionamento de Aplicações e Infra
• Helm, K8S Operators, Kops, etc
• Continuous Integration and Continuous Delivery - CI/CD
• GitOps
Saúde do sistema
• Métricas do sistema
• Prometheus, Datadog, New Relic, Stackdriver, Cloud Watch
• Gerados pela própria infra e também pela aplicação
• Logs
• Loki, Elasticsearch, etc
• Dashboard
• Grafana, Kibana, etc
• Acompanhar metricas e receber alertas
FULL STACK
Tem até Dev Full Cycle agora
FULL STACK EXISTE ?
• Faz um pouco de tudo.
• Acho muito importante entender como todas as partes funcionam
• Web master > Desenvolvedor > Front End / Back End > Full Stack
• Não é uma caminho de carreira
• Necessidade e porte da empresas
YES, YOU CAN!
• É possível em minha opinião
• É uma coisa que vem com o tempo
• Mais relacionado a saber como várias partes funcionam
• Não recomendo a pensar assim pra quem está no inicio
• Estudar não faz mal, mas foco é importante
• Sai um framework JS por segundo - não adianta querer abraçar tudo
E ISSO EXISTE POR AI ?
• Empresas menores
• As vezes não suporta muita especialização
• Ou tem muitos projetos menores
• Empresas grandes geralmente não tem Full Stacks
• Mas empresas grandes também não colocam muito rótulo
• Software Engineer
• Video do Neto Marin - Quem acredita em Full Stack ?
• youtube.com/watch?v=nwwdXXO3U54
DICA #3
Seja feliz. E dá pra ser feliz com quase qualquer tecnologia que
você escolher hoje em dia. E não se apegue demais também.
Comunidade + Vagas + Bibliotecas + Conteúdo = ❤
SOFT SKILLS
VOCÊ É UM
DESENVOLVEDOR 10X ?
O que é um desenvolvedor 10x ?
O que é um desenvolvedor 10x ?
Dorothy Vaughan
Dorothy Vaughan
Dorothy Vaughan
HOJE NOSSO TALENTO É COLETIVO
E RELATIVO A QUÃO BEM NÓS SOMOS
TRABALHANDO JUNTOS.
COMPARTILHAR CONHECIMENTO
• Não necessariamente você tem que estar dando palestras
• Artigos, Videos, Palestras, Projetos públicos no Github
• Fale de coisas novas na empresa
• Fique mandando libs novas
• Artigos e palestras interessantes
• "Brown bags” / “Dev Snacks”
• Dias na empresa pra compartilhar conhecimento
SENIOR DE 2 ANOS
COMPUTAÇÃO NÃO É TÃO FÁCIL QUANTO VENDEM
SOBRE SENIORIDADE HOJE EM DIA
• Tem a ver com o que foi falado sobre o Dev 10x
• Ajudar muito o time
• Falta experiência
• Salário nem sempre é baseado no tempo de experiência
• Resolver o problema atual da empresa
• Tecnologias usadas
• Conhecimento do negócio
DICA #4
Foque em aprender - devagar e sempre.
INGLÊS
WAT ?
MUITO IMPORTANTE NA NOSSA ÁREA
• Acompanhar conteúdo sendo produzidos pela comunidade dev
• Videos
• Palestras
• Projetos Open Source
• Inglês técnico vs Inglês do dia a dia
• Cursos Online
• Treinar com pessoas nativas
• Grupos de estudo - Discord
MUITO IMPORTANTE NA NOSSA ÁREA
• Muitas vagas fora do país
• Aumenta o seu proprio raio de busca
• Aumenta competição
• Geralmente Mid Level ou Seniors
• Remoto vs Realocação
• 💰 Pagamento em moedas mais valorizadas 💰
FACULDADE
FAZER OU NÃO FAZER, EIS A QUESTÃO
VERDADES TEM QUE SER DITAS
• No geral, ter faculdade ainda te ajuda a encontrar vagas
• Até pra trabalhar pra fora por exemplo, ainda se olha muito isso.
• Fundações da Computação
• Pontos que foram citados antes - Lógica, Algoritmos, Estrutura de
dados, Banco de Dados, etc
• Network
• Conhecer um professor ou colega que pode te apresentar uma vaga
• Trabalhar em equipe, gerenciar tempo, etc
CADA UM TEM UMA HISTÓRIA
• Sobre privilégios e como isso é pouco discutido nesse contexto
• Uma pessoa privilegiada:
• Já vem estudando em boas escolas, cursinhos e tudo mais e acaba
entrando em faculdades melhores
• Não precisa trabalhar, foca só na faculdade
• Uma pessoas menos privilegiada:
• Não consegue entrar numa boa faculdade
• Tem que trabalha
• Foco não só na faculdade
SOCIEDADE
SIM, SEU CÓDIGO AFETA PESSOAS
RACISMO ALGORITMICO
• Recomendo ver o documentário - Coded Bias na Net
fl
ix
• Privacidade dos dados
• LGPD
• Machine Learning e Big Data tem alto impacto na sociedade e deve ser feito
de forma consciente
• Vieses e racismo algoritmos
• Treinamento com dados mais diversos
• Explicabilidade em ML
• Não adianta mais ter uma saída de SIM ou NÃO de um modelo, é
importante saber o por que daquilo
DICA #5
Saia da sua bolha dev, a vida não é só sim ou
não em muitos aspectos.
Avida é bem mais tons de cinza,
do que só preto e branco como a gente pensa.
Slack - devmt.herokuapp.com
meetup.com/devmatogrosso
https://roadmap.sh/roadmaps/backend.png
OBRIGADO
ALVARO VIEBRANTZ
Developer Relations Engineer at Google Cloud
aviebrantz.com
@alvaroviebrantz

Carreira de Desenvolvimento

  • 1.
  • 2.
    EU PENSANDO EMUM TEMA PARA ESTE EVENTO “QUE TAL FALAR SOBRE CARREIRA ?”
  • 7.
  • 8.
    MAS VAMOS AOBÁSICO • Frontend • Backend • DevOps • FullStack
  • 9.
  • 10.
  • 11.
    COMO A INTERNETFUNCIONA ? • HTTP • DNS • SSL e criptogra fi a • Arquitetura Cliente < - > Servidor • Não precisa ser expert em nada disso, só ter noções
  • 12.
    VERSIONAMENTO • Trabalhar emconjunto com outras pessoas • Multiplas features • Code review • Git • Git fl ow • Hospedagem - Github, Bitbucket, Gitlab • Boas praticas para documentar seu commits
  • 14.
    ALGORITMOS E ESTRUTURASDE DADOS • Quando usar uma lista, hash map, conjuntos, árvores • Vejo muitas perguntas em Javascript por exemplo - uso .forEach ou .map ? • Nada é de graça, ter noções do custo que aquele código tem ao executar • Faço uma chamada no banco ou múltiplas ? • Queries N+1 • Quebrar problemas em sub problemas • A gente acaba vendo muito isso ao estudar algoritmos de ordenação por exemplo
  • 15.
  • 16.
    PROGRAMADOR FULL STACKOVERFLOW “AAAAAALVARO, NUNCA PRECISEI IMPLEMENTAR UM ALGORITMO DE ORDENAÇÃO”
  • 17.
    ALGORITMOS E ESTRUTURASDE DADOS • De fato você no dia a dia não vai implementar essas coisas • Mas vai se deparar com problemas em que você tem que saber qual opção usar • Uso uma lista ou um hash map aqui ? • No Java vc tem várias implementações como LinkedList, ArrayList, HashMap • Tem muitos problemas que se resolve com Conjuntos/Sets • São conhecimentos que vão além de qualquer linguagem/framework
  • 18.
    DESIGN PATTERNS • Algunspadrões de programação se repetem • Ajudam a refatorar código • Pode ser reutilizado independente da linguagem • Organizar um projeto • Não abuse disso • Se você tem um martelo, tudo parece um prego
  • 19.
    DEV SENIOR DAEMPRESA “A ISSO AI RESOLVE FÁCIL COM UM SINGLETON”
  • 20.
  • 21.
    DICA #2 Só porvocê não usar no dia a dia, não significa que é inútil.
  • 22.
  • 23.
    ATRIBUIÇÕES DO FRONTEND •Interfaces com o usuário • Seja ela Web, Desktop ou Mobile • Experiência do usuário • Layout e semântica - HTML • Estilização - CSS • Manipulação - Javascript • Formulários, Validação de dados, Tratamento de erros
  • 24.
    FRONTEND EVOLUIU MUITO •Arquitetura de projetos Frontend • Style Guides • Padrões de projetos • CSS Moderno • Pré processadores CSS - SASS, LESS • CSS in JS - Styled Components • Linters e Formatters - ESLint, Prettier, etc • Build Tools - Webpack, Snowpack, Parcel
  • 25.
    FRONTEND EVOLUIU MUITO •App Like Experience - Progressive Web Apps • Of fl ine, Banco de dados local, cache, noti fi cações, etc • Web Bluetooth e Web Serial • Como lidar com multiplas fontes de dados e interações ? • Como interagir com o backend • Rest, GraphQL, Websockets • Gerenciamento de estados • Redux, MobX, RxJS, Ramda
  • 27.
    DICAS PARA ESTUDARFRONTEND • Estude Javascript/Typescript • Escolha um dos 3 maiores frameworks pra focar inicialmente - talvez baseado em vagas que você já ache interessante • Construa aplicações por diversão • github.com/public-apis/public-apis • Backend as a Service • Hasura, Firebase, MirageJS, AWS App Sync, etc • Auth - Auth0, Firebase, AWS Cognito
  • 28.
  • 29.
    ATRIBUIÇÕES DO BACKEND •Integrações entre várias partes do sistema e entre sistemas • Banco de Dados • Armazenamento de arquivo • Mensageria • Autenticação e Autorização • API Externas • Pagamentos, Fonte de dados para cruzamento, Logistica, etc • Regras de negócio, validação de dados e tratamento de erros • Desenvolvimento de APIs • Rest, GraphQL, gRPC
  • 30.
    O QUE VOUUSAR PRO MEU BACKEND ? • Várias linguagens • Java, C#, Node.js, Go, Python, Elixir, PHP e muitas outras • Não tem bala de prata • Seja promiscuo, não se apegue demais a uma • Frameworks • Alguns mais voltados para entrega rápida - Rails (Ruby), Laravel (PHP), Django (Python), etc • Sem opinião forte, faça você mesmo - Express (Node), Spring boot (Java), Flask (Python) • Arquitetura e Padrões de Projeto • Clean Code, Arquitetura Hexagonal, Enterprise Patterns, etc • Manutenção a longo prazo • Pensar em formas de integrar com outros sistemas
  • 31.
    BACKEND TAMBÉM DEVETER NOÇÕES DE CLOUD • Onde vai rodar meu código ? • Noções de Linux e Servidores • Containers • Não deve rodar só na sua maquina • Docker, Kubernetes, etc • Nuvem/Cloud • Google Cloud, Amazon (AWS) e Azure (Microsoft) • IaaS, PaaS, CaaS, Serverless • Monitoramento e Métricas
  • 32.
  • 33.
    INFRAESTRUTURA • Servidores • Linux •Containers • Docker e Kubernetes • Nuvem/Cloud • IaaS, PaaS, CaaS, Serverless • Cloud Native Foundation é sua biblia • cncf.io • SRE - Site Reliability Engineer • sre.google/sre-book
  • 34.
    PESSOAS DE OPSSE TORNARAM DEVS • Reduzir barreira entre Dev e Ops • Hoje em dia até mesmo roteadores são “programáveis” com Python • “Na minha máquina funciona” • Prover ferramentas, bibliotecas e boas práticas relacionadas a infra • Infra que suporte os Devs • Dados • Computação • Logs
  • 35.
    IaC - Infraas Code • Automatizar o provisionamento de infra • Reprodução de um ambiente de forma mais “stateless” • Terraform, Puppet, Ansible, Hashicorp Nomad • Kubernetes • Versionamento de Aplicações e Infra • Helm, K8S Operators, Kops, etc • Continuous Integration and Continuous Delivery - CI/CD • GitOps
  • 36.
    Saúde do sistema •Métricas do sistema • Prometheus, Datadog, New Relic, Stackdriver, Cloud Watch • Gerados pela própria infra e também pela aplicação • Logs • Loki, Elasticsearch, etc • Dashboard • Grafana, Kibana, etc • Acompanhar metricas e receber alertas
  • 37.
    FULL STACK Tem atéDev Full Cycle agora
  • 38.
    FULL STACK EXISTE? • Faz um pouco de tudo. • Acho muito importante entender como todas as partes funcionam • Web master > Desenvolvedor > Front End / Back End > Full Stack • Não é uma caminho de carreira • Necessidade e porte da empresas
  • 39.
    YES, YOU CAN! •É possível em minha opinião • É uma coisa que vem com o tempo • Mais relacionado a saber como várias partes funcionam • Não recomendo a pensar assim pra quem está no inicio • Estudar não faz mal, mas foco é importante • Sai um framework JS por segundo - não adianta querer abraçar tudo
  • 40.
    E ISSO EXISTEPOR AI ? • Empresas menores • As vezes não suporta muita especialização • Ou tem muitos projetos menores • Empresas grandes geralmente não tem Full Stacks • Mas empresas grandes também não colocam muito rótulo • Software Engineer • Video do Neto Marin - Quem acredita em Full Stack ? • youtube.com/watch?v=nwwdXXO3U54
  • 41.
    DICA #3 Seja feliz.E dá pra ser feliz com quase qualquer tecnologia que você escolher hoje em dia. E não se apegue demais também. Comunidade + Vagas + Bibliotecas + Conteúdo = ❤
  • 42.
  • 43.
  • 44.
    O que éum desenvolvedor 10x ?
  • 45.
    O que éum desenvolvedor 10x ? Dorothy Vaughan
  • 46.
  • 47.
  • 48.
    HOJE NOSSO TALENTOÉ COLETIVO E RELATIVO A QUÃO BEM NÓS SOMOS TRABALHANDO JUNTOS.
  • 49.
    COMPARTILHAR CONHECIMENTO • Nãonecessariamente você tem que estar dando palestras • Artigos, Videos, Palestras, Projetos públicos no Github • Fale de coisas novas na empresa • Fique mandando libs novas • Artigos e palestras interessantes • "Brown bags” / “Dev Snacks” • Dias na empresa pra compartilhar conhecimento
  • 50.
  • 51.
    COMPUTAÇÃO NÃO ÉTÃO FÁCIL QUANTO VENDEM
  • 52.
    SOBRE SENIORIDADE HOJEEM DIA • Tem a ver com o que foi falado sobre o Dev 10x • Ajudar muito o time • Falta experiência • Salário nem sempre é baseado no tempo de experiência • Resolver o problema atual da empresa • Tecnologias usadas • Conhecimento do negócio
  • 53.
    DICA #4 Foque emaprender - devagar e sempre.
  • 54.
  • 55.
    MUITO IMPORTANTE NANOSSA ÁREA • Acompanhar conteúdo sendo produzidos pela comunidade dev • Videos • Palestras • Projetos Open Source • Inglês técnico vs Inglês do dia a dia • Cursos Online • Treinar com pessoas nativas • Grupos de estudo - Discord
  • 56.
    MUITO IMPORTANTE NANOSSA ÁREA • Muitas vagas fora do país • Aumenta o seu proprio raio de busca • Aumenta competição • Geralmente Mid Level ou Seniors • Remoto vs Realocação • 💰 Pagamento em moedas mais valorizadas 💰
  • 57.
    FACULDADE FAZER OU NÃOFAZER, EIS A QUESTÃO
  • 58.
    VERDADES TEM QUESER DITAS • No geral, ter faculdade ainda te ajuda a encontrar vagas • Até pra trabalhar pra fora por exemplo, ainda se olha muito isso. • Fundações da Computação • Pontos que foram citados antes - Lógica, Algoritmos, Estrutura de dados, Banco de Dados, etc • Network • Conhecer um professor ou colega que pode te apresentar uma vaga • Trabalhar em equipe, gerenciar tempo, etc
  • 59.
    CADA UM TEMUMA HISTÓRIA • Sobre privilégios e como isso é pouco discutido nesse contexto • Uma pessoa privilegiada: • Já vem estudando em boas escolas, cursinhos e tudo mais e acaba entrando em faculdades melhores • Não precisa trabalhar, foca só na faculdade • Uma pessoas menos privilegiada: • Não consegue entrar numa boa faculdade • Tem que trabalha • Foco não só na faculdade
  • 60.
  • 61.
    RACISMO ALGORITMICO • Recomendover o documentário - Coded Bias na Net fl ix • Privacidade dos dados • LGPD • Machine Learning e Big Data tem alto impacto na sociedade e deve ser feito de forma consciente • Vieses e racismo algoritmos • Treinamento com dados mais diversos • Explicabilidade em ML • Não adianta mais ter uma saída de SIM ou NÃO de um modelo, é importante saber o por que daquilo
  • 63.
    DICA #5 Saia dasua bolha dev, a vida não é só sim ou não em muitos aspectos. Avida é bem mais tons de cinza, do que só preto e branco como a gente pensa.
  • 64.
  • 65.
    https://roadmap.sh/roadmaps/backend.png OBRIGADO ALVARO VIEBRANTZ Developer RelationsEngineer at Google Cloud aviebrantz.com @alvaroviebrantz