Beauty is in the eye of the beholder

I've been developing web applications for a long time. A very long time. I created my first web applications in the environment Lotus Domino back when the word "google" wasn't yet a verb, and to search for information on the internet, people used Yahoo! and Rambler. I used Infoseek's service — they had a focused search and a not-so-overloaded interface compared to Yahoo!

Application development, any application, not just for the web, is a creative endeavor. It's hard to argue with that statement. And beauty in creativity is like practice in scientific knowledge — the criterion of truth. But while scientific practice is objective and based on measurements, beauty is subjective and depends on who's looking. So I asked myself, what personally constitutes a beautiful web application for me?

Beauty is in the eye of the beholder

(referring to KDPV, the eye isn’t mine, it’s a woman's eye, but, IMHO, a woman’s perspective on KDPV is more fitting than a man's, since it is — KDPV!)

Below are my own criteria for what a web application can currently be considered beautiful. It’s a highly subjective exposition influenced by my personal experience. Perhaps some may find my criteria for beauty to be those of ugliness. Don't be surprised; you just have a different experience.

And since you've come down here, please be cautious in the comments. After all, while you can stop reading the article if what is presented seems ugly or even repulsive to you, as the author, I have to read all the comments.

Habitat

Protocols

I don't even know if it's worth separately highlighting this criterion. Web applications exist on the Network and must comply with the Laws of the Network (protocols). The main protocols in the Network are TCP and IP. Numerous other protocols are built on them, but for web applications, I consider the most important HTTP (rather, its extension HTTPS based on TLS). That is, a beautiful web application is accessible via HTTPS/TLS (as an option — via HTTP), while other protocols (LDAP, RPC, IMAP4, POP3, SMTP, FTP, NNTP, ...) make it less beautiful with each additional supported protocol. The application itself can use these additional protocols to access external resources.

As for WebSocket, I do not have enough experience using this protocol with web applications. It looks beautiful and promising, but I can't say how stable and practical it is.

Browsers

A web application stands only partly on the server side and partly on the client side. The client side is the browser. A modern browser provides a lot, which a modern web application can and should use for its own benefit. A beautiful web application utilizes modern browser capabilities and does not have to work in those browsers that do not provide modern features. I understand that polyfills are a necessary measure, but they are not appealing. After all, it’s not just developers who need to keep up with modern technologies; users and businesses are involved as well.

Programming Language

The situation with programming languages used for creating web applications is quite complicated. For the client side of web applications, there are many technologies that allow developers to simplify the creation of the HTML/CSS/JS triad (the one that all modern browsers understand). But I have closely interacted with GWT and I find it beautiful when a developer sees the original code in the browser, rather than the result of compilation or transpilation. Therefore, the use of webpackand similar products to generate client-side code, IMHO, is not attractive. The more that the executable code running in the browser resembles the original code created by the developer, the better. Don’t believe me? Try debugging production code generated by GWT.

