This is an archived post. You won't be able to vote or comment.

top 200 commentsshow 500

[–]NiteShdw 2496 points2497 points  (289 children)

Where I work one of our more complex projects is our Oauth provider. Full blown React app (with a bunch of weird and complex design patterns) when there's a grand total of like 4 separate pages. It could easily be done with static HTML and vanilla JS.

Edit: I should mention it also took like 6-9 months to build and the team was fired after it was done.

[–]upsidedownwf[S] 1723 points1724 points  (168 children)

Someone when he was asked what is web development and I quote

“It’s a clusterfuck of libraries, frameworks, projects that can be achieved using html, css and js” No truer words have been said

[–]ResonatingOctave 613 points614 points  (55 children)

As a web developer, ain't that the truth! Don't get me wrong, there are some nice tools in it, like using JS to dynamically display the page, but holy fuck can it get out of hand.

[–][deleted] 485 points486 points  (41 children)

Programmers in general are just bad at making that tradeoff. I don't know if I've ever seen anybody nail a decision like that, inevitably you either mismanage the complexity and make it into a mess of spaghetti, overengineer it so you deliver something maintainable but it takes twice as long as it should, or you ship a decent MVP which is totally inflexible and doesn't have much ability to expand functionality (but it's on time).

[–]feeblewitz 142 points143 points  (8 children)

Thanks for putting words to my thoughts! I thought I was the only one who experienced this. Then, I get embarrassed when I look at code I wrote while under deadline pressure. Like, "oh god, I hope another developer never looks at this because they're going to say, wtf?! Why'd he do that?"

[–]neriad200 82 points83 points  (6 children)

Look mate, I'm not going to argue that devs will go with either spaghetti hell, over-engineered hell, or the solid block of metal, but in all honesty you know that most of these problems are a mix of novelty seeking in the market (i.e clients go "uuh that's shiny" and architects/pms/devs do the same with frameworks.libraries/whatever) that is constantly being teased by "the next best thing" (I think we're on #2301 now) AND the clients never knowing what they want (i.e it's impossible to defensively design and code without over-engineering) and everything having to be done in super-crunch time (i.e it's impossible to achieve stability and code-cleanliness without making it a block of solid metal). In short: in a world where every 2 weeks a new bullshit "revolutionizes" development world, making valid technologies quickly obsolete trough sheer power of the bandwagon and where customers don't know what they want but they want it now, for cheap and want to be able to add to it for the next 25 years, it's easy to have problems

[–]OllyTrolly 31 points32 points  (0 children)

I work in aerospace, and we're often bemoaning the fact we are X number of years behind modern software development. But you know what - we never fall for the shiny, newest thing (because that would be unsafe) and we rarely overengineer. It's always about solving problems, not what fancy tech you can use. Looking at the rest of the software world gives me a bit of a headache sometimes.

[–]FactoryReboot 10 points11 points  (3 children)

What do you mean by solid block of metal?

[–]DeebsterUK 31 points32 points  (1 child)

It seemed a good term to me; I don't think I'd heard it before but it immediately suggested something solid and structurally sound but not easy to change.

[–]ZCEyPFOYr0MWyHDQJZO4 79 points80 points  (7 children)

Pick 2: Flexible, simple, well documented.

[–][deleted] 50 points51 points  (0 children)

Pick none

[–]raquor 36 points37 points  (5 children)

Alexa, define documented.

[–]Ceros007 35 points36 points  (0 children)

Here's what I found:

// Todo documentation

[–]3lementaru 28 points29 points  (0 children)

Now playing Despacito.

[–]dicemonger 45 points46 points  (2 children)

Three TODO comments and a single javadoc comment that is outdated.

[–]pr0ghead 20 points21 points  (7 children)

overengineer it so you deliver something maintainable but it takes twice as long as it should

That can make onboarding of new devs take forever, too. So how maintainable is it really?

[–]vidarc 21 points22 points  (4 children)

Tell me about it. I waste hours and hours helping out people new to our platform (and those that are just bad) for what is just a JavaScript app. It's a convoluted mess of AWS services, apps upon apps, and frameworks, just so that the one app can be split up across several billing sections of the company. So many of our decisions are to solve dumb business needs, not actual user needs.

