![Mind Map: Se Preparando para a Jornada](https://www.mindmeister.com/image/xlarge/2953658572/mind-map-se-preparando-para-a-jornada.png)
1. Introdução ao Módulo
1.1. Quem sou eu
1.1.1. Isaac Pontes
1.1.2. Bacharel em Sistemas de Informação
1.1.3. CTO e Instrutor da OneBitCode
1.2. O que você vai aprender?
1.2.1. O que é a web
1.2.2. O que faz um programador
1.2.3. O que é back-end, front-end e full-stack
1.2.4. Conhecimentos básicos da computação
1.2.5. Como usar um editor de código
2. O que é a web e como ela funciona
2.1. É uma rede que conecta computadores
2.1.1. Baseada em uma arquitetura **cliente-servidor**
2.1.2. Computadores são encontrados na rede através de um **endereço de IP**, por exemplo: http://74.125.196.94/
2.1.3. Endereços de IP podem ser mapeados para nomes humanamente legíveis, os **nomes de domínio**
2.2. O que acontece quando abrimos um site?
2.2.1. Cliente solicita informações
2.2.2. Servidor processa a solicitação
2.2.3. Servidor responde a solicitação
2.2.4. Cliente recebe a resposta
2.3. Essa comunicação acontece através de protocolos
2.3.1. HTTP: páginas html
2.3.2. SMTP: emails
2.3.3. FTP: transferência de arquivos
2.3.4. etc
3. Programador e seus super poderes
3.1. Programador é o profissional que desenvolve software
3.2. Software é um conjunto de instruções para o computador
3.3. O que um programador pode criar?
3.3.1. Websites, landing pages, etc
3.3.2. Aplicações GUI (web, desktop, mobile)
3.3.3. Aplicações CLI
3.3.4. Sistemas embarcados (que controlam máquinas e dispositivos específicos)
3.3.5. Scripts de automação, chatbots e outros utilitários
3.3.6. E muitos outros tipos de software
3.4. Como é o trabalho de um programador?
3.4.1. Presencial, híbrido ou remoto
3.4.2. Fixo (CLT), prestador de serviços (PJ) ou freelancer
3.4.3. E também pode optar por diferentes especializações (front-end, back-end, mobile, embarcados, etc)
3.5. Como é a remunaração?
3.5.1. Pode variar bastante, desde um salário mínimo até ganhos de mais de R$ 30K por mês
3.6. Níveis de um programador
3.6.1. Júnior
3.6.2. Pleno
3.6.3. Sênior
4. Desenvolvimento front-end, back-end e full-stack
4.1. Há alguns anos, o desenvolvimento web era mais simples e projetos muitas vezes eram desenvolvidos por um único programador ou por equipes bem pequenas
4.2. Com o passar do tempo os projetos foram ficando mais complexos, levando à necessidade de dividir as responsabilidades
4.3. Front-end
4.3.1. Responsável pelo desenvolvimento da aplicação do cliente, ou seja, a parte que roda no navegador do usuário
4.3.2. Cuida de todo o visual do site ou aplicação e da realização de requisições ao back-end para obter os dados da aplicação
4.3.3. Trabalha principalmente com HTML, CSS e JavaScript. Também utiliza frameworks como Vue, React e Next.js
4.4. Back-end
4.4.1. Responsável pelo desenvolvimento da aplicação do servidor, ou seja, a parte que o usuário "não vê"
4.4.2. Cuida de questões como integração com bancos de dados e criação de APIs para servir os dados para o front-end
4.4.3. Pode trabalhar com diferentes linguagens de programação, como JavaScript (com Node.js), Ruby e Pyhton, bancos de dados SQL e NoSQL, entre outras tecnologias
4.5. Full-stack
4.5.1. É o profissional que entende todas as partes do desenvolvimento web
4.5.2. Pode trabalhar tanto como front-end quanto como back-end, e também pode desenvolver uma aplicação por completo "sozinho"
5. Sistemas Operacionais
5.1. É o principal software de um computador
5.2. É responsável por permitir que o usuário seja capaz de interagir com o hardware
5.2.1. Executar outros softwares
5.2.2. Gerenciar o uso da memória, o armazenamento, o processamento, o sistema de arquivos, etc
5.2.3. Por exemplo, você sabe o que realmente acontece ao executar um arquivo no seu PC?
5.2.3.1. Como os arquivos são armazenados em disco, o SO começará encontrando-o no disco
5.2.3.2. O arquivo então é carregado para a memória RAM, que é mais eficiente que a memória secundária (HD, SSD, etc)
5.2.3.3. Depois disso o arquivo será lido e executado pelo processador
5.2.3.4. Agora imagine isso acontecendo continuamente e em paralelo
5.3. Os 3 SOs mais usados por programadores são o MacOS, o Linux e o Windows
5.3.1. Todos os módulos podem ser feitos com qualquer um dos SOs
5.3.2. Minha recomendação pessoal: Linux
5.3.3. Opção extra: Linux no Windows através do WSL
6. Navegador e Ferramentas do Desenvolvedor
6.1. Navegadores recomendados: Firefox, Edge e Chrome (ou outros navegadores baseados em Chromium)
6.2. DevTools ou Ferramentas do Desenvolvedor são recursos dos navegadores para ajudar a analisar e testar uma página web
6.3. Pode ser aberto
6.3.1. pressionando **F12**
6.3.2. com o atalho **Ctrl + Shift + i**
6.3.3. clicando em um elemento da página com o botão direito do mouse e escolhendo **Inspecionar**
7. Conhecendo o Editor de Código
7.1. Baixe o Visual Studio Code em: https://code.visualstudio.com
8. Conhecendo o Terminal
8.1. O terminal é a forma mais simples de interagir com o SO
8.2. Com ele podemos enviar comandos diretamente para o SO
8.3. Muitas das tarefas que fazemos através da interface gráfica podem ser feitas pelo terminal, como acessar pastas, abrir arquivos, executar programas, etc
8.4. Comandos essenciais
8.4.1. pwd: exibe o caminho do diretório atual
8.4.2. ls: lista o conteúdo do diretório atual
8.4.3. mkdir: cria um diretório vazio
8.4.4. cd: muda de diretório
8.4.5. ni ou touch: cria um arquivo vazio
8.4.6. cp: copia um arquivo
8.4.7. mv: move um arquivo
8.4.8. rm: remove um arquivo ou diretório
9. Encerramento
9.1. O que você aprendeu
9.1.1. O que é a web
9.1.2. O que faz um programador
9.1.3. O que é back-end, front-end e full-stack
9.1.4. Conhecimentos básicos da computação
9.2. Ferramentas que você instalou
9.2.1. Visual Studio Code
9.2.2. Terminal (PowerShell)
9.2.3. Node.js e npm