0% acharam este documento útil (0 voto)
8 visualizações19 páginas

Roadmap Java e Front End

O documento apresenta um guia abrangente sobre o aprendizado de front-end e Java, dividindo o conteúdo em níveis e tópicos, incluindo HTML, CSS, JavaScript, acessibilidade, SEO, design responsivo, e fundamentos de Java. Cada seção detalha os conceitos essenciais e habilidades práticas necessárias para o desenvolvimento web e programação em Java. Além disso, aborda ferramentas auxiliares como Git, HTTP, JSON, e design com Figma.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
8 visualizações19 páginas

Roadmap Java e Front End

O documento apresenta um guia abrangente sobre o aprendizado de front-end e Java, dividindo o conteúdo em níveis e tópicos, incluindo HTML, CSS, JavaScript, acessibilidade, SEO, design responsivo, e fundamentos de Java. Cada seção detalha os conceitos essenciais e habilidades práticas necessárias para o desenvolvimento web e programação em Java. Além disso, aborda ferramentas auxiliares como Git, HTTP, JSON, e design com Figma.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 19

# Front-end

## Nivel 1

- [ ] **HTML - Fundamentos**:

- HTML é uma linguagem de marcação que define a estrutura do


seu conteúdo. HTML consiste em uma série de elementos que você
usa para mostrar algo de uma determinada maneira ou agir de uma
certo modo. As tags podem criar um hiperlink de uma palavra ou
imagem para outro lugar, podem colocar palavras em itálico, podem
aumentar ou diminuir a fonte e assim por diante.

- Aprender quais tags são necessárias para um HTML básico

- Criar um parágrafo de texto

- Exibir uma imagem

- Conhecer a diferença entre 'h1', 'h2', 'h3', etc

- Criar um texto com hyperlink

- Criar um formulário com campos relevantes

- Criar uma lista de itens ordenada ou não ordenada

- Criar uma lista de itens dentro de uma lista suspensa (dropdown


list)

- Conectar com um arquivo de CSS

- Criar uma tabela

- Adicionar IDs e classes

- [ ] **CSS - Fundamentos**:

- Cascading Style Sheets (CSS) é uma linguagem usada para


descrever a apresentação de um documento escrito em uma
linguagem de marcação como HTML ou XML. CSS pode ser usado
para estilos de texto de documentos muito básicos — por exemplo,
para alterar a cor e o tamanho de títulos e links. Ele pode ser usado
para criar um layout — por exemplo, transformar uma única coluna
de texto em um layout com uma área de conteúdo principal e uma
barra lateral para informações relacionadas. Pode até ser usado para
efeitos como animações.

- Aprender a estrutura visual de uma página, com 'margin' e


'padding'

- Estabelecer o tamanho com 'width' e 'height'