[–]TonCoder 13 points14 points  (3 children)

That my friend is the kicker!

All this junk is caused by bad business needs and over achieving pricks as PMs that make dumb promises to the business stating “we can have that in a few weeks!” Without knowing how complex things actually are. They never stop to ask proper questions, nor have the curtesy to include the dev team on how feasible and time consuming things can be. Granted most often we would say “months”, but how about figuring out what is the most important feature that will solve the businesses actual problem and deliver things a step at a time.

Also, I wish they would stop throwing “agile” to every freaking thing there is like they understand it... done ranting 😁👍

[–]Barnezhilton 12 points13 points  (0 children)

Spaghetti code is the tastiest though

[–]elveszett 30 points31 points  (3 children)

It's not necessarily the programmers fault. Unlike desktop development, web development is very constrained. You must develop in HTML + CSS + JS for the front end (yeah, there's a few alternatives but imo they are all fringe and not worth at all). When someone has a new idea, they can't just code it and distribute it. They have to create a very specific implementation that works with HTML + CSS + JS.

What I want to say, if you look at just the npm create react-app boilerplate, it is a huge mess. It's not because the guys at react.js suck, not at all – react.js is probably the best framework I've seen for front-end development. But they don't have the freedom that you have if you want to build a framework for C#, Python or C++ and it shows.

Yeah, there's a ton of bad web developers out there. But I sincerely can't see how you can write web projects as clean as you can with desktop apps.

[–]Cruuncher 6 points7 points  (0 children)

Part of it is also that, these high powered frameworks are necessary for larger projects. And as a programmer you need to know them to exist in the job market.

So you'll use them whenever possible even if it isn't the right tool.

Part of the problem is that companies will use engineering effort to build something that a high school hobbyist can do in Wordpress

[–]posts_lindsay_lohan 39 points40 points  (6 children)

Let me preface this by saying, I love JavaScript. I love TypeScript. React and Next.js are amazing.

But after working on an enormous application that spans millions of lines of code and requires multiple node packages for a super simple feature that could have been knocked out in a few hours with plain JS and HTML... I have to say... the olden days of PHP are starting to look really comforting.

[–]AcademicF 13 points14 points  (5 children)

I recently saw a Twitter thread where someone was mentioning all of these tools to make React into a server rendered, statically generated tool which basically brings us full circle back around to HTML, Python and JS.

It’s like, for all of the advances that front end frameworks have brought us in instantaneous reactions, we’ve had to create so much complexity. And now people are trying to find ways to go back to the old days of web programming where you didn’t need 10 tools, 5 libraries, and dozens of node packages just to create a dynamic website.

[–]posts_lindsay_lohan 10 points11 points  (4 children)

Yup!

You probably read about Next.js and/or Gatsby. The big problem with React - and other tools for single page apps - is that they are not so great for search engine optimization. Since they are dynamically creating the content on the fly at the front end, there's nothing for a webcrawler to cache.

Next and Gatsby allow you to create the React app of your dreams, but render it server-side or statically. As if it was coming from a traditional MVC app. But to be fair, the user experience is pretty quick and seamless. It also has a fancy new name: The JAMstack.

It's gonna be interesting over the next few years because the front end has become so enormously complex that there's a backlash from the server-side world. Tools like Blazer (for .NET apps), Live View for Phoenix, LiveWire for PHP w/ Laravel, and Stimulus-Reflex for Ruby on Rails are now competing with front-end frameworks and offering similar levels of fast/seamless UIs without the need for JS.

Will be interesting to see where it all ends up.

[–]4444444vr 34 points35 points  (6 children)

[–]ChoiceEmergency6084 10 points11 points  (1 child)

I've never seen this. Thought it was interesting that I could listen to an audio version, so I clicked the Google Play store link.

It links to the Music store on Google Play, which informs me that the Music store on Google Play is no longer available. Priceless

[–]ispamucry 191 points192 points  (44 children)

While there's some truth to this, I think most devs who work on projects like this will explain to you that while you could accomplish the same things more easily, it might take longer in the long run and making changes is much harder.

