Slide 1

Slide 1 text

O Ecossistema Web Um review da maior plataforma universal de desenvolvimento. @fernahh

Slide 2

Slide 2 text

@fernahh fernahh.com

Slide 3

Slide 3 text

ContaAzul contaazul.com/vagas

Slide 4

Slide 4 text

2011 Meu primeiro emprego como desenvolvedor foi em uma agência de comunicação, onde tinha um “setor de web”.

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

A web como plataforma Uma das maneiras mais fáceis de se aprender a programar.

Slide 7

Slide 7 text

1. Um arquivo HTML

Slide 8

Slide 8 text

1. Um arquivo HTML 2. Um browser

Slide 9

Slide 9 text

1. Um arquivo HTML 2. Um browser Zero downloads. Zero instalações. Zero configurações.

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

HTML é uma das melhores linguagens para criar conteúdo. É acessível, expressiva e simples.

Slide 12

Slide 12 text

O CSS, de longe, é uma das melhores maneiras de criar layouts ricos.

Slide 13

Slide 13 text

O JavaScript é a linguagem mais popular do mundo. Nos permite criar aplicações ricas de grande valor aos usuários.

Slide 14

Slide 14 text

Desktop Celulares Tablets Smart TVs Video games ...

Slide 15

Slide 15 text

O sonho do Java, de estar em todos os lugares, foi alcançado pela web.

Slide 16

Slide 16 text

“Se queres aprender o futuro, estuda o passado” - Confúcio

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

https://home.cern/topics/birth-web

Slide 19

Slide 19 text

Sir Tim Berners-Lee Criou a web em 1990. O objetivo? Compartilhar documentos.

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

A cada 2 dias, em 2010, nós criamos a mesma quantidade de informação criada até 2003! https://techcrunch.com/2010/08/04/schmidt-data

Slide 22

Slide 22 text

Documentos Grupo de páginas que seguem o mesmo padrão de comportamento e estilo.

Slide 23

Slide 23 text

/home

Slide 24

Slide 24 text

/home /products

Slide 25

Slide 25 text

/home /products /product/1

Slide 26

Slide 26 text

Aplicações Ao invés de várias páginas, é apenas uma com estados diferentes.

Slide 27

Slide 27 text

/signup

Slide 28

Slide 28 text

/signup /step/1

Slide 29

Slide 29 text

/signup /step/1 /step/2

Slide 30

Slide 30 text

1993, 1994 e 1995 Surgimento do CSS e JavaScript. Porém, as tecnologias web nasceram sem especificação. Cada browser tinha a sua implementação do HTML.

Slide 31

Slide 31 text

2001 Apesar de ter suporte, a web quase não tinha imagens. A maioria dos portais tinham apenas imagens e gifs.

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

A era dos plugins Para assistir um vídeo ou conteúdo interativo na web, era necessário usar plugins de tecnologias proprietárias.

Slide 34

Slide 34 text

Adobe Flash Microsoft Silverlight Adobe Shockwave Player Applet Java RealPlayer

Slide 35

Slide 35 text

WHATWG Fundado por membros da Apple, Mozilla e Opera, com objetivo de criar uma nova direção para o HTML.

Slide 36

Slide 36 text

O HTML5 é mais do que uma especificação. É um conjunto de tecnologias abertas.

Slide 37

Slide 37 text

Semântica Storage Geolocation ...

Slide 38

Slide 38 text

100 75 50 25 0 - Javascript - Flash - Silverslight - Applet

Slide 39

Slide 39 text

“O maior erro que cometemos como empresa foi apostar no HTML5 ao invés de tecnologias nativas.” - Mark Zuckerberg, 2012

Slide 40

Slide 40 text

HTTP Muitos dos approaches criados e usados na web, são para contornar problemas deste protocolo.

Slide 41

Slide 41 text

Inicia uma conexão TCP GET /foo.html Processa Fecha a conexão.

Slide 42

Slide 42 text

http://bit.ly/19uEIk0

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

uma request! só 2KB!

Slide 45

Slide 45 text

❖ 252 requests ❖ 2.5mb de transferência

Slide 46

Slide 46 text

“640k são mais que suficientes para qualquer um”

Slide 47

Slide 47 text

Inicia uma conexão GET /foo.html Fecha a conexão. GET /bar.css

Slide 48

Slide 48 text

Múltiplos hosts No HTTP 1.1, podemos abrir de 4 a 8 conexões por origem.

Slide 49

Slide 49 text

Surgimento do NodeJS Além de levar o JavaScript para o servidor, permitiu desenvolvedores criarem ferramentas melhores.

Slide 50

Slide 50 text

script-x.js script-y.js script-z.js

Slide 51

Slide 51 text

script-x.js script-y.js script-z.js

Slide 52

Slide 52 text

script-x.js script-y.js script-z.js script.min.js

Slide 53

Slide 53 text

HTTP/2 Depois de 16 anos, saiu a nova versão do protocolo HTTP, com importantes mudanças para a web.

Slide 54

Slide 54 text

❖ GZIP é padrão obrigatório. ❖ Headers são binários e comprimidos #1 Compressão automática

Slide 55

Slide 55 text

HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Status: 200 OK X-UA-Compatible: IE=Edge,chrome=1 ETag: "4618f5c69dfa0ee8cb492830482c0bbe" Cache-Control: max-age=0, private, must-revalidate Set-Cookie: _fernahh_session=BAh7B0kiD3Nlc3Npb25f…. Date: Sat, 21 Mar 2015 19:23:51 GMT Server: nginx/1.6.0 + Phusion Passenger 4.0.42 ...

Slide 56

Slide 56 text

0010101010101010101 01010101 010101010100 0101010101 01010101101 010101010 ?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q?_?*f0 ?{{?un?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q? _?*f0?{{?un,1?T?.?[mŚ?T?%??????????0

Slide 57

Slide 57 text

0010101010101010101 01010101 010101010100 0101010101 01010101101 010101010 ?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q?_?*f0 ?{{?un?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q? _?*f0?{{?un,1?T?.?[mŚ?T?%??????????0 Binário GZIP

Slide 58

Slide 58 text

?T?%.?JI?;1?R,1?T JI?;1?R,1?T ?,%JI?;1?R,1?T 1?R,1?T???m, ;T?un,1?TU ?R,1??R,1?m1R ?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q?_?*f0 ?{{?un?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q? _?*f0?{{?un,1?T?.?[mŚ?T?%??????????0 HPACK GZIP

Slide 59

Slide 59 text

????????????????? ?????????? ???????????????? ??????????? ?????????? ????????????? ????????????????????????????????????? ???????????????????????????????????????? ?????????????????????????????????????? Ah sim, temos HTTPS!

Slide 60

Slide 60 text

0010101010101010101 01010101 010101010100 0101010101 01010101101 010101010 ?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q?_?*f0 ?{{?un?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q? _?*f0?{{?un,1?T?.?[mŚ?T?%??????????0 HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Status: 200 OK X-UA-Compatible: IE=Edge,chrome=1 ETag: "4618f5c69dfa0ee8cb492830482c0bbe" Cache-Control: max-age=0, private, must-revalidate Set-Cookie: _fernahh_session=BAh7B0kiD3Nlc3Npb25f…. Date: Sat, 21 Mar 2015 19:23:51 GMT Server: nginx/1.6.0 + Phusion Passenger 4.0.42 ...

Slide 61

Slide 61 text

❖ Requisições e respostas paralelas ❖ Mais de uma requisição por conexão #2 Multiplexing

Slide 62

Slide 62 text

Inicia uma conexão Fecha a conexão.

Slide 63

Slide 63 text

❖ Priorização de recursos ❖ Escolhemos o que o usuário verá primeiro #3 Priorização de requests

Slide 64

Slide 64 text

1º GET /index.html 3º GET /main.js 2º GET /main.css A prioridade do CSS é maior!

Slide 65

Slide 65 text

❖ O servidor poderá enviar recursos #4 Server Push

Slide 66

Slide 66 text

1º GET /index.html main.js main.css index.html

Slide 67

Slide 67 text

Guerra de frameworks Uma enxurrada de frameworks e bibliotecas surgiram para ajudar desenvolvedores web.

Slide 68

Slide 68 text

https://twitter.com/sstephenson/status/730039913052176384

Slide 69

Slide 69 text

Encontrar a solução para seu problema num mar de tecnologias é uma habilidade.

Slide 70

Slide 70 text

#1 Conheça muito bem os requisitos e problemas que você quer resolver antes de começar.

Slide 71

Slide 71 text

Tecnologias surgem de forma rápida, mas empresas as adotam lentamente.

Slide 72

Slide 72 text

#2 Aposte em arquiteturas plugáveis e modulares.

Slide 73

Slide 73 text

“Escreva programas que façam apenas uma coisa mas que façam bem feito.” https://pt.wikipedia.org/wiki/Filosofia_Unix

Slide 74

Slide 74 text

#3 Acompanhe as comunidades. Elas servem como um termômetro de tecnologias.

Slide 75

Slide 75 text

Requisitos de aplicações web mudam com frequência. Esteja preparado.

Slide 76

Slide 76 text

meetup.com/changelog

Slide 77

Slide 77 text

Aplicações web são complexas Aplicar conceitos e técnicas de engenharia de software faz todo sentido, afinal, buscamos construir produtos escaláveis.

Slide 78

Slide 78 text

#4 Deixe o código melhor do que quando você pegou.

Slide 79

Slide 79 text

Refactoring Também é papel do desenvolvedor alertar quando refactoring é necessário.

Slide 80

Slide 80 text

Débitos técnicos Uma forma de medir e argumentar para o negócio quanto seu codebase está ruim.

Slide 81

Slide 81 text

Testes São imprescindíveis em projetos que precisam crescer.

Slide 82

Slide 82 text

https://www.slideshare.net/jeancarloemer/como-encarar-o-desenvolvimento-frontend

Slide 83

Slide 83 text

Progressive Enhancement Novas tecnologias tendem a ser amigáveis com a web. É possível desenvolver código para browsers modernos e manter compatibilidade.

Slide 84

Slide 84 text

http://sighjavascript.tumblr.com/

Slide 85

Slide 85 text

No content

Slide 86

Slide 86 text

No content

Slide 87

Slide 87 text

No content

Slide 88

Slide 88 text

“Em 10 anos, nada do que você construiu hoje que depende de JS para mostrar o conteúdo, estará disponível e arquivado na web” https://speakerdeck.com/tomdale/progressive-enhancement-is-dead-long-live-progressive-enhancement

Slide 89

Slide 89 text

- dead to history (archive-org); - unreliable for search results; - ignorable. https://speakerdeck.com/tomdale/progressive-enhancement-is-dead-long-live-progressive-enhancement

Slide 90

Slide 90 text

No content

Slide 91

Slide 91 text

A média de conexão de internet de usuários no Brasil é ~1.2mb.

Slide 92

Slide 92 text

“Server rendering is not about SEO, it’s about performance. Consider the additional roundtrips to get scripts, styles, and subsequent API requests.” https://rauchg.com/2014/7-principles-of-rich-web-applications

Slide 93

Slide 93 text

https://medium.com/@addyosmani/progressive-web-apps-with-react-js-part-4-site-is-progressively-enhanced-b5 ad7cf7a447

Slide 94

Slide 94 text

https://medium.com/@addyosmani/progressive-web-apps-with-react-js-part-4-site-is-progressively-enhanced-b5 ad7cf7a447

Slide 95

Slide 95 text

Progressive Web Apps (PWA) Aplicações web que são confiáveis, rápidas e com uma experiência imersiva. https://developers.google.com/web/progressive-web-apps/

Slide 96

Slide 96 text

Progressive Web Apps (PWA) Aplicações web que são confiáveis, rápidas e com uma experiência imersiva. https://developers.google.com/web/progressive-web-apps/

Slide 97

Slide 97 text

Web Apps Aplicações web que são confiáveis, rápidas e com uma experiência imersiva.

Slide 98

Slide 98 text

https://eng.uber.com/m-uber/

Slide 99

Slide 99 text

No content

Slide 100

Slide 100 text

“isso é uma web app. pequena e rápida.”

Slide 101

Slide 101 text

as APIs web ainda irão melhorar...

Slide 102

Slide 102 text

Electron Permite desenvolvermos desktop apps, que são cross platform com tecnologias web.

Slide 103

Slide 103 text

HTML, CSS e JavaScript Electron (NodeJS, Chromium) https://electron.atom.io/

Slide 104

Slide 104 text

HTML, CSS e JavaScript Electron (NodeJS, Chromium) SO https://electron.atom.io/

Slide 105

Slide 105 text

Spotify Visual Studio Code Slack Hyper Atom

Slide 106

Slide 106 text

React Native Framework para construir aplicativos nativos com React.

Slide 107

Slide 107 text

React Components React Native Bridge Native Code https://facebook.github.io/react-native/

Slide 108

Slide 108 text

Facebook AirBnb Instagram Skype Walmart

Slide 109

Slide 109 text

Faça parte dessa revolução. Aposte na web!

Slide 110

Slide 110 text

obrigado! @fernahh fernahh.com