- Aprender sobre a posição de um elemento ('static', 'relative' ou
'absolute)

- Aprender sobre o 'display' de exibição de um elemento ('block',


'inline', 'inline-block')

- Aprender a posicionar imagens em relação ao texto

- Aprender sobre alinhamento

- Aprender sobre estilo de fontes

- Aprender as diferenças e vantagens de usar as diferentes


unidades de medida em CSS (%, relativas, etc)

- Conectar com os elementos (IDs, classes) de um arquivo HTML

- Alterar características de um elemento quando o mouse passar


por cima dele ('hover')

- Aprender box-sizing

- Aprender Flexbox

- Aprender Grid

- [ ] **JavaScript - Fundamentos**:

- JavaScript é a linguagem de programação mais popular do mundo


e é uma das principais tecnologias da World Wide Web, juntamente
com HTML e CSS. Ela possui tipagem dinâmica, orientação a objetos
baseada em protótipos e funções de primeira classe. Ela é multi-
paradigma e suporta estilos de programação orientados a eventos,
funcionais e imperativos.

- Conhecer os tipos primitivos

- Declarar variáveis, considerando a diferença entre 'var', 'let' e


'const'

- Usar estruturas condicionais ('if', 'else')

- Conhecer os operadores de atribuição e comparação ('=', '==',


'===')

- Usar estruturas de repetição e laços ('while', 'for')

- Usar funções, passando parâmetros e argumentos

- Manipular arrays e listas

- Aprender o conceito de Orientação a Objetos

- Fazer um CRUD
- Obter dados de uma API

- Fazer chamadas assíncronas usando 'Async/Await', 'Promise', etc

- [ ] **DOM - Fundamentos**:

- O Document Object Model (DOM) é uma interface de programação


para documentos web. Ele representa a página para que os
programas possam alterar a estrutura, o estilo e o conteúdo do
documento. O DOM representa o documento como nós e objetos;
dessa forma, linguagens de programação podem interagir com a
página.

- Entender como funciona a árvore do DOM

- Acessar e manipular elementos do HTML e CSS

- Acessar os pais e filhos de um elemento

- Inserir um novo elemento na árvore

- Remover um elemento da árvore

- Esperar por um evento em certo elemento da página usando


'addEventListener()'

- [ ] **Acessibilidade em Javascript**:

- Acessibilidade Digital é a eliminação de barreiras na Web. O


conceito pressupõe que os sites e portais sejam projetados de modo
que todas as pessoas possam perceber, entender, navegar e interagir
de maneira efetiva com as páginas.

- Escrever código com acessibilidade em mente

- [ ] **Estratégias de SEO**:

- SEO significa otimização para motores de busca e que diz respeito


as estratégias usadas para ranquear um site dentro de mecanismos
de busca como o Yahoo, o Bing e, claro, o mais famoso de todos, o
Google.

- Escolher palavras-chave

- Entender como o Google classifica páginas

- Conhecer os fatores de rankeamento

- Fazer Link Building

- [ ] **Design Responsivo**:

- Ajustar suas páginas para o tamanho da tela do usuário


- Media queries

- Conhecer o conceito de Mobile first

## Nivel 2

- [ ] **JavaScript - Callbacks e Promises**:

- Uma promessa (Promise) é um proxy para um valor não


necessariamente conhecido quando a promessa é criada. Isso permite
que métodos assíncronos retornem valores como métodos síncronos -
em vez de retornar imediatamente o valor final, o método assíncrono
retorna uma promessa de fornecer o valor em algum momento no
futuro.

- Uma função de Callback é uma função passada para outra função


como um argumento, que é então invocado dentro da função externa
para completar algum tipo de rotina ou ação.

- Uma função assíncrona (async) é uma função declarada com a


palavra-chave `async`, e a palavra-chave `await` é permitida dentro
dela. As palavras-chave `async` e `await` permitem que o
comportamento assíncrono e baseado em promessas seja escrito em
um estilo mais limpo, evitando a necessidade de configurar
explicitamente as cadeias de promessas.

- Entender o conceito de assincronicidade em programação

- Escrever código assíncrono entendendo o conceito de promessas


em JavaScript

- Utilizar os métodos, palavras-chaves e objetos do JavaScript para


manipulação de promessas como 'Async/Await', '.then()', 'Promise',
etc

- Aprender em quais situações é necessário o uso de programação


assíncrona

- Fazer chamadas em APIs com `fetch()`

- [ ] **JavaScript - Testes**:

- O teste de software é o processo de avaliação e verificação de que


um software realmente faz o que deveria fazer. Os benefícios dos
testes incluem a prevenção de bugs, a redução dos custos de
desenvolvimento e a melhoria do desempenho.

- Usar testes unitários

- Usar testes de integração


- Usar testes de comportamento (behavior)

- Usar mocks

- [ ] **JavaScript - Manipulação de Erros**:

- O tratamento de erros refere-se aos procedimentos de resposta e


recuperação de condições de erro presentes em um aplicativo de
software. Em outras palavras, é o processo composto de antecipação,
detecção e resolução de erros de aplicação, de programação ou de
comunicação.

- Conhecer e tratar as exceções mais comuns

- Saber quais os tipos de erros e em quais situações eles podem


ocorrer

- Entender como o Node.js faz o manejo de erros

- Usar 'try' e 'catch' para tratamento de erros

- Em que ocasiões e de que forma utilizar o `throw`

- Criar exceções específicas de acordo com a necessidade de sua


aplicação

- [ ] **JavaScript - ES6**:

- Conhecer as diferenças dessa versão do JavaScript

- [ ] **JavaScript - Modularização**:

- Isolar partes do código em módulos

- Usar import e export

- [ ] **Versionamento Semântico para Front-end**:

- SemVer (Versionamento Semântico) é um conjunto simples de


regras e requisitos que ditam como os números de versão são
atribuídos e incrementados.

- Organizar as dependências de um projeto

- [ ] **Jest**:

- Jest é um framework de teste em JavaScript projetado para


garantir a correção de qualquer código JavaScript. Ele permite que
você escreva testes com uma API acessível, familiar e rica em
recursos que lhe dá resultados rapidamente.

- [ ] **Cypress**:

- Criar e executar testes


## Nivel 3

- [ ] **Estruturas de Dados**:

- No contexto dos computadores, uma estrutura de dados é uma


forma específica de armazenar e organizar os dados na memória do
computador para que esses dados possam ser facilmente
recuperados e utilizados de forma eficiente quando necessário
posteriormente.

- Conhecer as principais estruturas de dados

- Implementar as principais estruturas de dados

- [ ] **Conceitos de Orientação a Objetos**:

- A Programação Orientada a Objetos é um paradigma de


programação de software baseado na composição e interação entre
diversas unidades chamadas de 'objetos' e as classes, que contêm
uma identidade, propriedades e métodos). Ela é baseada em quatro
componentes da programação: abstração digital, encapsulamento,
herança e polimorfismo.