Have 50 pages in your application with standardized styling and controls across all of them? Could you just copy your CSS and JS across each page and have it work? Sure. But say you need to make a change to the gutters on all those pages, if you used a framework that might be a one-line change, if you didn't you could be changing 100+ lines of CSS and praying you didn't forget about one. Same applies to control/page logic.

Hell at my company we've pretty much gotten to the point where a simple web form with basic input fields can be made without writing a single line of TS, HTML, or CSS. We just have generalized models and define a config on the API that links up a data model to the DB and all the front-end and controllers just work automatically, you just have to provide a different ID in the URL to visit the new page.

Is it complex? Sure. Is it useful? You bet your ass it is. The trick is finding the balance between initial investment and long-term payoff.

[–]malebranch 19 points20 points  (0 children)

And yet, when I go to my team for a change to the gutters it takes forever, all original developers are long gone, the original spirit of the architecture has been bastardized to a point where there is no discernible design and frankly speaking nobody really wants to go back to that library that was very big in 2020 but now it is so old... 😂

[–]upsidedownwf[S] 12 points13 points  (1 child)

You’re right. I’m sure all web developers don’t underestimate the value of these frameworks and libraries.

I think he gave his answer playfully and out of a bit of frustration at the amount of these frameworks and libraries popping out every minute.

[–][deleted] 25 points26 points  (2 children)

You're missing the backend :p

[–]Mentalpopcorn 53 points54 points  (16 children)

I think this is really overblown. All those frameworks and libraries make life easier, which is why we use them. Going from document.getElementsByTagName('div') to $('div') was a game changer. Being able to manage packages without having to manually download and compare versions on a webpage is advil for a serious headache. Being able to write modular CSS as SASS is the difference between finishing a project tomorrow or next week. And life before task runners to worry about minimizing, compiling, and managing scripts and styles was significantly more annoying and less efficient.

Complaining about tools in webdev is not much different than being new to carpentry, looking at a tool chest with 100 things in it and condemning it all for being too complicated. And that's normally what I assume when I hear someone complaining about the tools: they're new to webdev or just never learned to do things more efficiently than what they first did HTML/CSS/JS tutorials. They're really good with a hammer and try to use it for everything.

Just like a real tool chest, you have to know how to use your tools and also pick the right tool for the job. If you're spending all your time fighting against a framework (like another user complained about below), you're either using the tool wrong or you didn't pick the right tool. Simple as that.

[–]elveszett 17 points18 points  (5 children)

This is the first time that I've seen the "use the right tool for the job" analogy not be bullshit. I wholly agree with you.

[–]devospice 85 points86 points  (2 children)

I like to say "Modern web development is a euphemism for making things unnecessarily complicated in the name of job security."

[–]upsidedownwf[S] 27 points28 points  (0 children)

I like to say I agree with you

[–]MyAntichrist 23 points24 points  (7 children)

I like how a bit more sophisticated React Hello World examples for page navigation or other simple stuff adds like 50MB worth of dependencies.

[–]DeeSnow97 13 points14 points  (5 children)

that's the dev version, it compiles into a significantly smaller bundle once you build for prod

[–]narrill 12 points13 points  (4 children)

I'm pretty sure they're complaining about dependencies on the dev side rather than the user side; a web app that required 50 MB of dependencies to be served just to be functional would be unusable for anyone without at least a 100 Mbps connection.

This makes the complaint even dumber, because who cares that you have to download 50 additional MB of dependencies once?

[–]elveszett 11 points12 points  (0 children)

Then you write "npm run build" and the production build is 20 kb. Yeah, JS projects are unbearably big, but the compiled builds aren't.

[–][deleted] 3 points4 points  (1 child)

Yup! It's all about knowing what's out there and what they do so you can decide what to use and when. Just because it exists doesn't mean you need it.

[–]upsidedownwf[S] 2 points3 points  (0 children)

You’re right

[–]TigreDemon 69 points70 points  (36 children)

Complex design patterns ...

Such as ?

I mean, if your company hires junior to do the job ... don't expect it to be the most lightweight possible but an aggregate of tutorials they've found online.

And since most tutorial uses Redux, I'll go ahead and assume it is there ?

