DEV Community

Cover image for The downfall of web development
Victor Ocnarescu
Victor Ocnarescu

Posted on

The downfall of web development

It has begun. The downfall of web development. I don't know how it started, but it seems unstoppable. Layer after layer of unnecessary complexity keeps being added to every part of web development. And it makes the life of modern developers a living hell.

To promote this new trend, I have prepared a list of features that you can add today into your project to make it even more complex.

I am assuming you have an idea for the app you want to build, you have a small agile team and you want to launch it as quickly as possible.

Let's start with the list:

1. Use Docker for everything

I don't care it could work without it

You will enjoy a relaxing delay every time your project starts.

Bonus: you will have to recreate the Docker image every time you install an NPM dependency

2. Use Strapi for labels and texts

I want to be able to change the labels once a year

You will enjoy adding keys to the list of every single one of your inputs and making the frontend code so much more complex (you will reference a key within an object, not just some text, that would be lame and unusable).

Bonus: you will have to keep another exact copy of your labels somewhere in your codebase in case the connection to Strapi fails.

3. Use many Git environments

Only one main branch? No way, let's add staging and dev

Setup a complex Git environment before your new app is live and enjoy the benefits of having multiple environments that have the same purpose.

Bonus: protect your branches so that no developer will be able to quickly fix bugs without going through the peer review process.

4. Use Typescript

I want to know and control EVERY type

Everyone

You will enjoy looking smug at poor old Javascript and you will write at least 50% more code. More code means it will be easier to manage it in the future, does it not?

Bonus: your code will become much more readable, especially on the frontend, where you usually just want to style a div.

5. Use styled components

I don't want to use the most powerful CSS feature: classes

You will enjoy writing style after style without any reuse. It doesn't even matter that utility CSS frameworks like Tailwind exist, you want to write CSS-in-JS because it's trendy. Good for you!

Bonus: don't even think about CSS media queries. Instead use useMediaQuery hooks to do in React the exact thing you would do in CSS.

6. Use microservices to split your data

I am worried about scalability for my brand new app

You will enjoy splitting and duplicating your code in every microservice without any real benefit. Premature optimization is such a joy!

Bonus: it will also be harder to retrieve data from one microservice to another. You will probably need a private NPM package to tie everything together.

7. Do not use code formatters

It looks the same to me

You will enjoy having to review Git commits that change a single quote into a double quote, different new line formats and all of this valuable changes to your codebase.

Bonus: don't even look at code standards, inline those pesky one-line if statements

And there it is, the 7 deadly sins of modern web development that will consume your time, kill your creativity and make a simple web app into a complex beast.

Hope you enjoy reading the article as much as I enjoyed writing it.

Photo by AJITH S on Unsplash

Top comments (20)

Collapse
 
pauloacosta profile image
Paulo A. Costa

The use of Docker is justified by the same people who said that Java was good because it could run anywhere. The problem is that to this day, I have never migrated a Java project between different platforms...

Collapse
 
vhoyer profile image
Vinícius Hoyer

I use docker to manage npm and node versions because I don't like nvm

Collapse
 
josunlp profile image
Jonas Pfalzgraf

What do you have against nvm? Its fast, easy, and super useful.

Thread Thread
 
vhoyer profile image
Vinícius Hoyer

It's cuz when I was using it on a particular setup of mine, it slowed the terminal startup by like 2 seconds, and I'm always opening and closing terminals, I was just fed up by it and decided to quit it

Thread Thread
 
josunlp profile image
Jonas Pfalzgraf

defuq? On what System? I can't confirm this as someone who uses it on a daily basis.

Thread Thread
 
icesoup profile image
Sadeed

Can confirm, I have nvm installed on 2 systems both using Manjaro and It has significantly slowed down my terminal load times.
I am using zsh as my shell on both systems (which is very common) so I wouldn't expect it to be the issue.

Thread Thread
 
vhoyer profile image
Vinícius Hoyer

I'm pretty sure I was facing that problem with this setup as well, actually, manjaro-i3 zsh and ohmyzsh

Collapse
 
mariocalin profile image
Mario

Java is pretty good because It can be run almost everywhere but its not just that. There are a lot of thins to consider in modern jvm

Collapse
 
tracygjg profile image
Tracy Gilmore

I have to confess I quite like TS, but probably because it reminds me of days long go when I used to write C++ and C code. The hype is false, TS is not type-safe or even safer (at runtime), as some claim.