- Como funcionam objetos

- Criar e utilizar construtores

- O que são classes

- Criar e utilizar métodos

- Como funciona encapsulamento

- O que é herança

- O que é polimorfismo

- Como funcionam interfaces

- O que são abstrações

- [ ] **JavaScript - Armazenamento**:

- Armazenar dados no front-end com localStorage

- Manipular dados armazenados

- Persistir dados armazenados

- [ ] **JavaScript - Concorrência**:

- Programação concorrente é um paradigma de programação para a


construção de programas que fazem uso da execução simultânea de
várias tarefas computacionais interativas, que podem ser
implementadas como programas separados ou como um conjunto de
threads criadas por um único programa.

- Executar tarefas paralelamente

- [ ] **TypeScript - Fundamentos**:

- TypeScript é uma linguagem de programação fortemente tipada


que se baseia em JavaScript.

- Entender a fundo o que são tipos e a importância da tipagem

- Aprender o que é o TypeScript, por que foi criado, como ele


funciona e sua relação com o JavaScript

- Conhecer as ferramentas do TypeScript (integração com o editor


de código, verificador estático e compilador)

- Escrever código em TypeScript com suas ferramentas (interfaces,


enum, decorators, etc)

- Desenvolver aplicações em TypeScript

- [ ] **GraphQL**:

- GraphQL é uma linguagem de consulta e manipulação de dados de


código aberto para APIs. É considerada uma alternativa para
arquiteturas REST.

- Aprender o que é GraphQL e por que foi criado

- Entender como o GraphQL é utilizado no desenvolvimento de APIs

- Criar APIs utilizando as bibliotecas e frameworks para GraphQL

- [ ] **Apollo Client**:

- Apollo Client é uma biblioteca abrangente de gerenciamento de


estado para JavaScript que permite gerenciar dados locais e remotos
com o GraphQL.

- Utilizar o Apollo para criar um servidor GraphQL