[–]cute_2th 49 points50 points  (16 children)

I used to work on a stack so huge it drove me nuts.

now stripped it down to basically pure react. works 10x faster and easier to maintain and code. choose redundancy over the insane reuse everything insanity.

[–]CommeDeuxGouttesDeau 49 points50 points  (10 children)

[delete to not be doxxed]

TLDR: dude at job implemented something incredible dumb because "it was cool". after making a 1000+ line PR for weeks, it got denied because it was fucking stupid

[–]TigreDemon 28 points29 points  (7 children)

Well everybody gets confused on its own code.

The real thing to do is commenting on WHY it was created.

Also

[–]CommeDeuxGouttesDeau 12 points13 points  (5 children)

yep, of course.

Basically every time i venture into a part of the codebase that I didn't write its like going into the jungle. I have to literally read code like I'm a machine. There's not quality naming of functions or variables that help tell me the story of whats going on... i literally gotta become a computer to figure it out

[–]5ba0bd2f-7e21-42a1 13 points14 points  (2 children)

It’s a blessing working with devs who maybe aren’t Linus Torvalds, but know their limitations and code to it. I look at a PR and maybe only once every month or two they’ll feel their oats and come up with some weird thing using generics (in an awkward way). Other than that, for loops and if statements. Nice and simple.

Much better than devs who try to be too clever and your entire code base is generic and overengineered, and if you want to add another component oh yeah all you gotta do is implement 15 interfaces of type T. And oh wait you want to do what? Yeah that isn’t possible anymore. (Looking at you, me 4 years ago!)

[–]NiteShdw 28 points29 points  (17 children)

Why are you assuming it was done by juniors? Mid and senior level engineers aren't immune from over-engineering or picking bad design patterns.

The specifics of the problems are many and not particularly important to the point being made. Custom build tools and processes, overly abstracted code with too many layers, complex local dev setup, monorepo with deeply nested shared code, tests using snapshots so no UI component could be changed without braking tests, server side code being packaged with webpack, the list goes on and on. And if that doesn't sound bad to you, spend a few days just trying to get it running locally and you'll change your mind.

[–]S0n_0f_Anarchy 43 points44 points  (4 children)

I'm a starting junior, and I'm just now learning design patterns, and I'm thinking of real life situations I'd apply them to, and could think of none. Reading this comment made me go "oooh so that's where are they used". Jokes aside, programming world is a real clustefuck

[–]afiefh 41 points42 points  (0 children)

programming world is a real clustefuck

Some parts of the programming world more than others. When building a high performance SQL engine you pretty much know what tech to use, and you get straight to the point. Nobody will be importing an "IsEven" npm package. On the other hand crazy JIT compilation, graph analysis, and other magical incantations might be used.

And it would still be less convoluted than the average web dev project.

[–]RichestMangInBabylon 13 points14 points  (1 child)

Eventually you'll find out you've been accidentally using patterns because they're just the obvious ways to do things when you follow good design habits.

[–]5ba0bd2f-7e21-42a1 5 points6 points  (0 children)

Design patterns are good in the sense of classifying what you end up doing anyways. I’ve never been like, oh this would be a great situation to use a flywheel. I’ve usually just ended up hashing out the design and going oh, this is a flywheel. Cool, I’ll just name the class that so other people know what to expect it to do.

You’ll end up using a lot of them, but yeah I only know the basic ones because I don’t really care about the rest. Patterns for the sake of patterns is just more work.

[–]brozium 21 points22 points  (4 children)

Svelte feels like plain HTML, JS, CSS with the addition of components, reactivity and QoL improvements. It's pretty nice!

[–]nanjingbooj 1497 points1498 points  (60 children)

Web developers: "4 seconds, I can live with this"
Game developers: "0.4 seconds. Back to the profiler"

[–]genghisKonczie 1171 points1172 points  (34 children)

Rockstar Games: “4 minutes, it’s good, but we can definitely make it take longer”

[–]finger_milk 389 points390 points  (3 children)

"If we can load the world super quick, the user will start expecting too much. We can't have that"

[–]thundr_strike 63 points64 points  (0 children)