It does provide some helpful IntelliSense (and things like generics, enumerations and interfaces) but none of these survive transpilation into JS. The most useful (everyday) feature can be obtained through establishing good coding conventions across the team and using JS with some JSDoc notation.

In the 2 decades I have been writing applications in JS, I can honestly say, I can count on one hand the number of times I found a bug was down to the incorrect use of a data type.

Collapse
 
leob profile image
leob • Edited

Add to that having to migrate to new and fancy hipster frameworks (both backend and frontend) approximately every month ... :)

Because, node.js can't be good, no it has to be "Deno" now, and all the effort you've put into mastering Webpack goes out the window coz we're now using "Vite", and just rewrite all of your class components to "hooks" - lather, rinse, repeat!

In the meantime we're mostly producing exactly the same functionality as before :-D

Collapse
 
d_inventor profile image
Dennis

I would say there is a benefit to typescript. I'm more familiar with .NET though, so I may be somewhat biased.

I inherited a plugin from a coworker who had left way before I even joined the company. It was built on Umbraco 6, it didn't use any sort of tooling. When Umbraco started to use angular-js for the backoffice, it was translated to angular-js, but still didn't use any javascript tools. The mess that I was greeted with made me want to throw the whole thing away. I can't remember how many times I said "Where does this property suddenly come from!?" or "Where is this piece of code even used?!", but it was a lot.

I work in an environment with many junior developers and what happens is that if something is optional, it simply doesn't get done (writing comments, update documentation, write tests, remove unused code, etc.). This one project is built by a single developer and everybody else who looks at any pull request is like: "I have no idea what this is, I'm sure it's all good". For a junior developer, to make quality code, we need to set rules and typescript does that for us. Typescript helps us convey the intent of a certain piece of code, which makes it more easy to manage expectations for different flows. If you just work with any object, it's for example easier to think: "hey, this object makes its way from here to that other place where I need this data, let's add this property to this object", without considering what the object is supposed to represent. You can still do this in typescript, but by giving objects different names with well-defined properties, you make developers think twice. "Does this list of car doors really belong on the carrot object?"

Especially for projects that get touched once or twice per year and move from developer to developer, it's important to make your code speak and that's something that Typescript does for us.

If typescript doesn't work for you and your team, that's ok, this is just my experience.

That being said: I also see plenty of atrocious .NET code that definitely doesn't speak either.

tl;dr: I think typescript is useful, because it helps to manage expectations in code and it makes the code speak.

Collapse
 
liftoffstudios profile image
Liftoff Studios

All of this is true, add some serverless to the mix too

Collapse
 
leob profile image
leob

Serverless can actually kill & do away with lots of complexity, if used right ... I'm doing a serverless project right now and I love the simplicity of it - no Docker, no Kubernetes, no "Devops", not even managing a server :)

Collapse
 
liftoffstudios profile image
Liftoff Studios

I agree, but tbf serverless is just another hype trend (although it's way better than microservice hype), it's not always useful

Thread Thread
 
leob profile image
leob • Edited

It maybe another hype, but it's a hype that delivers results - I'm using it successfully as we speak:

I'm able to build an application that's 99% oblivious of going to have to run "serverless", and then I can (with a handful of simple tweaks) deploy it as a 'serverless' app - that's huge, as it gives me:

  • potentially huge (almost unlimited) scalability

  • not having to manage ANY infrastructure whatsoever - no servers (hence "serverless"), no Docker, no Kubernetes - just forget about "DevOps"

Most "hypes" or "trends" just mean more work and more complexity (looking at you, "microservices") - serverless, from what I can see, really delivers.

Thread Thread
 
liftoffstudios profile image
Liftoff Studios

Agreed :)

Collapse
 
prsaya profile image
Prasad Saya

I don't use those much, but, thanks for the humor (and sounds very real to me). And, I suspect the list is much larger than the 7 points!

Collapse
 
h_sifat profile image
Muhammad Sifat Hossain

Reverse psychology! I like it.

Collapse
 
alenvarazdinac profile image
Alen Varazdinac

This content reminds me of this website motherfuckingwebsite.com/

Collapse
 
mariocalin profile image
Mario

This is a bunch of pretty simplistic arguments to be honest. You Talk about downfall of web development but these are your frustrations.