- Conectar com uma API

- [ ] **Micro Frontends**:

- Micro Frontends são uma abordagem arquitetural na qual uma


aplicação web é dividida em partes independentes, cada uma
representando uma parte específica da interface do usuário.

- Divide uma aplicação web em partes independentes, facilitando o


desenvolvimento e a manutenção.
- Possibilita a implantação e atualização contínua de partes
específicas da aplicação sem afetar o aplicativo como um todo.

- Permite que equipes trabalhem de forma independente em


diferentes partes da aplicação.

- Integra diferentes tecnologias e frameworks para desenvolver


microfrontends, como React, Angular, Vue.js, entre outros.

## Habilidade Auxiliar: Infraestrutura e Back-end

- [ ] **Git e GitHub - Fundamentos**:

- Git é um sistema de controle de versão distribuído gratuito e de


código aberto projetado para lidar com tudo, desde projetos pequenos
a muito grandes com velocidade e eficiência.

- GitHub é um serviço de hospedagem para desenvolvimento de


software e controle de versão usando Git.

- Criar um repositório

- Clonar um repositório

- Fazer commit, push e pull de e para o repositório

- Reverter um commit

- Criar branches e pul requests

- Lidar com merge e conflitos

- [ ] **HTTP - Fundamentos**:

- HTTP significa Hyper Text Transfer Protocol. A comunicação entre


computadores cliente e servidores web é feita enviando solicitações
HTTP e recebendo respostas HTTP.

- Entender a diferença dos verbos HTTP

- Testar os requests e ver os status codes no navegador

- Saber fazer uma requisição HTTP na linha de comando com WGET

- Baixar uma imagem com WGET

- Fazer um post

- [ ] **JSON**:

- JSON significa JavaScript Object Notation (notação de objeto


JavaScript). É um formato de texto para armazenar e transmitir
dados.
- Criar um objeto

- Transformar um objeto em uma string

- Transformar uma string em objeto

- Manipular um objeto

- [ ] **Linha de comando - Fundamentos**:

- CLI é um programa de linha de comando que aceita entradas de


texto para executar funções do sistema operacional.

- Conhecer os principais comandos

- [ ] **Cloud - Fundamentos**:

- Cloud, ou computação em nuvem é a distribuição de serviços de


computação pela Internet usando um modelo de preço pago conforme
o uso. Uma nuvem é composta de vários recursos de computação,
que abrangem desde os próprios computadores (ou instâncias, na
terminologia de nuvem) até redes, armazenamento, bancos de dados
e o que estiver em torno deles. Ou seja, tudo o que normalmente é
necessário para montar o equivalente a uma sala de servidores, ou
mesmo um data center completo, estará pronto para ser utilizado,
configurado e executado.

- Conhecer a diferença entre IaaS, PaaS e SaaS

- Conhecer os maiores provedores de cloud

- Especializar-se em algum provedor

- [ ] **YARN**:

- Yarn é um gerenciador de pacotes para seu código. Ele permite


que você use e compartilhe código com outros desenvolvedores. O
código é compartilhado por meio de algo chamado pacote (às vezes
chamado de módulo). Um pacote contém todo o código que está
sendo compartilhado, bem como um arquivo package.json que
descreve o pacote.

- Gerenciar pacotes

- Gerenciar dependências

- Instalação de pacotes offline

- Comandos

- Arquivo yarn.lock

## Habilidade Auxiliar: UX e Design


- [ ] **Design System**:

- Um Design System (sistema de design) é uma coleção de


componentes reutilizáveis, guiados por padrões claros, que podem
ser colocados juntos para construir aplicações.

- Criar e manter bibliotecas que serão consumidas e usadas como


padrão para a construção de um projeto

- Design tokens

- Estilos fundamentais

- Construção de componentes

- Microinterações

- Documentação

- [ ] **Figma - Fundamentos**:

- Figma é uma aplicação web colaborativa para design de