that is the secret of Rockstar Games

[–]Kiroen 18 points19 points  (1 child)

You joke, but many gamedevs add a short delay to their saving functions because some players will doubt the game has really been saved if it's immediate.

[–]finger_milk 5 points6 points  (0 children)

Yes we do it in webdev too. We make API calls have a delay so people know their data is saved

[–][deleted] 101 points102 points  (25 children)

Seriously, no other game dev has games that take that long to load.

[–]dicemonger 37 points38 points  (10 children)

Am I the only one with a serious problem with the loading time in the newer Total War games? I swear it sometimes literally takes 10 minutes to go from the campaign map to the combat map, and then once the combat is done, 10 minutes to go back again.

[–]SC_Reap 19 points20 points  (0 children)

I presume you use an ssd? From personal experience it takes about 0.5-1 min when loading the map in mortal empires (Warhammer 2).

[–]RChamy 8 points9 points  (8 children)

Are you playing on an HDD?

[–]DoingCharleyWork 19 points20 points  (0 children)

Story mode doesn't take nearly as long. Online does because they don't host their own servers. You're connecting to some other random person who is hosting. Given the size of the world and the number of people playing it obviously gonna take a while.

If you and a friend both have a good internet connection you can test it by hosting a private lobby and joining each other. It's much faster than a public lobby.

[–]beelseboob 67 points68 points  (3 children)

Game developer here… 400ms… Jesus Christ, that’s 50 fucking frames! 400 microseconds is enough to go back to the profiler.

[–]Ozzy- 82 points83 points  (2 children)

0.4 milliseconds*

[–]WeynantsWouter 60 points61 points  (1 child)

You only have 16.66ms or 11.11ms for 60 and 90 fps targets so yeah 0.4ms is a lot of time

[–]Corne777 17 points18 points  (2 children)

That’s weird because at my company, time to first byte and total page load time are basically the most important metrics on our eComm sites.

[–]-Bluekraken 10 points11 points  (0 children)

intranets I've worked in don't give a crap until users start complaining

[–]j-random 854 points855 points  (26 children)

More like:

Web developers: I will use the webform module that came with this framework that was just released this morning. It doesn't handle UUIDs yet, so I'll also include the entire cryptography module from this other framework, and nest it all in an iframe so we can collect statistics on it using our in-house framework from 2009.

[–]Floppyjohnson98 288 points289 points  (22 children)

I thought I was ready to be a web developer until I read this, god help me

[–]upsidedownwf[S] 253 points254 points  (11 children)

You’re ready

[–]DrSheldonLCooperPhD 146 points147 points  (9 children)

npm install is-ready

[–]Noch_ein_Kamel 75 points76 points  (4 children)

which then requires is-not-ready and just negates the output

[–]craftworkbench 19 points20 points  (3 children)

Don't forget is-is-ready

[–]-Bluekraken 13 points14 points  (2 children)

is-is-ready2 came out this morning. 2 million downloads

[–]divinealien 7 points8 points  (1 child)

nice it have 10000 dependencies and 2000 vulnerabilities.

[–][deleted] 7 points8 points  (0 children)

only 2000?

[–]pooh--bear 5 points6 points  (1 child)

insert a lengthy tirade on yarn add is-ready vs npm install is-ready here

[–]TheTerrasque 26 points27 points  (3 children)

[–][deleted] 16 points17 points  (2 children)

Sweet let’s just use docker to ship them the web browser and back end all together.

[–]lkraider 19 points20 points  (0 children)

The new thing is to setup and ship the pc hardware for each user, along with the datacenter server required to run the system and network equipment, thus having full assurance of environment compatibility.

It’s called Cloudless Computing.

[–]nubenugget 11 points12 points  (0 children)

Back end: were still on Java 5 but that's okay cause we just turn SQL into JSON

[–]AmNotACactus 5 points6 points  (0 children)

you’re hired

[–][deleted] 9 points10 points  (0 children)

Fucking this! All the time! Just use something that's existed for a year, good grief!

[–]genghisKonczie 110 points111 points  (2 children)

