Vamos lá.
Mapa de aprendizado Front-End.
13.02.2019
🙏🙌
Um pouco sobre mim.
http://ameliabusinessdirectory.com
http://ameliabusinessdirectory.com
http://ameliabusinessdirectory.com
http://ameliabusinessdirectory.com
Knowledge Share.
Knowledge Share.
● Pessoas com diferentes experiências.
● Nivelar e treinar equipe.
● Formatos e horários.
● Apoio da empresa.
● Dever de casa no github.
● Livre x guiado.
O objetivo desta palestra não é tentar explicar tudo,
mas ser uma inspiração para que você pesquise e
se aprofunde nos pontos que quiser.
Mapa de aprendizado Front-End.
12 seções.
● Computador e Programação.
● Internet e Network.
● Requests e Servidores.
● Browser, HTML, CSS e Javascript.
● Fluxo de renderização.
● Performance.
Quando se aprende algo, uma das
melhores coisas é conectar esse
conhecimento com o que já está
estabelecido em você.
Às vezes, como programadores
Front-End, ficamos isolados em nosso
conhecimento, sem conectar e dialogar
com pessoas de outros ramos.
Conectar o Front-End com a vida em
geral e com as outras partes técnicas.
Front-End e a vida lá fora.
Introdução ao mapa.
Um possível caminho até o front-end developer.
1. Programador.
2. Webmaster.
3. Back-end e DBA.
4. Infraestrutura, DBA, back-end e front-end.
Agora temos dois conceitos mais ou
menos definidos, computador e
front end developer.
Aparelhos • IHC • Navegador • APIs • FE
12 seções.
● Computador e Programação.
● Internet e Network.
● Requests e Servidores.
● Browser, HTML, CSS e Javascript.
● Fluxo de renderização.
● Performance.
caiovaccaro.com.br/TechDomain.html
Computador e Programação.
Computador e Programação.
● Entender o básico.
● Processador, threads.
● Concorrência e paralelismo.
● Memória, estrutura de dados e algoritmos.
● GPU, animações e CSS.
● HD x RAM.
● Compilação.
https://en.wikipedia.org/wiki/Thread_(computing)
https://en.wikipedia.org/wiki/Pointer_(computer_programming)
Rodger Anderson - https://slideplayer.com/slide/4394682/
http://cs-study.blogspot.com/2012/11/complete-binary-tree.htm
Computador e Programação.
● Entender o básico.
● Processador, threads.
● Concorrência e paralelismo.
● Memória, estrutura de dados e algoritmos.
● GPU, animações e CSS.
● HD x RAM.
● Compilação.
Ahmet Cengizhan Dirican and Mehmet Gokturk
https://www.intechopen.com/books/human-computer-interaction/attentive-computing
Linguagens de Programação.
● Matemático, Funcional.
● Enterprise, Orientação a objeto.
● Interface gráfica, MVC.
No funcional o programa é mais
um fluxo de dados em transformação,
sem muita mutabilidade ou
instruções imperativas.
Orientação a objeto, é encapsular as
responsabilidades e imperativamente
instruir as partes a executar
seus métodos.
No MVC, separamos dados, lógica e
apresentação em diferentes camadas
com regras específicas.
Conceitos básicos.
● Estrutura de dados e algoritmos.
● Garbage collection.
● Código bloqueante e não bloqueante.
● Síncrono e asíncrono.
Estrutura de dados e algoritmos são
formas de organizar ou manipular dados
na memória, com diferentes benefícios
para cada caso.
Garbage collection é o processo
automático ou manual de limpar
memória que não é mais necessária
no programa.
Código bloqueante e não bloqueante, a
main thread do programa executa 1
instrução por vez e aguarda o seu
resultado ou não.
Conceitos mais complexos.
● Como funciona um Virtual DOM.
● Por que imutabilidade é muito inteligente.
● Como WebAssembly é super rápido.
Internet e Network.
https://www.pccwglobal.com
Saber um pouco de internet e network
ajuda na hora de debugar problemas de
performance. Muita coisa acontece
antes da renderização do seu código
começar no navegador.
Também te ajuda a não ficar refém dos
outros. Como o front-end é o último
profissional na “linha de produção”,
sempre tem gente que tenta empurrar
problemas pro front.
Internet e Network.
● ISPs.
● Cliente x Servidor.
● IPs.
● DNS.
● Request x response.
Requests e Servidores.
Requests e Servidores.
● URLs.
● Protocolos.
● APIs.
● Tipos.
● Servidor e nuvem.
● Linguagens de back-end.
https://doepud.co.uk/blog/anatomy-of-a-url
RPC possibilita mais de um recurso ou
entidade por chamada. Por um lado é
ruim para cache e acoplado, mas por
outro é uma chamada por view e com
respostas pequenas.
example.com/list?offset=0&size=5
REST tem um endpoint por entidade,
mas apesar de ser bom para cache e
desacoplado, exige muitas chamadas
por view e com respostas grandes.
example.com/list/1234
example.com/user/3
A API se correlaciona muito com o
modelo de dados e de negócio do seu
projeto, e se não for bem feita
provavelmente o código será confuso,
com débito técnico e refação.
Requests e Servidores.
● URLs.
● Protocolos.
● APIs.
● Tipos.
● Servidor e nuvem.
● Linguagens de back-end.
Browser, HTML, CSS e Javascript.
Browser, HTML, CSS e Javascript.
● Device.
● Sistema operacional.
● Browser.
Browser, HTML, CSS e Javascript.
● Casca, UI.
● Engine interna.
● Engine de renderização.
● Networking.
● UI Backend.
● Interpretador de Javascript.
● Armazenamento de dados.
https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/
Fluxo de renderização.
O DOM nada mais é que um conjunto de
classes e objetos, com propriedades e
métodos. A especificação vive no W3C,
com types, interfaces e regras.
Fluxo de renderização.
● Engines.
● Parsing.
● DOM tree.
● Layout tree.
● Paint.
https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/
Fluxo de renderização.
● Box model.
● Posicionamento.
● Layers.
● Boas práticas de como escrever HTML e CSS.
E o meu framework javascript?
Colabora com a equipe, manutenção e
boas práticas. Tecnicamente não é
estritamente necessário.
https://codeburst.io/the-2018-web-developer-roadmap-826b1b806e8d
https://frontendmasters.com/books/front-end-handbook/2018/tools.html
Performance.
Performance.
● Entender o seu projeto.
● Conhecer o que acontece antes da renderização no browser.
● Isolar os problemas.
Primeiro é importante estabelecer uma
meta, dependendo do seu projeto e dos
usuários, estabelecer um performance
budget, um orçamento.
Pode ser bem simples como o tempo
máximo de carregar uma página ou o
tempo de animações, de interações,
feedback e carregar páginas.
https://developers.google.com/web/fundamentals/performance/rail
Performance.
● Backend, cache, API.
● Mínimo de informação que você precisa.
● Assets.
● CDN.
● Lazy loading, async e defer.
● Critical rendering path.
● Fontes.
Por último você investe tempo em
otimizar o uso de memória no javascript.
É a última coisa que vai impactar o
usuário, a não ser que tenha um memory
leak gigante.
Para investigar você usa o developer
tools e usa a aplicação, debugando o
uso de memória nas suas funções e
testando se tem formas mais eficientes
de escrever o código.
Conclusão.
De baixo para cima,
ou de cima para baixo?
Algumas coisas que acredito.
● Não troque seu caráter por dinheiro.
● Trabalho remoto.
● “Don't stay safe. Stay free.”
● Tecnologia não é neutra, seja consciente.
Obrigado .
caiovaccaro.com.br

Mapa de aprendizado Front End