interfaces. O conjunto de recursos do Figma se concentra na interface
do usuário e no design da experiência do usuário, com ênfase na
colaboração em tempo real, utilizando uma variedade de editores de
gráficos vetoriais e ferramentas de prototipagem.

- Criar layouts de páginas e componentes

- [ ] **Componentes de design**:

- Conhecer os componentes descrevem um layout ou interface

- [ ] **Sistemas de cores**:

- Definir uma paleta de cores que faça sentido para determinada


interface

- [ ] **Como usar fontes**:

- Escolher a fonte mais adequada para determinado projeto

# Java

## Nivel 1

- [ ] **Lógica de Programação**:

- Aprender lógica de programação, fundamental para o


desenvolvimento de software

- Conhecer as bases para se criar, analisar e resolver problemas


computacionais de forma estruturada e eficiente
- Entender o que são tipos de dados

- Declarar variáveis, considerando os diferentes tipos

- Conhecer os operadores de atribuição e comparação

- Usar estruturas condicionais

- Usar estruturas de repetição e laços

- Usar funções, passando parâmetros e argumentos

- [ ] **Java - Fundamentos**:

- Java é uma linguagem de programação amplamente usada para


codificar aplicações Web. Java é uma linguagem multiplataforma,
orientada a objetos e centrada em rede que pode ser usada como
uma plataforma em si. É uma linguagem de programação rápida,
segura e confiável para codificar tudo, desde aplicações móveis e
software empresarial até aplicações de big data e tecnologias do
servidor.

- Conhecer os tipos primitivos

- Declarar variáveis, considerando os diferentes tipos

- Usar estruturas condicionais ('if', 'else')

- Conhecer os operadores de atribuição e comparação

- Usar estruturas de repetição e laços ('while', 'for')

- Usar funções, passando parâmetros e argumentos

- Manipular métodos

- Manipular arrays e listas

- Obter dados de uma API

- Criar construtores

- [ ] **Conceitos de Orientação a Objetos**:

- A Programação Orientada a Objetos é um paradigma de


programação de software baseado na composição e interação entre
diversas unidades chamadas de 'objetos' e as classes, que contêm
uma identidade, propriedades e métodos). Ela é baseada em quatro
componentes da programação: abstração digital, encapsulamento,
herança e polimorfismo.

- Como funcionam objetos

- Criar e utilizar construtores


- O que são classes

- Criar e utilizar métodos

- Como funciona encapsulamento

- O que é herança

- O que é polimorfismo

- Como funcionam interfaces

- O que são abstrações

- [ ] **Java - Manipulação de Erros**:

- O tratamento de erros refere-se aos procedimentos de resposta e


recuperação de condições de erro presentes em um aplicativo de
software. Em outras palavras, é o processo composto de antecipação,
detecção e resolução de erros de aplicação, de programação ou de
comunicação.

- Tratar exceções pré-definidas

- Uso de 'try' e 'catch'

- Criar exceções específicas

- Fazer o processo de Debug

- [ ] **Java - Coleções**:

- Uma coleção representa um grupo de objetos, conhecidos como


seus elementos. Eles são como recipientes que agrupam vários itens
em uma única unidade. Algumas coleções permitem a duplicação de
elementos e outras não. Algumas são ordenadas e outras não
ordenadas.

- Aprender os usos e diferenças entre List, Set e Map

- Aprender os usos e diferenças entre Equals e HashCode

- Saiba trabalhar com ArrayList, LinkedList ou Vector

- Classes Wrappers

- [ ] **Java - Testes**:

- O teste de software é o processo de avaliação e verificação de que


um software realmente faz o que deveria fazer. Os benefícios dos
testes incluem a prevenção de bugs, a redução dos custos de
desenvolvimento e a melhoria do desempenho.

- Usar testes unitários


- Usar testes de integração

- Usar testes de comportamento (behavior)

- Usar mocks