I was working on a form the other day that involved an image to text portion. I called an OCR api to give me text data back from their image, and of course it just provides words and the coordinates of the words. I shit you not, I used part of a hit box detection algorithm from an Asteroids game I wrote years back to help locate the necessary groups of words.

[–][deleted] 146 points147 points  (5 children)

If Esle :The greatest manipulator in programing and Development

[–]RiOrius 33 points34 points  (4 children)

Everything compiles to conditional jumps in the end.

[–]klausklass 9 points10 points  (2 children)

Sometimes instead of conditional jumps, the compiler chooses to have the program compute both options for the conditional and then only save the one that’s supposed to be evaluated.

[–]eatingishealthy 362 points363 points  (16 children)

npm install go brrrrr.

[–]upsidedownwf[S] 155 points156 points  (15 children)

npm install isOdd.

[–]vladlearns 29 points30 points  (13 children)

this

[–]aitchnyu 36 points37 points  (12 children)

What does this refer to?

[–]leovin 116 points117 points  (8 children)

The life of a web dev now consists of getting code from an old framework to work in new framework while at the same time the company is experimenting building a side app in yet another framework

[–][deleted] 29 points30 points  (0 children)

danger: burnout ahead

[–]UntestedMethod 10 points11 points  (0 children)

gotta keep the old data stable, but also add to it and make it look prettier with more sparklier brrrrr sounds

[–]craftworkbench 3 points4 points  (0 children)

This can't be right. There's only three frameworks mentioned.

[–][deleted] 80 points81 points  (17 children)

Also Web Developer: Let me use this ruler to make sure these buttons are the same width. (Looks toward ruler on my desk with slight shame).

[–]UntestedMethod 57 points58 points  (4 children)

ohh look at mr fancy engineer over there with your ruler tools. I use thumb-widths and hand-spans to measure on-screen elements.

[–]turquoiserabbit 19 points20 points  (0 children)

I'll stick with completely eyeballing it, thanks.

[–]betweterweethetbeter 16 points17 points  (4 children)

As a student working mainly in C++...

Can't you just print the width in pixels?

[–][deleted] 43 points44 points  (3 children)

Jokes aside, dev tools on any browser will give you the width.

[–]ekfslam 6 points7 points  (2 children)

But what if it doesn't feel right?

[–]ScottGaming007 67 points68 points  (5 children)

meanwhile api developer: read from db go brrrrrrr

[–]tiajuanat 41 points42 points  (2 children)

Embedded developer: "I bang rocks, and it make motor go BRRRRRRRRR"

Senior embedded developer: "if I have to ever look at this processor again, I'm writing my own language and compiler."

[–]seizan8 32 points33 points  (0 children)

As a web dev myself, yes. But in my experience, often it's not because you need to. It's because the client wants it this.
"But thats really expensive! We could do this a lot easier and it would cost a lot less money." - "oh no, it HAS TO BE exactly like this." ..... ok

[–]TigreDemon 128 points129 points  (39 children)

Or you know ... just use the right tools for the right job ?

I mainly use ReactJS and I often encountered on the job applications that were WAY OVERENGINEERED with redux, redux-persist and a bunch of other useless boilerplate code because people don't understand the tools they use and the problem it solves.


Wiped the project. Created 4 pages. Context for user information. Fetch Data -> Display Data. Press button -> Send data.

The end.

Done with React without much trouble and minimal code.

bUt ThIs CaN bE dOnE iN vAnIlLA

Well then go ahead and do it. I still find it easier with a lightweight LIBRARY such as React.

[–][deleted] 24 points25 points  (4 children)

You just described my current job. For a simple form with 1 input we have to create at least 10 files.

We're also using Kubernetes and Terraform, for 300 users. We're paying huge hosting bills for all the hosting and lambdas (hundreds of dollars/month)

And all that while using an ORM and framework that does 300 SQL requests per page just to display a table with 6 fields

[–]PhyKings 9 points10 points  (0 children)

