Cure for Web Development

Martin Kavík
Feb 19 · 3 min read
Code and Pills

Imagine you have a small business. You sell flowers in your brick-and-mortar store. Everything goes well, but you would like to attract more customers and provide some extra services - e.g. deliver flowers to a given address.

So you need a website. Just some basic stuff - a home page, flower catalog, order form and maybe a simple chat and blog.

You don’t have enough money to hire a professional developer. You can’t find a suitable website builder. Fortunately, you know something about computers so you decide to create the website by yourself.

The gates of hell have been opened.

You don’t know where to start, but internet knows everything. After a while, you find some ridiculously complicated diagrams of the necessary knowledge.

Then the torment continues, but you find out you need to learn at least these things:

  • HTML
  • CSS
  • Javascript
  • JSON
  • Git
  • DNS
  • HTTP
  • REST
  • WebSockets
  • SQL
  • Cookies / JWT

… to have an idea how to choose the right languages, libraries, frameworks and hostings.

You fall into the rabbit hole and then analysis-paralysis kicks in. Should you use:

  • Javascript or Typescript?
  • Bootstrap or Tailwind?
  • React or Vue?
  • Mongo or Postgre?
  • Serverless or VPS?
  • Monolith or Micro-services?
  • Webpack or Parcel?
  • Less or Sass?

Who knows? Nobody. Flame wars are very popular among web developers.

It works, until you try to do the first major refactor — you’ll feel like you are going through a minefield.

When you look at most frontend or backend frameworks and squint your eyes a bit, you’ll see just a bunch of helpers for HTML / CSS / JSON manipulation and HTTP wrappers.

But what if HTML and CSS are not suitable for web apps? They were designed for simple web pages a long time ago and basically cannot be improved due to backward compatibility. As the result, the number of CSS and HTML features is growing and almost no one is able to use them properly.

Then combine HTML with CSS and a language designed for writing short scripts — such as Javascript — and write a web app. It works, until you try to do the first major refactor — you’ll feel like you are going through a minefield. Anything you touch may explode in the runtime. And no one is brave enough to even enter a CSS minefield and remove old CSS code.

So maybe there are so many frameworks because they do too clever HTML manipulations and want to be as composable and flexible and universal as possible but they fail to achieve the most important goal — to make the web development easier.

I can imagine many developers pray for a small number of users

Another source of fun for an entire day is choosing database and eliminating single points of failure. There are basically two popular approaches:

  1. Use one database (ideally a managed cluster) and one or more stateless apps in containers. Then hope it doesn’t become a DevOps nightmare with random database deadlocks.
  2. Use serverless functions and databases and hope you don’t have cold starts, don’t receive a surprising invoice and don’t need real-time communication (e.g. WebSockets or Server-Sent Events).

I can imagine many developers pray for a small number of users so the infrastructure doesn’t fall like a house of cards or burn all the money.

There is a cure for this madness:

  • A statically typed language without footguns like null, undefined or inheritance. Fast and pragmatic. Rust.
  • A frontend framework with a good API for page elements (HTML and CSS abstraction). It should motivate you to write accessible and SEO content. You shouldn’t need to deal with low-level stuff (e.g. with communication protocols).
  • A backend framework that manages data directly without a database. It can automatically join multiple server nodes to a cluster and use them transparently as one large server. With built-in authentication.
  • A hosting / cloud with a reasonable and predictable pricing. With monitoring, logging, autoscaling and one-command deployment.

Let me introduce to you the Rust fullstack framework: MoonZoon.

Images:

  • Code by Markus Spiske
  • Pills by Kate Hliznitsova

Nerd For Tech

From Confusion to Clarification

Nerd For Tech

NFT is an Educational Media House. Our mission is to bring the invaluable knowledge and experiences of experts from all over the world to the novice. To know more about us, visit https://www.nerdfortech.org/. Don’t forget to check out Ask-NFT, a mentorship ecosystem we’ve started

Martin Kavík

Written by

OpenHope.net founder, MoonZoon.rs creator and Seed-rs.org maintainer

Nerd For Tech

NFT is an Educational Media House. Our mission is to bring the invaluable knowledge and experiences of experts from all over the world to the novice. To know more about us, visit https://www.nerdfortech.org/. Don’t forget to check out Ask-NFT, a mentorship ecosystem we’ve started

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store