- [ ] **Java - Pacotes**:

- Um pacote (package) em Java é usado para agrupar classes


relacionadas, de forma semelhante a uma pasta em um diretório de
arquivos. Os pacotes são usados para evitar conflitos de nomes e
para escrever um código de melhor manutenção.

- Use imports e organize o seu código através de packages

- Conhecer a java.lang

- Entender a imutabilidade e a classe String

- Entender a classe java.lang.Object

- Conhecer a java.io

- [ ] **Estruturas de Dados**:

- No contexto dos computadores, uma estrutura de dados é uma


forma específica de armazenar e organizar os dados na memória do
computador para que esses dados possam ser facilmente
recuperados e utilizados de forma eficiente quando necessário
posteriormente.

- Conhecer as principais estruturas de dados

- Implementar as principais estruturas de dados

## Nivel 2

- [ ] **JVM**:

- Máquina virtual Java (em inglês, Java Virtual Machine, JVM) é um


programa que carrega e executa os aplicativos Java, convertendo os
bytecodes em código executável de máquina. A JVM é responsável
pelo gerenciamento dos aplicativos, à medida que são executados.
Graças à máquina virtual Java, os programas escritos em Java podem
funcionar em qualquer plataforma de hardware e software que possua
uma versão da JVM, tornando assim essas aplicações independentes
da plataforma onde funcionam.

- Entender como funciona a máquina virtual do Java

- [ ] **Java - Gerenciamento da Memória**:


- Em Java, o gerenciamento de memória é o processo de alocação e
desalocação de objetos, chamado de gerenciamento de memória.
Java faz o gerenciamento de memória automaticamente. Java usa um
sistema de gerenciamento automático de memória chamado de
Garbage Collector (coletor de lixo). Assim, não somos obrigados a
implementar a lógica de gerenciamento de memória em nossa
aplicação.

- Entender como funciona a memória e seu gerenciamento em Java

- Entender como funciona a memória o Garbage Collector

- [ ] **Spring Framework**:

- O Spring é um framework open source para a plataforma Java.


Trata-se de um framework não intrusivo, baseado nos padrões de
projeto (design patterns) de inversão de controle (IoC) e injeção de
dependência. No Spring o contêiner se encarrega de "instanciar"
classes de uma aplicação Java e definir as dependências entre elas
através de um arquivo de configuração em formato XML, inferências
do framework, o que é chamado de auto-wiring ou ainda anotações
nas classes, métodos e propriedades. Dessa forma, o Spring permite o
baixo acoplamento entre classes de uma aplicação orientada a
objetos.

- Entender o conceito de Injeção de Dependências

- Entender o padrão MVC

- Usar o Spring Data para manipular dados

- [ ] **Spring Boot**:

- O Spring Boot é um framework de código aberto baseado em Java


usado para criar microserviços com o Spring Framework. Ele é usado
para construir aplicações Spring independentes e prontas para
produção.

- Criar aplicações Spring standalone

- Usar os servidores HTTP embutidos

- [ ] **Build tools Java**:

- Uma build tool é um sistema que permite automatizar todas as


tarefas rotineiras de um projeto de uma forma organizada e que evite
que o desenvolvedor tenha que perder tempo. Em outras palavras,
adicionar uma nova biblioteca, realização de testes, empacotamento
e deploy, ou até mesmo, a compatibilidade entre as diversas IDEs são
tarefas facilmente resolvidas com uma build tool.
- Conheça as principais ferramentas de build do Java, como Maven,
Jenkins, Apache Ant, Gradle, etc., e como usá-las

- [ ] **Java - Persistência**:

- O conceito de "persistência de dados" refere-se a garantir que as


informações inseridas na aplicação serão armazenadas em um meio
em que possam ser recuperadas de forma consistente. Ou seja, são
registros permanentes e que não são perdidos quando há o
encerramento da sessão.

- Entender sobre JDBC e JPA

