Executando verificação de segurança...
2

Na sua discussão sobre compiladores que possuem componentes frontend e backend, você ilustra efetivamente que o frontend não é necessariamente sobre elementos visuais. O frontend pode de fato ser uma interface de linha de comando (CLI) ou algo totalmente diferente. A definição amplamente aceita (e que eu também aceito) é que o frontend é o que o usuário interage, enquanto o backend permanece oculto para o usuário.

Você tocou em um ponto interessante: nem toda aplicação é full-stack, mas desafiando o senso comum do termo, vou discordar radicalmente!

Ao apontar corretamente a frequente troca de frontend com client-side e backend com server-side, fica claro, uma aplicação pode existir exclusivamente no lado do cliente ou do servidor, mas não pode ser puramente frontend ou backend. No mínimo, para executar tal aplicação, a outra parte deve ser "mockada".

Se considerarmos um desenvolvedor 'frontend' como um usuário de uma API tipo rest, para ele, este ponto de extremidade, (end-point) com o qual interage diretamente é essencialmente um frontend, ocultando todas as regras de negócios e persistência subjacentes.

Da mesma forma que jogo em JavaScript rodando em um navegador possui componentes frontend e backend: o backend poderia ser o motor gráfico (engine) e os algoritmos que sustentam a lógica do jogo, enquanto o frontend é apenas o código responsável por atualizar o canvas e lidar com entradas do teclado e do mouse.

Outro exemplo, empresas como Twilio ou OpenAI, que oferecem infraestruturas de computação robustas e ocultam do usuário toda a complexidade computacional por meio de APIs webs. Os profissionais que constroem e mantêm essas APIs, servindo conteúdo HTTP no servidor, são essencialmente desenvolvedores 'frontend' nesse contexto. Eles estão trabalhando na 'frente', diretamente na experiência do usuário, mesmo que essa frente seja uma interface de programação e não uma interface gráfica.

Finalmente, o que mais me preocupa é a maneira como os grupos dentro da comunidade de desenvolvimento 'web moderna' tendem a se apropriar de conceitos abstratos para formar 'panelinhas' exclusivas. É tipo ser chamado de Bolsonarista; ou Petista, por apoiar ídeas como o patriotismo ou a busca por igualdade social. Esse tipo de simplificação e categorização inadequada não apenas limita o entendimento, mas também cria divisões desnecessárias entre os profissionais.

Historicamente, a maioria das aplicações era unificada, operando predominantemente em um único 'lado'. Com a popularização do desenvolvimento web moderno e o advento de frameworks JavaScript, emergiu o modelo massivo de cliente-servidor, que definiu claramente os papéis de frontends (interfaces com o usuário) e backends (servidores processando dados). Contudo, essa divisão não sempre existiu; anteriormente, o verdadeiro trabalho de UI na web era realizado majoritariamente no lado do servidor, utilizando tecnologias como PHP, Java, ASP. Naquela época, o JavaScript era limitado a aprimorar a experiência do usuário (UX), sem desempenhar um papel central.

No entanto, essa visão tradicional já é coisa do passado. Atualmente, a web já está na era da computação distribuída, que abrange desde a edge computing até a nuvem. Neste cenário contemporâneo, insistir de chamar o cliente de frontend, e servidor de backend torna-se cada vez mais limitante.

Todo software é fullstack (nem que seja uma única stack). Todo software tem uma parte que é resposável por interagir com o usúario (seja ele o que o for - é a parte de entrada e saída da computação) enquanto o backend é a computação em si. Esse é apenas outra visão simplista, e que limita o entendimento, mas pelo não cria richas estúpidas.

Carregando publicação patrocinada...
2

Sem tempo agora, mas vamos dizer que concordo com quase tudo. Tem algo que ainda preciso ver com mais calma. Eu acho que algumas coisas são mais complicadas. Acho que tem aplicações que são só uma coisa ou outra. E não sei se chamaria de frontend algumas coisas que você nomeu assim. Tão pouco quando tem só uma parte ele seria full stack por natureza, mas se não me engano na minha resposta, deixei isso em aberto mesmo, é discussão semântica.