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

Odeio esse termo. Concordo com o user1 (não na conclusão, apenas sobre o termo). Até acho que o termo ajuda comunicar, mas em alguns casos prejudica.

Mas já que as pessoas usam, ele pode ou não ser. Assim como no desktop ou outras atividades que envolvam pelo menos duas partes separadas de desenvolvimento. Em geral, em mobile é comum que tenha duas partes, mas tem casos que não tem. Se tiver duas, tem quem faça as duas e tem quem só faça uma.

Um dos problemas do termo é que full a pessoa nunca é. Então se ela é full só em certo critério, ela não é full. Eu entendo que inventaram esse termo de forma muita específica querendo dizer que ela faz front e backend, mas para ser full de verdade ela tem que fazer tudo da computação. É mais um termo mal pensado e lançado pelo mercado. Mas eu aceito porque não adianta dar murro em ponta de prego.

Até onde eu sei não existe uma definição clara do que o termo é, existem algumas pessoas que usam algo que é mais ou menos bem aceito por quase todos. Excetos os chatos. Quem? Eu?

Eu achei a definição do OP bem confusa. Especialmente na questão de aplicação que usa sites. Isso ainda é um modelo de front e backend. Se você está consumindo um backend pronto e nem tem acesso a ele, certamente você só está fazendo o frontend, mas o backend existe e você não é full stack.

Outra questão é sobre você ser full se tiver só o frontend. Não! Eu acho que não cabe mudar a definição do termo porque mudou o modelo. Um jogo que roda isolado (sem comunicar com servidor*) não foi feito por um full stack, foi feito por um front end developer.

Ah, você acha que frontend não cabe aí? Que é coisa de web. Aí eu vou "brigar". Isso está muito errado.

Um compilador tem frontend e backend? Tem quem questione e fale que é um pouco diferente, mas muita gente considera que tem. E claro que o frontend não é visual, é a parte que lida com a linguagem fonte, em oposição do backend que cuida da linguagem alvo. Em geral que cuida de uma parte não cuida da outra, ambas são trabalhosas e exigem expertise bem diferente do que web. Embora em compiladores ambas exigem muito domínio da computação e web aceita dar uma enganada e só apresentar qualquer resultado.

Se você falar que uma aplicação que tem duas partes, uma delas é visual e outra as regras de negócio e persistência, mas está tudo como uma coisa só, monolítico ou que seja um macarrão só, e isto é uma aplicação full, eu posso até concordar. Não tenho certeza. Eu preciso de definições mais fortes e canônicas sobre isso. Não acho que tenha. Mesmo se for em uma fonte (que tende ser) canônica, como a Wikipedia (não ach oque seja um bom artigo por várias razões, há entendimento bastante equivocado e não tem boas referências para sustentar o que está escrito lá), pode ser que ache lá só informações coletadas do mercado de forma desorganizada. Tem vários verbetes assim lá, por isso ela é boa, mas não 100% confiável (além de ser rasa, ser só uma porta de entrada para um assunto). Um pouco melhor.

Vemos algumas pessoas intercambiando frontend com client-side e backend com server-side. Não acho que deveria, acho que tem diferenças, mas em alguns contextos podem ser quase sinônimos.

Se alguém disser que tudo isso está errado, eu concordo, desde que tenha argumentos. Porque é dessas coisas que foram inventadas sem muito estudo e formalismo.

Gostava mais quando as pessoas eram desenvolvedoras, eventualmente mais dedicadas a uma coisa ou outra.

De maneira geral não gosto e não me dou bem (qual é causa ou consequência?) com frontend. E é a parte que mais pode satifazer ou atrapalhar o usuário, ainda que o backend falho pode dificultar o front entregar bem. O que mais gosto de fazer não é bem nem um, nem outro, prefiro coisas mais gerais, que se parece um pouco com backend (não web), então...

Faz sentido para você?

Espero ter ajudado. Em geral estou à disposição na plataforma (sem abusos :D)


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

Carregando publicação patrocinada...
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.

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.