- Usar frameworks como Spring Data e Hibernate

- Comunicar-se com um banco de dados relacional

- Entender a diferença entre relacionamentos EAGER e LAZY

- Planejar queries com join fetch

- Encapsular o acesso em um DAO

- Entender como a memória funciona nessa situação

## Nivel 3

- [ ] **Arquitetura de Microsserviços**:

- Microsserviços são uma abordagem de arquitetura na qual o


software consiste de pequenos serviços independentes que se
comunicam entre si e são organizados de acordo com seus domínios
de negócio.

- Aprender o conceito de arquitetura planejada para microsserviços

- Realizar a comunicação usando APIs

- Melhorar a escalabilidade de um sistema

- [ ] **Java - Concorrência**:

- Programação concorrente é um paradigma de programação para a


construção de programas que fazem uso da execução simultânea de
várias tarefas computacionais interativas, que podem ser
implementadas como programas separados ou como um conjunto de
threads criadas por um único programa.

- Executar tarefas simultaneamente

- Colocar tarefas para aguardar até que um determinado evento


ocorra
- Entender como a memória funciona nessa situação

- [ ] **Contêineres**:

- Os contêineres são pacotes de software que contêm todos os


elementos necessários para serem executados em qualquer
ambiente. Gerenciamento de contêineres é uma área crucial na
computação em nuvem e DevOps, que envolve o uso de tecnologias
para automatizar o processo de criação, implantação, escalonamento
e monitoramento de contêineres. Contêineres são unidades de
software padronizadas que permitem aos desenvolvedores empacotar
todas as dependências de um aplicativo (código, bibliotecas,
configurações, etc.) em um único pacote. Isso permite que o
aplicativo seja executado de forma consistente em qualquer ambiente
de infraestrutura.

- A tecnologia de contêineres, como exemplificada pelo Docker,


fornece um ambiente consistente e portátil para desenvolvimento,
teste e implantação de aplicativos, o que é vital para o trabalho
eficiente de engenharia de dados. Além disso, o Kubernetes, um
sistema de orquestração de contêineres, permite o gerenciamento, a
automação e a escalabilidade de aplicações baseadas em contêineres
em ambientes de produção. Dominar esses conceitos e tecnologias
possibilita a engenheiros de dados construir e manter pipelines de
dados eficientes e confiáveis.

- O Kubernetes (também conhecido como k8s ou kube) é uma


plataforma de orquestração de containers open source que
automatiza grande parte dos processos manuais necessários para
implantar, gerenciar e escalar aplicações em containers.

- Isolar seu software para funcionar independentemente

- Implantar software em clusters

- Modularizar seu sistema em pacotes menores

- Conhecer a plataforma Docker

- Conhecer Kubernetes

- [ ] **Kafka**:

- O Apache Kafka é uma plataforma distribuída de transmissão de


dados que é capaz de publicar, subscrever, armazenar e processar
fluxos de registro em tempo real. Essa plataforma foi desenvolvida
para processar fluxos de dados provenientes de diversas fontes e
entregá-los a vários clientes.
- Utilizar o Kafka para comunicação assíncrona

- Criar microsserviços com Kafka

- Criar produtores e consumidores

- Entender como usar o Kafka para paralelismo e execução


serializada

- Obter garantias relativas ao envio ou entrega das mensagens

## Habilidade Auxiliar: Infraestrutura

- [ ] **Git e GitHub - Fundamentos**:

- Git é um sistema de controle de versão distribuído gratuito e de


código aberto projetado para lidar com tudo, desde projetos pequenos
a muito grandes com velocidade e eficiência.

- GitHub é um serviço de hospedagem para desenvolvimento de


software e controle de versão usando Git.

- Criar um repositório

- Clonar um repositório

- Fazer commit, push e pull de e para o repositório

- Reverter um commit

- Criar branches e pul requests

- Lidar com merge e conflitos

