Eu já trabalho no desenvolvimento de aplicativos web há muito tempo. Muito tempo mesmo. Meus primeiros aplicativos web na plataforma eu criei na época em que a palavra «google» ainda não era um verbo, e para buscar informações na internet, as pessoas usavam Yahoo! e Rambler. Eu usava — eles tinham uma busca refinada e uma interface muito menos sobrecarregada do que a do Yahoo!
O desenvolvimento de aplicativos, quaisquer aplicativos, não apenas para a web — é um trabalho criativo. É difícil alguém discordar dessa afirmação. E a beleza na criatividade é como a prática no conhecimento científico — é o critério da verdade. Mas enquanto a prática científica é objetiva e baseada em medições, a beleza é um assunto subjetivo, depende de quem está olhando. Então, me perguntei: o que, pessoalmente, é um aplicativo web bonito para mim?

(na KDPV, o olho não é o meu, é o olho feminino, mas, IMHO, o olhar feminino na KDPV é mais adequado do que o masculino, afinal, isso é — !)
Abaixo, estão meus próprios critérios para o que, no momento, pode ser considerado um aplicativo web bonito. Uma exposição muito subjetiva, baseada na minha experiência pessoal. Talvez, para alguns, meus critérios de beleza pareçam critérios de feiura. Não se surpreendam, apenas têm uma experiência diferente.
E já que você desceu, por favor, seja cuidadoso nos comentários. Afinal, se você pode parar de ler o artigo assim que o que está exposto nele parecer feio ou até mesmo horrível para você, eu, como autor, sou obrigado a ler todos os comentários.
Habitat
Protocolos
Não sei se vale a pena destacar esse critério separadamente. Aplicativos web vivem na Rede e precisam se adequar às Leis da Rede (protocolos). Os principais protocolos na Rede são e . A partir deles se baseiam muitos outros protocolos, mas para aplicativos web eu considero o mais importante (ou melhor, sua extensão baseada em ). Ou seja, um aplicativo web bonito está disponível via HTTPS/TLS (como alternativa — via HTTP), e os outros protocolos (LDAP, RPC, IMAP4, POP3, SMTP, FTP, NNTP, …) o tornam menos bonito a cada protocolo adicional suportado. O próprio aplicativo pode, por meio desses protocolos adicionais, utilizar recursos externos.
Quanto às , então eu não tenho experiência suficiente com esse protocolo em aplicações web. Parece bonito e promissor, mas quão estável e prático isso é — não posso dizer.
Navegadores
Uma aplicação web está apenas com um pé no lado do servidor e o outro — no lado do cliente. O lado do cliente é o navegador. Um navegador moderno fornece , que uma aplicação web moderna pode e deve usar em seu benefício. Uma bonita aplicação web utiliza as capacidades modernas dos navegadores e não precisa funcionar nos navegadores que não oferecem essas capacidades modernas. Eu entendo que — é uma medida forçada, mas isso não é bonito. Afinal, não são apenas os desenvolvedores que devem acompanhar as tecnologias modernas, isso também diz respeito aos usuários e aos negócios.
Linguagens de Programação
Com as linguagens de programação usadas para criar aplicações web, tudo é muito confuso. Para a parte cliente das aplicações web, há uma infinidade de tecnologias que permitem ao desenvolvedor facilitar a criação da tríade HTML/CSS/JS (o que todos os navegadores modernos entendem). Mas eu, a meu tempo, tive um contato próximo com e considero bonito quando um desenvolvedor vê no navegador o código original, e não o resultado da compilação ou transpiração. Portanto, usar e produtos similares para gerar código cliente, na minha opinião, não é bonito. Quanto mais o código executável no navegador se assemelhar ao código fonte criado pelo desenvolvedor, melhor. Não acredita? Tente depurar em produção o código gerado pelo GWT.
No lado do servidor há mais liberdade (Java, PHP, Perl, Python, C#, Ruby, …), mas eu acho que é bonito quando tanto no lado do servidor quanto no navegador se usa uma única linguagem de programação — JavaScript. Afinal de contas, , e equipes de pessoas afins são mais produtivas.
Humanidade
Uma bonita aplicação web deve ser útil. Útil, antes de tudo, para o ser humano, como consumidor final. Portanto, eu não posso chamar de uma aplicação web bonita . Para uma pessoa comum (não um desenvolvedor web), eles são complicados. Os serviços web são bonitos à sua maneira,
Uma bonita aplicação web deve ter uma interface intuitiva. Pode-se discutir sobre — isso é uma questão bastante subjetiva. Mas com tudo fica muito mais simples se o usuário não puder usar o aplicativo sem o precioso — uma má experiência do usuário, um aplicativo web feio. Os aplicativos web mais bonitos, relativamente a esse critério, podem ser facilmente utilizados por crianças que ainda não sabem ler.
Escalonabilidade Reversa
Há muito tempo, programas podiam ser transferidos em disquetes; agora, em pen drives ou baixados diretamente da Internet. Copiar um aplicativo comum e executá-lo em outra máquina é uma tarefa trivial. A situação é um pouco diferente com aplicativos web. A rede representa um ambiente global onde não é necessário ter clones do mesmo aplicativo web. A Internet consegue se dar bem com um Facebook, um Twitter, um Instagram, um Mail.ru ou um Yandex. É possível ter diferentes aplicativos web dentro do mesmo nicho temático, mas com públicos diversos (como Facebook e VKontakte, Mail.ru e Gmail, Google Maps e Azure Maps). Os recursos de hardware necessários para garantir a acessibilidade global de tais aplicativos web são, digamos, .
Nunca trabalhei com aplicativos web de tal nível como desenvolvedor e não tenho ideia de como eles são estruturados por dentro. Para garantir a funcionalidade de tais aplicativos web, são necessárias equipes de especialistas correspondentes e data centers separados. Fico admirado com a capacidade das pessoas de cooperar em tais escalas e criar produtos semelhantes, mas meu padrão de beleza é um aplicativo web que pode ser executado em um laptop separado.
Um belo aplicativo web se escala não apenas para cima e para fora (para os usuários), mas também para baixo e para dentro (para os desenvolvedores).
«Anfíbios»
Para acessar aplicativos web modernos, são utilizados dois tipos de dispositivos:
- computadores (notebooks, desktops);
- dispositivos móveis (smartphones e tablets);
Lá no horizonte também aparece o «», mas ainda não é o caso.
Computadores e dispositivos móveis diferem tanto quanto seres terrestres diferem de criaturas aquáticas. São ambientes diferentes e eles impõem diferentes requisitos às criaturas que habitam neles (programas). Aplicativos web bonitos não são aqueles que se assemelham a , mas aqueles que na água são como peixes, na terra como animais e no ar () — como pássaros.
Acho feio ««, isso é como tentar sentar em duas (com SEO — três) cadeiras. Melhor ser como Fiona de Shrek — de dia uma, e à noite outra. Sim, é mais caro. Mas é melhor.
Compartilhamento cruzado
Já mencionei no item 'Escalabilidade Reversa' que a globalidade da Rede permite ter um único aplicativo web para o Planeta. Portanto, cada aplicativo web deve diferir de alguma forma dos outros para garantir sua sobrevivência. No entanto, minha experiência de anos com (estrutura para construção de lojas de e-commerce) mostra que entre diferentes aplicativos web pode haver mais coisas em comum do que diferenças. Um belo aplicativo web não só deve ser modular, mas também deve compartilhar seus módulos com outros aplicativos web. Até certo ponto, essa ideia é refletida nas JSR 168 e JSR 286 e em frameworks como , e o mesmo Magento. Quanto mais módulos de um aplicativo web forem utilizados por outros aplicativos web, mais bonito ele se torna aos meus olhos. O compartilhamento cruzado permite criar módulos de maior qualidade e, consequentemente, aplicativos web mais estáveis.
Por módulo, não me refiro a bibliotecas como jQuery ou RequireJS — mas sim a entidades maiores, como plugins em e . Mas para bibliotecas, também é válido afirmar que a ampla disseminação da biblioteca permite torná-la mais sólida e confiável.
Arquitetura de Harvard
, ao contrário da atualmente dominante bal , implica a separação de código e dados. A arquitetura não decolou, mas a ideia me parece bonita. Especialmente para aplicativos web. Qualquer conteúdo estático (HTML/CSS/JS/Imagens/…) é código. Ele pode e deve ser armazenado em cache, tanto no lado do servidor quanto no cliente. E os dados são / (bonito) ou / (um pouco menos bonito). Ou WebSockets/JSON (pode ser a melhor opção, mas eu não experimentei).
Localização
Existem duas coisas que me preocupam especialmente ao desenvolver aplicativos web — a interface multilíngue e os fusos horários. Eu sou da Letônia, onde usamos três línguas: LV, RU, EN. Um belo aplicativo web deve permitir não apenas usar várias línguas no próprio aplicativo, mas também permitir expandir o número de línguas usadas através de recursos externos, como . Isso também se aplica aos módulos dos quais um aplicativo web é composto.
Com os fusos horários, é simples: em todos os casos em que não está claro como lidar com data e hora, faça assim: tudo que está no servidor, vai para o servidor e vem do servidor — UTC, tudo que é exibido ao cliente — de acordo com o fuso horário do perfil do usuário. É bonito.
Forjas em vez de 'Estrelas da Morte'
Há muito tempo, em cada cidade mais ou menos grande havia sua própria forja. Talvez até mais de uma. Algumas melhores, outras piores. Havia mestres ferreiros conhecidos em todo o mundo, e havia aqueles que eram procurados por falta de alternativa. Guerras, epidemias e desastres naturais passaram. Algumas cidades desapareceram junto com a população. Mas o ofício da metalurgia continuava vivo. Novas cidades surgiam onde as antigas estavam, e nelas também surgiam forjas.
E agora, olhem para um serviço como . Quando os servidores raiz caem, .
Na minha opinião, um aplicativo web bonito não pode ter um tamanho como o do Facebook ou Mail.ru. Já se aproxima mais de '' tanto em recursos necessários para sua construção quanto em recursos necessários para manter sua operação. Sim, na eventualidade da destruição do Facebook, a humanidade não desaparecerá, suas funções serão rapidamente assumidas por outros aplicativos (o mesmo no território da Federação Russa e adjacências, Instagram, Twitter, ...). No entanto, a concentração de uma parte significativa da população do planeta em um único aplicativo — isso não é bonito. Ainda mais considerando as alternativas muito mais robustas (por exemplo, ).
Resumo
Se você leu até o final e está confuso — 'o que foi isso?', então eu sinto sinceramente sua pena. Não o obriguei a ler isso. Apenas tentei colocar meus pensamentos em palavras para encontrar aqueles que pensam da mesma forma. Talvez eu possa discutir com eles alguns aspectos da criação de aplicativos web bonitos e descobrir respostas para minhas perguntas. E eu tenho muitas.
Obrigado pela leitura.
Fonte: habr.com