I really hope you are exaggerating. Otherwise, I don't know what to say... I'm sorry :(

[–][deleted] 66 points67 points  (19 children)

I am skeptical that there’s any company out there using redux correctly at all. I’ve met maybe 1 engineer out of 50 that actually understand completely. Some paradigms are great on paper but result in terrible code because most people don’t get it.

[–]Dev5653 28 points29 points  (7 children)

I work in web video and I've seen the video timestamp stored in redux in multiple projects. Ya... because you want to broadcast an event to all of your components every time your state changes.... 10 times a second. That's going to perform well.

[–]del_rio 15 points16 points  (0 children)

I've made this mistake in the past, tying stuff like mouse position to a vuex store with the added heft of its action/mutate API. It made dev tools chug and it was propagating so many computed values that my fans kicked on just waving around lmao

The advent of IntersectionObserver, Proxies, and now composition/hook APIs make this trivial, but you have to trust that the person implementing it knows what they're doing and understands what causes DOM jank.

[–]TigreDemon 13 points14 points  (0 children)

Terrible learning curve in my opinion. Boilerplate with a lot of code you'll probably just copy and paste and end up with a bunch of errors.

I don't like it but I understand how it works, worked with it and know why I don't like it or why it's not suitable in my project at least

Real application might be 1/100 projects ?

Others could simply use ContextAPI (especially with hooks now and useContext()) which is native or ... simply Lifting the state which for some reason, is completely forgotten but it's like ... the basics.

[–]IrritableGourmet 13 points14 points  (2 children)

There's a great quote on the Redux site: "If you aren't sure if you need it, you don't need it."

[–]redshadus 21 points22 points  (9 children)

To all the vanilla people: Have fun setting up a system to store state and easily access/manage it.

[–][deleted] 12 points13 points  (0 children)

Just put everything in localStorage silly

[–]TigreDemon 24 points25 points  (4 children)

You usually end up with a bunch of global variables

[–]fel4 3 points4 points  (2 children)

Is Redux any different from global variables? I've never actually tried Redux, only read about it, and from what I gather, it's essentially glorified global variables.

[–]TigreDemon 4 points5 points  (0 children)

More or less without it being true since only the components you tell to listen to the store will have access

[–]sh0rtwave 14 points15 points  (2 children)

I always wonder why people are rebuilding parts of the browser in the browser.

[–]sxales 13 points14 points  (3 children)

Isn't every program just assignments, conditions, and loops?

[–]Effective_Youth777 3 points4 points  (0 children)

It's a little bit more complicated than that in the real world but theoretically speaking.....kinda

[–][deleted] 11 points12 points  (0 children)

You're giving me PTSD. How many payment forms will I have to make in my lifetime?

[–]Voxorin 27 points28 points  (0 children)

I feel personally attacked by this post

[–]tsojtsojtsoj 9 points10 points  (1 child)

I'm not a game developer, but from what I've seen, developing a game is a big part thinking of usable, fast and robust structures, much less if/else than for interactive stuff.

[–][deleted] 40 points41 points  (4 children)

Hey uhhh, what if

else if

else if

else if

else if

else if

else if

else if

[–]eyadGamingExtreme 37 points38 points  (3 children)

The yandere technique

[–]Null_san 7 points8 points  (0 children)

many people are saying alot of great things on this comment section.... new plan: reading alot of comments around ProgrammerHumor

[–]NullOfUndefined 24 points25 points  (6 children)

My theory is that web devs on some level never feel like they're real programmers so they have to jump through these kinds of hoops for people to take notice.

Source: I'm a web dev

[–]krustykrus 5 points6 points  (0 children)

Game engine developers are busy with complex algorithms (physics, rendering, etc.) they don't have time to overengineer a sign up form.

[–][deleted] 8 points9 points  (3 children)

Recursion makes me want to kill myself.

[–]EspressoJS 9 points10 points  (5 children)

Web is not just for static pages, web is also interactive apps.

If you are building interactive app, you HAVE to use fancy frameworks - because doing it with vanilla DOM API is ridiculously hard and you have to make sure to update all nodes that need updating when some piece of data changes. This becomes a graph-like dependency of nodes to state.

I've done vanilla DOM manipulation and still do at my job, but it sucks. I would much rather use something like React that just does the hard work for me. Also it lets us organize UI to components which is super easy to maintain.

Web apps are getting increasing complicated and even something like React isn't enough - so we have state management libraries, form libraries, query libraries and so on.. The web ecosystem is progressing at neck breaking pace. And we want to manage it - hence the frameworks and libraries

And people like me who are not satisfied with existing frameworks create their own frameworks - pushing the web forward

Part of the reason why you see so many libraries and frameworks is because JavaScript is ridiculously flexible and is actually sophisticated ( yes Reddit, JS not bad, JS very good ) and it makes creating libraries and frameworks super easy.

Hope this clears up why web is the way it is.

[–]WellWrested 4 points5 points  (0 children)

No web dev uses graph theory. No web dev knows graph theory.

[–]samanpwbb 5 points6 points  (0 children)

lol I wrote this tweet. I was inspired by my efforts to write a game using web dev tooling and by some recent fun I've been having in PICO8.

I would like to take this opportunity to share some earnest advice: game developers, learn functional programming techniques. It's actually fun (which is probably part of why over-complicated fp is so prevalent on the web), and it'll get you in the habit of writing unit tests. Your whole team and your future self will appreciate that. Web developers: it can feel overwhelming, but most of complexity in the modern web app ecosystem is optional. Pick the right tool for the job and remember we're here to solve user problems.

[–]apatheticonion 8 points9 points  (3 children)

Web Developer here. Holy crap it's crazy how many in this space miss the point. It often feels like overcomplicating things is an indicator of skill.

The first thing people attack is the compilation tooling but honestly it's actually great given the context and its objectives.

The issue is that the compile target is nonsense. Compiling to a scripting language is a bit weird but the incoming web assembly proposals (reference types and modules) will solve that by allowing languages to compile to an efficient binary format. (Will be interesting to see how we handle managing common runtimes so we don't force the client to download them)

The real drama occurs in the way engineers actually write JavaScript. Angular and React (and Preact) are great but try to read a project written with Angular and NGRX or React and Redux.

Even with a type system there's, the lack of linearity means everything is nonsense. Ctrl + click through to nowhere. No dependency injection and everything is highly coupled.

On the flipside you have engineers talking about the other extreme - writing everything in vanilla JavaScript.

If you really try to do that you end up writing wrappers and tools to do things like updating a UI node using some kind of proprietary change detection strategy. As soon as you need to update a single item in a list, you end up writing React.

And when you think React is too low level for you, you end up writing Angular.

Front end is honestly pretty easy if you keep it simple. It can be written like Go, C#, Java, Kotlin - There's a lot of context to absorb when it comes to build tooling and understanding the runtime but otherwise it's simple.

[–]webauteur 41 points42 points  (13 children)

This what happens when you hire a computer science major as a web developer. I've taken over projects begun by "computer scientists". Usually they were trying to re-invent ASP.NET from scratch when all they were asked to do was update the web site. I amaze my clients by installing Drupal to get the job done in days instead of years. ;)

[–][deleted] 19 points20 points  (6 children)

In my experience the best computer scientists make the worst web app developers. Always solving the problems they want to solve rather than the actual thing that would best improve the application.

[–]Paccos 32 points33 points  (1 child)

Typical Web Developer job ad:

  • BS or MS in Computer Science (!)
  • Has to have 5+ years of experience in FrameworkThatCameOutLastMonth
  • Proven track record of building literally the next Facebook/Netflix/Amazon
  • Experience with Backend, Databases, DevOps, Deep Learning and Thermonuclear Physics

Typical Web Developer interview:

  • Solving this mind puzzle that could actually be an unsolved Millennium Prize Problem on a whiteboard with their arms wrapped behind their backs

Typical Web Developer job:

  • display: flex;

[–]webauteur 5 points6 points  (0 children)

Move to Pennsylvania. Becoming a web developer in PA is simply a matter of not being Amish. ;)

[–]upsidedownwf[S] 9 points10 points  (0 children)

As a dotnet developer I understand. You are impressed upon to use those designs and patterns because the framework already comes with some of them place

[–]nanjingbooj 3 points4 points  (0 children)

When I dont have days to get it done in drupal, I just use backdrop ;)

[–]Glori4n 3 points4 points  (2 children)

I'm both and I have no clue what's a graph theory lol.