- [ ] **HTTP - Fundamentos**:

- HTTP significa Hyper Text Transfer Protocol. A comunicação entre


computadores cliente e servidores web é feita enviando solicitações
HTTP e recebendo respostas HTTP.

- Entender a diferença dos verbos HTTP

- Testar os requests e ver os status codes no navegador

- Saber fazer uma requisição HTTP na linha de comando com WGET

- Baixar uma imagem com WGET

- Fazer um post

- [ ] **JSON**:

- JSON significa JavaScript Object Notation (notação de objeto


JavaScript). É um formato de texto para armazenar e transmitir
dados.
- Criar um objeto

- Transformar um objeto em uma string

- Transformar uma string em objeto

- Manipular um objeto

- [ ] **Linha de comando - Fundamentos**:

- CLI é um programa de linha de comando que aceita entradas de


texto para executar funções do sistema operacional.

- Conhecer os principais comandos

- [ ] **Cloud - Fundamentos**:

- Cloud, ou computação em nuvem é a distribuição de serviços de


computação pela Internet usando um modelo de preço pago conforme
o uso. Uma nuvem é composta de vários recursos de computação,
que abrangem desde os próprios computadores (ou instâncias, na
terminologia de nuvem) até redes, armazenamento, bancos de dados
e o que estiver em torno deles. Ou seja, tudo o que normalmente é
necessário para montar o equivalente a uma sala de servidores, ou
mesmo um data center completo, estará pronto para ser utilizado,
configurado e executado.

- Conhecer a diferença entre IaaS, PaaS e SaaS

- Conhecer os maiores provedores de cloud

- Especializar-se em algum provedor

- [ ] **SQL - Fundamentos**:

- SQL (Structured Query Language, traduzindo, Linguagem de


Consulta Estruturada) é uma linguagem de programação padronizada
que é usada para gerenciar bancos de dados relacionais e realizar
várias operações sobre os dados neles contidos.

- Conhecer os comandos mais comuns do SQL

- Usar SELECT para consultar uma tabela

- Usar INSERT para inserir dados em uma tabela

- Usar UPDATE para atualizar uma tabela

- Usar DELETE para remover dados de uma tabela

- Usar JOIN para conectar os dados de múltiplas tabelas

- Conhecer as cláusulas (FROM, ORDER BY, etc)


## Habilidade Auxiliar: Boas práticas

- [ ] **SOLID**:

- O Solid possui cinco princípios considerados como boas práticas no


desenvolvimento de software que ajudam os programadores a
escrever os códigos mais limpos, separando as responsabilidades,
diminuindo acoplamentos, facilitando na refatoração e estimulando o
reaproveitamento do código.

- [ ] **Clean Architecture**:

- A Clean Architecture (Arquitetura Limpa) é uma forma de


desenvolver software, de tal forma que apenas olhando para o código
fonte de um programa, você deve ser capaz de dizer o que o
programa faz.

- [ ] **Design Patterns**:

- Na engenharia de software, um "padrão de projeto" (Design


Pattern em inglês) é uma solução geral e reutilizável para um
problema que ocorre normalmente dentro de um determinado
contexto de projeto de software.

- Conhecer e aplicar os principais Design Patterns

- [ ] **Clean Code**:

- Aplicar técnicas simples que visam facilitar a escrita e leitura de


um código

- Refatorar seu código para que fique mais claro

- [ ] **Conceitos de Design Orientado a Domínio (Domain-Driven


Design - DDD)**:

- O Design Orientado a Domínio (DDD) é uma abordagem ao projeto


e desenvolvimento de software que é primeiramente informado pelos
requisitos de negócios. Os componentes do programa (objetos,
classes, matrizes, etc.) indicam a indústria, setor ou domínio
empresarial em que o negócio opera.

- Modelar domínios de forma efetiva

- Basear projetos complexos em modelos do domínio

- Conhecer os blocos de construção de DDD

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy