Desenvolvedor Fullstack
Não seja esse cara.
Cléber Zavadniak
2019
https://medium.com/clebertech
- C para microcontroladores
- Simulações de hardware em C++
- Redes Linux
- Migração de programas em C do HP-UX para Linux
- PHP (~ "fullstack" ~)
- Python (~ "fullstack" ~)
- Python + Erlang
- Python + Microsserviços
- Python + Microsserviços
Por que não ser esse cara?
- A natureza humana ao desenvolver software
- A natureza humana ao procurar emprego
- A natureza humana ao contratar pessoas
Ênfase nos desenvolvedores.
Gestores são um caso um pouco diferente.
Ao desenvolver software
A natureza humana
E ao PHP voltarás."
"Pois tu és PHP
HTML
HTML com PHP embutido
PHP gerando HTML
PHP gerando HTML com Javascript embutido
HTML com Javascript embutido
Javascript gerando HTML
Javascript gerando HTML renderizado no servidor
(APIs)
Voltar ao PHP não é um avanço...
- Inclusive, PHP nem tinha "build"...
O cisma back/front teve bons motivos
- A API passou a ser um valor em si mesma.
- O conflito de interesses leva à adoção de padrões claros.
- O frontend muda numa taxa diferente do backend.
A API
API
Frontend
Backend
API
- Formada por padrões e protocolos.
-
Geralmente acoplada ao backend;
- Mas pode ser uma entidade à parte (WAMP/Autobahn, por exemplo).
- Separação clara entre os componentes.
- Serve mais componentes do que só o frontend web.
- Independente da linguagem de programação.
O "fullstack" moderno
- Desenvolvedor frontend experiente que aprendeu Node.js.
- Raramente é o contrário.
- Todos tendemos a privilegiar nossa área favorita.
- Backend: "A app tá feia, mas a API é linda...";
- Frontend: "A API tá meio bagunçada, mas a app é linda...".
Conflito de interesses
- O ser humano tende a ser complacente consigo mesmo.
- (Isso fica muito claro em equipes com code review.)
- Complacência, pressa e pressão externa levam à criação de massarocas.
- É necessário outra pessoa para fazer uma avaliação realmente "sem dó".
- Cada área deve defender seu objetivo:
- Frontend: "quero entregar logo".
- Backend: "quero uma API coerente".
Massarocas!
- Separação entre frontend e backend excessivamente tênue.
- Displicência quanto a seguir padrões e protocolos.
API?
Frontend
Backend
Secure Scuttlebutt
- Protocolo muito interessante;
- Bem documentado;
- Mas... baseado em implementação.
Secure Scuttlebutt
- Frontend: "Patchwork". Javascript.
- Backend: "ssb-server". Javascript.
- Efeitos colaterais:
- o hash das mensagens é feito sobre um objeto JS serializado como string;
- o hash é incluído neste mesmo objeto;
- a verificação do hash é extremamente dependente do comportamento de serialização do Javascript.
- Por isso é raro ver implementações em outras linguagens...
Secure Scuttlebutt
Recebe string.
Transforma em objeto.
Extrai o hash.
Serializa o objeto como string!!!
Verifica o hash.
Heterogeneidade favorece padrões
- Esse problema do SSB não ocorreria se o backend tivesse sido escrito numa linguagem diferente.
Homogeneidade ou proximidade favorecem "confusão"
- Mas não é por maldade
- Nem por displiscência
- Tampouco ignorância.
A lei de Fechners
É tudo questão de percepção!
Nossa percepção da intensidade do estímulo aumenta menos rapidamente que a intensidade real do estímulo.
- Python - JS: "Uau! Precisamos seguir padrões e protocolos claros".
- Node - JS: "Meh..."
O problema da percepção
- É algo natural do ser humano.
- Faz o desenvolvedor esquecer ou ignorar que cada parte, frontend e backend, é uma parte distinta.
Exceções notáveis
- Desenvolvedores
- muito experientes;
- muito disciplinados.
- Equipe muito atenta.
- Ambiente razoavelmente são.
- (Pressão externa e pressa dificultam as coisas.)
Problemas notáveis
As empresas em geral que buscam "fullstack" estão formando equipes com desenvolvedores muito experientes e disciplinados???
Ao desenvolver software
- Cada um é complacente consigo mesmo.
- Na "era das APIs", a maioria dos "fullstack" tende naturalmente a favorecer o frontend.
- Homogeneidade facilmente nubla a percepção.
- Heterogeneidade e "conflitos de interesse" obrigam todos a seguir padrões e protocolos.
A natureza humana
Ao procurar emprego
A natureza humana
"Eu sei de muitas coisas"
- As equipes maduras geralmente procuram especialistas.
- Já viu vaga de "fullstack" na Google?
- Quem procura um especialista tende a rejeitar um "generalista".
-
Jack of all trades é interessante no começo, mas dificilmente as empresas permanecem muito tempo com muitos masters of none...
- Os antigos se especializam.
- Os novos já são especialistas.
Ao contratar pessoas
A natureza humana
Empresas que buscam
- Algumas muito boas, muitas muito ruins...
- "Está funcionando perfeitamente":
- Na empresa ruim, é o último passo antes da entrega.
- Na empresa boa, é o primeiro passo de um processo maior.
- Visão de curto prazo.
- Foco na "entrega".
- Padrões e protocolos, mas só se der tempo.
- Conhecimento represado.
- Sai o desenvolvedor, foi-se o conhecimento.
Mas porém entretanto
Todavia...
- Indícios não são provas!
- Sempre pode ser que eu esteja redondamente enganado.
- Contratação de "fullstack" não é garantia de haver qualquer coisa errada.
- Há boas empresas contratando "fullstack".
- Há tempo e ocasião para cada coisa.
- Investigue mais sobre o assunto!
Desenvolvedor Fullstack: não seja esse cara
By Cléber Zavadniak
Desenvolvedor Fullstack: não seja esse cara
Algumas reflexões sobre o perigo desse retorno à era do PHP.
- 435