On the server side, there is more freedom (Java, PHP, Perl, Python, C#, Ruby, …), but I think it's beautiful when the same programming language—JavaScript—is used on both the server side and in the browser. After all, the language shapes thinking, and teams of like-minded individuals are more productive.

Humanity

A beautiful web application must be useful. Useful, primarily, for the person as the end consumer. Therefore, I cannot call a web servicea beautiful web application. An average person (not a web developer) finds them complicated. Web services are beautiful in their own way,

A beautiful web application must have an intuitive interface. One can argue about UI's subjectivity—it's quite a subjective thing. But with UX It's much simpler if a user can't use the application without the coveted RTFM — poor UX, ugly web application. The most aesthetically pleasing web applications by this criterion can easily be used by children who can't yet read.

Reverse Scalability

Once upon a time, programs could be transferred on floppy disks; now they're on flash drives or downloaded directly from the web. Copying a regular application and running it on another machine is a trivial task. The situation with web applications is somewhat different. The network is a global environment where there's no need for clones of the same web application. There’s only one Facebook, Twitter, Instagram, Mail.ru, or Yandex. You can have different web applications in the same thematic niche but with different audiences (like Facebook and VKontakte, Mail.ru and Gmail, Google Maps and Azure Maps). The hardware resources necessary to ensure global availability of such web applications are, shall we say, nontrivial.

I have never worked with web applications of this level as a developer and can't imagine how they're structured inside. Ensuring the functionality of such web applications requires teams of specialists and separate data centers. I am amazed by people's ability to cooperate on such a scale and create such products, but my standard of beauty is a web application that can run on a standalone laptop.

A beautiful web application scales not only upward and outward (for users) but also downward and inward (for developers).

Amphibiousness

Access to modern web applications is done using two types of devices:

  • computers (laptops, desktops);
  • mobile devices (smartphones and tablets);

Somewhere on the horizon, there's also theInternet of Things, but for now, that's it.

Computers differ from mobile devices as much as land creatures differ from aquatic ones. These are different environments, and they impose different requirements on the beings (programs) that inhabit them. Beautiful web applications are not those that resemble amphibians, but those that are in the water — like fish, on land — like beasts, and in the air (SEO) — like birds.

I consider 'amphibiousness«, it's like trying to sit on two (with SEO — three) chairs. Better to be like Fiona from Shrek — one by day, another by night. Yes, it’s more expensive. But better.

Cross-sharing

I already mentioned in the point "Reverse Scalability" that the globality of the Web allows for one web application for the Planet. Thus, every web application must stand out in some way from others to ensure its survival. However, my many years of experience with Magento (framework for building e-commerce stores) indicates that there can be more similarities than differences between individual web applications. A beautiful web application not only needs to be modular; it should also share its modules with other web applications. To some extent, this idea is reflected in the specifications JSR 168 and JSR 286 and frameworks like WordPress, Django and the same Magento. The more modules of a web application that are used by other web applications, the more attractive it is from my perspective. Cross-sharing allows for the creation of higher quality modules and, as a result, more stable web applications.

By a module, I do not mean libraries like jQuery or RequireJS — rather more extensive entities like plugins in WordPress and Django. But the thesis also holds true for libraries that widespread use makes them more robust and reliable.

Harvard architecture

Harvard architecture, unlike the current ruling puppet Princeton, implies the separation of code and data. The architecture never took off, but the idea itself seems beautiful to me. Especially for web applications. Any static (HTML/CSS/JS/Images/…) is code. It can and should be cached either on the server side or on the client side. And data is REST/JSON (beautifully) or SOAP/XML (a bit less beautifully). Or WebSockets/JSON (might be the best option, but I haven't tried it).

Localization

There are two things that particularly concern me when developing web applications — the multilingual interface and time zones. I myself am from Latvia, where we use three languages: LV, RU, EN. A beautiful web application should not only allow the use of multiple languages within the application itself but should also enable the expansion of the number of languages used through external resources, like Crowdin. This is equally true for the modules that make up the web application.

Time zones are straightforward: in all cases where it's unclear how to handle date-time, do this: everything on the server operates using UTC, everything that is displayed to the client follows the user's profile time zone. It's elegant.

Forges instead of 'Death Stars'

Once upon a time, every reasonably large town had its own forge. Perhaps not just one. Some were better, some were worse. There were blacksmiths known throughout the world, while others were only visited out of necessity. Wars, epidemics, and natural disasters came and went. Some towns vanished along with their populations. But the blacksmithing craft endured. New towns rose where the old ones had disappeared, and forges appeared within them as well.

And now take a look at a service like DNS. When root servers go down, the entire world is shaken.

In my opinion, a beautiful web application cannot be the size of Facebook or Mail.ru. This is closer to a 'Death Star' in terms of the resources required for construction and for maintaining functionality. Yes, if Facebook were destroyed, humanity would not vanish; its functions would quickly be taken over by other applications (like VK in Russia and neighboring regions, Instagram, Twitter, ...). Nevertheless, locking a significant portion of the world's population onto a single application is not appealing. Especially with many more sustainable alternatives available (for example, torrents).

Summary

If you have read this far and are puzzled — 'what was that?', then I sincerely sympathize with you. I did not force you to read this. I simply tried to put my thoughts into words, hoping to find others who think the same way. Perhaps I can discuss some aspects of creating beautiful web applications with them and find answers to my many questions.

Thank you for reading.

Source: habr.com

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster