SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Semelhante a Mapa de aprendizado Front End

Aprenda a ser um webmaster
Aprenda a ser um webmasterAprenda a ser um webmaster
Aprenda a ser um webmaster
Jeferson Souza
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013
Leandro Silva
 

Semelhante a Mapa de aprendizado Front End (20)

Adianti Framework - Desenvolvendo sistemas web de forma ágil
Adianti Framework - Desenvolvendo sistemas web de forma ágil Adianti Framework - Desenvolvendo sistemas web de forma ágil
Adianti Framework - Desenvolvendo sistemas web de forma ágil
 
Django
DjangoDjango
Django
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
 
Como encarar o desenvolvimento front-end
Como encarar o desenvolvimento front-endComo encarar o desenvolvimento front-end
Como encarar o desenvolvimento front-end
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Aprenda a ser um webmaster
Aprenda a ser um webmasterAprenda a ser um webmaster
Aprenda a ser um webmaster
 
Machine Learning Black Boxes
Machine Learning Black BoxesMachine Learning Black Boxes
Machine Learning Black Boxes
 
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho DuroTDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest Framework
 
#Moving br workshop
#Moving br workshop#Moving br workshop
#Moving br workshop
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internet
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
 
Sua aplicação nas nuvens com open shift
Sua aplicação nas nuvens com open shiftSua aplicação nas nuvens com open shift
Sua aplicação nas nuvens com open shift
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de SoftwareDextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
 

Mapa de aprendizado Front End