Want to subscribe to topics you're interested in?
Become a Member

Frameworks A Discussion on Modern Frontend Frameworks

Discussion in 'Web Development & Web Performance' started by Atrix, Dec 3, 2019.

  1. Atrix

    Atrix Member

    37
    13
    8
    Oct 7, 2018
    Ratings:
    +38
    Local Time:
    6:03 PM
    1.15.3
    MariaDB 10.1.36
    I'll make the summary in the first statement: I have not run across one I think is good for web developers, or the businesses they are used for as a whole. Quite the opposite in fact I find them detrimental on several factors.

    Hype Driven Development sums up my view on them.

    I wish however to discuss this with others here, thus this thread. Varying perspectives are nice, as is validation of your own thoughts. Keep it civil though please. Do not resort to ad hom (attacking the person, rather than ideas). Not only is it bad form but it discredits your view.

    I will go through several modern frameworks used in frontend development and link others (negative) takes on them I agree with not entirely but for the most part.

    React and Redux
    React and Redux are a joke right?

    This post is nice because it doesn't come off as old man yelling at clouds and has actual code examples to illustrate his points.

    What is more, Angular people seem think of React a lot of the time as a lazy version of Angular for bad developers. You can see some hints of that in this thread. devRant - I hate React.js with a fucking passion. It sounds great on paper, but once your project gets any size. The mental recursive loops of passing data around is insane. Not to mention keeping consistency a cross metric shit ton of components. How do you manage it?

    Ok so maybe it's just React right? You should never listen to someone just coloring all users of a framework as a certain type of person, but Angular is used a lot so lets investigate that one maybe it's just React that is to blame.

    Angular
    https://medium.com/hackernoon/why-angular-made-me-quit-web-dev-f63b83a157af

    This article is definitely more biased and has less code examples but I think it very well displays the frustration of someone who has had to use Angular quite a lot.

    So here is another source from someone that used Angular 1 a lot too. Again someone who has used the technology extensively. The bullet points in his conclusion read especially true.
    https://medium.com/dirtyjs/why-angular-2-4-5-6-sucks-afb36567ad68

    And another one:
    https://gist.github.com/Igogrek/36d47f7547b679e7dab2bc595e36c0e9

    One thing I do not agree with these two articles on however is any love whatsoever of typescript. I remember in college when I was learning to be a programmer that dynamic typing was sold as one of the great benefits of interpreted language. Then you get typescript coming along and specifically taking that functionality away to make it more like a compiled language. In my view, for no benefit outside more error reporting that wasn't needed in the first place. It simply adds complexity where it wasn't needed. Just like the framework that uses it.


    Vue.js
    I actually haven't found much negative info on it yet, but there's pro/con criticisms one of the cons being complexity. It's newer though, and a pattern has shown that people think something is great, get on the hype train, and then realize it was all a mistake only to get onto the next one. Due to the fact it shares so much in common with React and Angular I see it going the same route. I feel I only have to wait a few more years for the testimonies to roll in like above frameworks.

    In looking over its guide, it already does one thing all the others do wrong, making it take more lines of code to achieve the same result as simply using native JS or even jquery.

    I have found "Why React is better than Vue". So if that has any merit and we know how bad react is then that doesn't bode well.

    Knockout.js
    I hear even Magento2 is looking to get away from it after basing their store on using it extensively. A common search term is knockout.js is dead 2018. Here is an article explaining the lifecycle of javascript frameworks. (spoiler they are short and frequent). https://stackoverflow.blog/2018/01/11/brutal-lifecycle-javascript-frameworks/

    This article also points out one huge issue, that javascript frameworks are hype driven development.

    LESS AND Sass
    http://blog.millermedeiros.com/the-problem-with-css-pre-processors/
    While not specifically a javascript framework they are often used in tandem with them and have similar issues, for those that don't know it adds extra "features" to css allowing you to codify loops or variables within css and then generate a css file from the result.

    It is not only entirely unnecessary and bad design in my view to do this added complexity in CSS files, it adds a "compilation" step to making css changes. CSS 3 is extremely powerful on it's own and there's nothing you can end up with result wise that you can't get just smartly utilizing classes in your templates. CSS even supports native variables now, though I'd also suggest against using those most the time. Don't be afraid of search and replace it's been around forever and works quite well.

    I've never encountered a spot where I was thinking "I'm so glad this has SASS". Ever. More "Man now I have to deal with this other over engineered thing that doesn't serve a real purpose at all".

    The Travesty Of Over-engineering (My Conclusion)
    I am not a psychologist so I can not give a well researched opinion on why humanity is like this, but I can surely say it is. We over complicate things. Perhaps it is status, perhaps it is job security, perhaps it is the ability to call or make someone else feel stupid if they criticize your bloated over engineered thing (so again status), or perhaps it's just ego and a desire to leave a mark, even if that mark is manifested through pure BS and harm to the thing you left your mark on.

    It certainly does harm though. It creates longer development cycles for the same results, which results in lower productivity per developer, which results in higher costs to businesses. It also leaves one feeling empty and like they wasted 75% of their time fighting a system rather than building a solution. It doesn't help that most of the time when someone speaks up against these things, defenders of it exist who have vested interest in it for whatever reason; perhaps they spoke up about and it got their company to use it, perhaps that is how they make their living, perhaps they are just on that hype train and believe the lies they have been fed.

    Often too the criticism leveraged is either a No True Scotsman Fallacy (well if you did it RIGHT like a TRUE react developer you wouldn't have this issue) or simply Ad Hom (Well I guess you're just bad, maybe programming isn't for you). These are the marks of tribalism, not valid discussion. I also think new tech can be used as a way to gatekeep people. Ted spent 3 hours learning the new tech, over the weekend, and Dave didn't. It doesn't matter that the new tech is harmful to development, Ted knows something new, in tech. And Dave doesn't. So Ted gets more clout. Ted should be fired, and Dave promoted, but hey, Ted knows something NEW (even though it is not new at all, most these frameworks just are same iterations on the same stuff that has existed elsewhere too just not been as prominent and bad).

    In writing, I was told brevity is not only the pinnacle of good writing but is harder to achieve. It is HARDER to achieve simplicity. Not easier. Complexity is something to be constantly iterated out. Not years spent on ways to make simple things complex. There is a clear differentiation between a feature that is necessary, and introducing ideology into your code for the sake of it. Abstraction is ruining development and has been since at least the 90s.

    Thanks for reading if you did, hopefully we can have a nice civil discussion and such discussion is welcome on these forums, I have found these forums to have a pragmatic approach to things, as in, we like what gets good results. Centminmod itself is built very pragmatic. After using cpanel for years and hating it, Centminmod was a breath of pragmatic sanity.
     
  2. eva2000

    eva2000 Administrator Staff Member

    55,396
    12,255
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,835
    Local Time:
    10:03 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+
    Thanks for sharing - I am no web developer and couldn't write javascript if my life depended on it :LOL: There was an interesting conference talk by Tim Kadlec at Performance.now() 2019 Amsterdam conference (should have a youtube video too at https://www.youtube.com/watch?v=JvJ0v5OohNg). Slides from talk talking about frameworks and page load times and blocking browser main thread processing at When JavaScript Bytes by Tim Kadlec

    Look at React's performance - slowest of them all

    upload_2019-12-3_7-7-44.png
     
  3. diy

    diy Member

    50
    32
    18
    Jan 14, 2019
    USA
    Ratings:
    +48
    Local Time:
    8:03 PM
    nginx 1.19.x
    MariaDB 10.4.x
    You're right. Make work. Not solutions. Rinse. Repeat.

    Reminds me of cattle walking single-file toward the barn every evening. :)

    Humans are funny like that...
     
  4. deltahf

    deltahf Premium Member Premium Member

    587
    265
    63
    Jun 8, 2014
    Ratings:
    +489
    Local Time:
    8:03 PM
    Great thread; I agree with your views on this. As a long-time web developer (I started learning things on my own in 2001 and got a CS degree in 2008, then studied software engineering in graduate school) it's been interesting to see the rise of these "frameworks".

    I went to a "demo day" for a local Web Developer Bootcamp by a local tech workspace company, where the students were showing off their final projects. Their project presentations were not bad, and I was impressed with what they had built as new developers.

    However, the more I spoke with the students afterwards and the more I started asking them about how they made their projects, I came to realize they had not learned how to be programmers — they had learned how to use frameworks like jQuery and Laravel. They didn't really understand basic concepts like functions, classes, inheritance, operators. They didn't even have a solid grasp of HTML, the DOM, or Javascript. They just knew how to put these larger pieces together to make something.

    There's nothing wrong with that, but if these people are the "web developers of tomorrow", we've got a problem. Developers are learning these frameworks first, without understanding how the underlying technology works. If they need to build a website — not a "web application" — they are going to reach for these heavily bloated tools that are used to create complex web apps like Facebook and Gmail. Not because they need them, but because that's all they know.

    When I told the students about my experience and then told them I didn't know Laravel myself, they were confused. They didn't understand how you could build a site without using Laravel, and they didn't understand how PHP could be used on its own.

    I think we are already seeing the results of some of this.

    Take, for example, the place where I get my haircut. They just switched to a new online reservation system. This should be about as simple as it gets. Pick who you want to cut your hair, select an appointment, and you're done. Instead, you can tell it's some awful, over-engineered "web app" built in React that downloads several megabytes worth of goop and doesn't even work. Now I have to call them to make appointments.

    Welcome to the future...
     
  5. eva2000

    eva2000 Administrator Staff Member

    55,396
    12,255
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,835
    Local Time:
    10:03 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+
    You hit the nail on the head. I guess a lot of automation or bundling with frameworks and even LEMP/LAMP stack installers and control panels start to breed *some* folks who don't know any better. That includes Centmin Mod I guess :LOL: For me as maintainer and developer of Centmin Mod I've learn more though :D Guess it would be the same for developers of these frameworks as opposed to the users of these frameworks.

    I read the average Australian's mathematics and grammar skills have fallen the past few decades. With the invention and use of calculators, mobile phone calculator apps and spelling/grammar auto correction etc, folks probably forgotten how to do more more complex mathematics using only their brains ! In some shops when I am paying for stuff, I can calculate the change I am owed in my head faster than the person using the calculator usually :) Seriously do you need to you a calculator to figure out how much change I am owed when I pay with $20 note and the price is $4.50 ?

    With that said, javascript is something I want to learn as Cloudflare Workers is something I want to take more advantage of. Right now I am pretty good at pattern recognition taking pieces of CF Worker code from various places and piecing it together and surprisingly it works :LOL::D That's how I usually learn to start with :) Then reading manuals/documentation and practice :)
     
  6. Atrix

    Atrix Member

    37
    13
    8
    Oct 7, 2018
    Ratings:
    +38
    Local Time:
    6:03 PM
    1.15.3
    MariaDB 10.1.36
    I'm surprised that you were impressed by it, unless they were fairly typical canned projects, since any time I've ever had to use them all it did was make doing something take 4x as long to develop, maintain and debug.
     
    Last edited: Dec 13, 2019