[HN Gopher] Why is front-end development so unstable? (2018)
       ___________________________________________________________________
        
       Why is front-end development so unstable? (2018)
        
       Author : ddtaylor
       Score  : 82 points
       Date   : 2022-05-30 18:45 UTC (4 hours ago)
        
 (HTM) web link (www.breck-mckye.com)
 (TXT) w3m dump (www.breck-mckye.com)
        
       | shaunxcode wrote:
       | Because it is the frontier which by definition is unstable!
        
       | jansan wrote:
       | Front end develoment has never been more fun if you can keep up
       | with the pace. Finally all major browsers have decent standard
       | support (no Internet Explorer anymore), so crutches like jQuery
       | are not needed anymore.
       | 
       | Developers constantly find new ways to implement front end apps,
       | and they are not afraid to break backwards compatibility. This
       | may be bad if you have an old monolith to maintain, but overall
       | it's a good thing IMO.
       | 
       | Also, this is not limited to libraries. Have you looked at what
       | speed Chrome devs are implementing new APIs? It's insane. And
       | great.
        
         | jraph wrote:
         | > Have you looked at what speed Chrome devs are implementing
         | new APIs? It's insane. And great.
         | 
         | It's not great. It is bad, really. It means no one that hasn't
         | dozen millions of dollars can implement or even just maintain a
         | viable browser that can keep up. And since we expect browsers
         | to be free, that means... "complicated" business models _cough_
         | mostly1 relying on ads and tracking _cough_ to maintain the
         | Web.
         | 
         | I which it wasn't this way really. There was a time when it was
         | possible for a few people to implement a quite good browser
         | engine in their free time. KHTML. So good, in fact, that it was
         | chosen as the basis of WebKit (and therefore Blink). This does
         | not seem possible anymore.
         | 
         | 1. There's Apple maintaining a browser engine without relying
         | on ads, but their business model is also questionable.
        
       | daenz wrote:
       | Fads are tempered by a community of people anchored in a deep
       | understanding of the technology. As talented as many FE engineers
       | are, I can count on one hand the number that I've met that have a
       | deep understanding of things like await/async + Futures,
       | closures, DOM trees, etc. These things are (perhaps
       | unfortunately) required to do FE work, yet the engineers using
       | them don't fully understand them, so they don't know how to
       | discern if helper libraries are actually helpful.
       | 
       | Additionally, I'd argue FE draws more junior people in general,
       | because of the theoretical rapid feedback loop, and the fact that
       | you can "make something that looks cool" with relatively little
       | effort (relative to a BE engineer). These junior people add
       | confusion to the chaos of the community because they don't know
       | what they don't know, so they're cocksure about their opinions.
       | And as long as they've "made something that looks cool", even if
       | the architecture behind it is hot garbage, it buys them cred in
       | the community.
       | 
       | Somewhat related, I've been using Flutter for a recent FE project
       | and I'm in love with it. It's more for webs/mobile applications
       | than websites, but the ergonomics of it feel like a coherent
       | vision. The people maintaining it (Googlers) are excellent, and
       | the Dart library community seems to know what they're doing.
       | Furthermore, the FE design choices are based on Material
       | Design[0], which is backed by (some informal) research by UI and
       | UX professionals, so you don't have to sweat usability quite as
       | much as you would starting from scratch.
       | 
       | 0. https://material.io/components?platform=flutter
        
         | randomtwiddler wrote:
         | It's interesting how you can look down on front end for being
         | new and naive while suggesting that Google is a fine reliable
         | tech stack provider.
         | 
         | I'm the opposite of everything about this post. A very
         | experienced dev (>20 years professional experience) that has
         | moved primarily to the front end recently in my career
         | (gradually over 4 years). I won't touch flutter simply because
         | the sole vendor and essential dependency is Google.
         | 
         | Fads are present in every corner of development. As is "not
         | invented here" or the general draw to green field.
        
           | daenz wrote:
           | If you're looking for a response, you're not really giving me
           | much to respond to. Why do you think Google doesn't provide a
           | "reliable tech stack" ? In any case, I wasn't suggesting that
           | specifically (though I tend to agree with it), only that they
           | have a coherent ergonomic vision by competent engineers.
        
             | randomtwiddler wrote:
             | Google doesn't have a track record of long term support for
             | their projects. They readily cancel them when they want to.
             | 
             | I would hate to invest precious years into tech and apps to
             | have the rug pulled out from under me because flutter
             | entered the Google graveyard.
             | 
             | They do have competent engineers, and if they get
             | sufficient community buy-in, I'll be much more open to it.
        
               | daenz wrote:
               | That's fair. I feel more confident about Google's OSS
               | (like flutter) surviving than I do about Google's
               | consumer products. The flutter community is very strong,
               | and as far as offerings go, it's (imo) the strongest
               | product that abstracts UI/UX development over web and
               | mobile, and the demand for that abstraction is very real.
               | 
               | Plus having Dart (which feels a bit like Java, but less
               | verbose) as the foundation language raises the bar in
               | terms of library code quality (compared to Javascript at
               | least)
        
       | blenderdt wrote:
       | It also has to do with the low entry level. The same happened to
       | PHP. Inexperienced programmers can easily create nice things that
       | look great on the outside.
       | 
       | Libs like React and Vue are stable enough but when you throw in a
       | lot of other dependencies it is always the question how
       | experienced the creators were. And when unstable libs become
       | popular bugs and security issues are exposed, pull requests are
       | created and before you know it a next version is launched that is
       | not backwards compatible.
        
       | [deleted]
        
       | DrFell wrote:
       | Because it's all social media trends driven by noobs?
        
       | anyonecancode wrote:
       | Maybe I'm the odd one out, but I feel like the instability is
       | mostly surface-level and FE is not, actually, so much less stable
       | than other areas? I got into tech via web development, migrating
       | further into the backend over time, and about four years ago
       | became pretty much exclusively backend. Just started a new job
       | and I'm back in the front end.
       | 
       | Some things have changed, but not that much.
       | 
       | - Typescript was just getting popular when I left, now it's
       | basically a standard, but 1) after having been in javaland for a
       | while, adding typing to JS makes a lot of sense to me and 2)
       | though it's a change, feels like a change toward more stability,
       | not less?
       | 
       | - React was the big framework when I left, still is the dominant
       | framework.
       | 
       | - There's still a lot of option -- eg vue, etc. nextjs wasn't a
       | thing I knew about that I am starting to learn now. Class syntax
       | felt unecessary to me but seems to be de facto these days. But...
       | these all feel relatively small?
       | 
       | I started in FE back in the days of IE 6. jQuery was a godsend
       | when it arrived, underscore was super helpful. I'll grant the
       | shift from "we use JS to add some interaction, form validation,
       | and sometimes interact with Flash" to "we use JS to write actual
       | programs delivered via your browser" was a huge shift, but since
       | we've made that shift it seems most of the "instability" is more
       | around FE devs adopting practices already common in the rest of
       | the stack.
       | 
       | I think maybe that's where this sense of instability comes from
       | -- a focus on the wide array of possible _implementations_ -- but
       | I feel the really disruptive shift from "interactive decoration"
       | to "web applications" was the really big one, and that's a while
       | back now. And even with the dizzying array of possible
       | implementations, there's obvious market leaders -- you're not
       | going to go wrong by learning React, any more than you're going
       | to go wrong by learning Spring Boot. Always good to explore and
       | get familiar with other libraries and frameworks, but if one feel
       | overwhelmed by options, there's some clear well trodden paths
       | that aren't changing _that_ fast.
       | 
       | One thing I will say is that I do think FE is _harder_ than BE,
       | because the scope is wider. You need to grasp all the aspects of
       | good programming, but _also_ get a decent grounding in design and
       | UX, which are their own disciplines. A backend API doesn't have
       | to think about things like screen readers or color contrast or
       | all the weird ways users will figure out to misunderstand how to
       | interact with your GUI widgets. A UI for humans is inherently
       | harder than a UI for machines. But that's not the same thing as
       | saying that the FE is unstable.
        
       | danenania wrote:
       | A lot of it is that UI programming is just difficult and
       | inherently complex.
       | 
       | Expectations of users are very high and always shifting.
       | Browsers/consumer OSes are constantly moving targets. Mistakes
       | and bugs, even small ones, stand out in a glaring way, so there's
       | low forgiveness. There are more code paths and they're harder to
       | test.
       | 
       | All that means that unless you want to miss your deadline by a
       | year or leave a bad impression on users, you will need a lot of
       | libraries!
       | 
       | Backend/systems specialists always underestimate how hard UI
       | programming is. Then they try their hand at frontend and quickly
       | run into a wall. They find they either need to build something
       | clunky that users aren't impressed by or else spend a lot of time
       | learning new tools and paradigms (and yes, installing lots of
       | dependencies /shiver). This is a blow to the ego, so it's better
       | to criticize the language, the culture, the "churn"... anything
       | to avoid admitting the pixel pushers are solving seriously tough
       | problems too :)
        
         | [deleted]
        
         | daenz wrote:
         | >anything to avoid admitting the pixel pushers are solving
         | seriously tough problems too :)
         | 
         | That's not how I view it, as a SRE/BE-SWE who has done
         | substantial visual/FE work. From my perspective, the majority
         | of problems in FE are due to extremely poor libraries and
         | standards, bolstered by a community where copying and pasting
         | large chunks of unknown code is acceptable. Yes, there are
         | "seriously tough problems" with trying to develop in that
         | world, but they are of a different world than most BE problems,
         | from my experience. So they feel comparably difficult, but for
         | very different reasons.
        
       | zackify wrote:
       | I've been using react for 8 years. In that time I've gone from
       | webpack, to vite.
       | 
       | Lately using remix or nextjs. Not that much has had to change in
       | that time, it definitely feels more stable in the past 5 years or
       | so.
       | 
       | Every new library is using components, just with their own
       | preferred syntax.
        
         | taeric wrote:
         | I'll agree it feels a little more stable in the past 5 years or
         | so. I do have a sense that a lot of the UI libraries we used on
         | our project are working fine, but are also deprecated and have
         | a doom's day clock on them. Oddly, this is as much from "in
         | house" widgets as it is 'in the wild" ones.
         | 
         | Specifically, I know that if we want to bring in some widgets
         | that were created this year, we have a massive upgrade task
         | ahead of us. :(
        
         | ldjkfkdsjnv wrote:
         | Yeah I actually think react is the stability. Its still here,
         | still the main choice.
        
       | newbieuser wrote:
       | I think we should stop talking about libraries and talk about the
       | crap of browser specs. Libraries are just a tool and evolve over
       | the years. but browsers are getting worse every year
        
         | eyelidlessness wrote:
         | Asking sincerely because this take is surprising to me: which
         | specs are you referring to?
         | 
         | From my perspective--started front end, gradually went full
         | stack, spent several years fully back end, dove back in a
         | couple years ago--quite a lot of the APIs introduced in the
         | period I was fully back end (and since) are excellent and
         | vastly improve both development experience and the ability to
         | deliver a better user experience.
         | 
         | I'm not saying your take is _wrong_ necessarily, I just don't
         | immediately relate to it and I'm curious what specifically you
         | find objectionable.
        
           | spiffytech wrote:
           | > Asking sincerely because this take is surprising to me:
           | which specs are you referring to?
           | 
           | I'd like to see the Web Components spec revisited: it has a)
           | no API for passing non-string attributes to other web
           | components, b) no API for declaratively updating your DOM
           | subtree - you either do manual surgical DOM changes, or blow
           | away your (potentially stateful) children and recreate them.
           | 
           | Without these, the raw web components API isn't suitable as
           | an alternative to React et al. You've got to build a whole
           | framework around them (like Lit), and at that point you're
           | just using another framework.
        
       | marcosdumay wrote:
       | Hum... The Great (Web) Frontend Revamping seems to have passed.
       | Nowadays people are still discussing if React or Vue is better,
       | with a clear intonation of "whatever works for you, I prefer X".
       | 
       | Looks like the field is maturing.
       | 
       | Either that or we are on a fake calm before we see a lot of
       | articles about people migrating into wasm in "whatever language
       | has support for it right now" (AFAIK, currently wasm goes with
       | rust).
        
         | sircastor wrote:
         | This doesn't feel that different to me from ~2010 era jQuery vs
         | Prototype vs ...Dojo(?) these things happen in waves. I've
         | wondered if the next revolution will be wasm, or another round
         | of JS magic... or something different.
        
         | jansan wrote:
         | If you started with Vue two years ago, you had to learn Vue 3
         | shortly after that. With a new Vuex. Which has been dropped
         | since in favor of Pinia. Oh, Vite has been developed since, so
         | you may want to add this to your stack, because it makes
         | compiling during development so much faster. Also, be aware of
         | all the breaking changes that Webpack 5 has introduced.
         | 
         | I hope front end development will be more stable in future, but
         | the last two years where full of pretty major changes.
        
           | suction wrote:
           | The Vue 3 disaster (in my opinion) shook my trust in the
           | framework forever. I immediately knew this is not a framework
           | I will spend any more time in. What if I "upgrade" my apps to
           | 3 and then Vue 4 comes along with yet another fundamentally
           | different concept? This is not acceptable for apps with any
           | kind of long time support requirement. Yes I know, Vue 2
           | paradigms are still usable in 3 but they feel very
           | deprecated.
        
             | gherkinnn wrote:
             | Coming from Vue 0.x and 1, Vue 2 felt wrong. It didn't know
             | what it wanted. Classes and hooks and decorators and
             | options and only some obscure combination offered
             | acceptable TS support.
             | 
             | Having only read the docs, Vue redeemed itself with version
             | 3.
             | 
             | There's the options API we know and love from v1 and the
             | new and intuitive composition API. The docs make it easy to
             | decide and not to mix them up. And no useEffect fuckery.
        
             | KaoruAoiShiho wrote:
             | Don't think Vue 2 to Vue 3 is that bad, certainly nothing
             | like AngularJS to Angular. You can still conservatively
             | upgrade piecemeal elements of your stack and most of the
             | code still just works.
        
         | darepublic wrote:
         | Don't worry, view layer may be stabilizing but what about
         | 
         | Managing backend requests is too complicated!(react-query)
         | 
         | You *need* gql don't you?
         | 
         | Don't forget forms. Super hard to do right. react-final form,
         | react form hook, etc
         | 
         | We need a monorepo framework! Nx, turbo, rush, pnpm (too low
         | level), Lerna (too old and unmaintained)
         | 
         | What about bundlers huh? Vite, esbuild, rollup, webpack
         | 
         | I still see plenty of opportunity for teams to ignore
         | persistent issues and just diagnose a new framework without
         | analyzing their current woes. Silver bullets for everyone!
        
           | nicoburns wrote:
           | The difference is that's all ignorable. If you want to
           | standard React with classes, redux, npm and webpack like it's
           | 2017 then you absolutely can, and it's still a maintained and
           | supported solution.
           | 
           | That's very different to say the evolution from JQuery to
           | Backbone to AngularJS to React where you ended up being on an
           | increasingly unsupported platform if you didn't upgrade.
        
             | darepublic wrote:
             | It's not really ignorable, these frameworks come ready made
             | with converts seeking to spread the good news to every
             | codebase they find. Understanding, let alone improving,
             | legacy code is a total waste of their awesome powers. It's
             | raze the city and build paradise from scratch. Using shiny
             | new framework (tm).
        
               | nicoburns wrote:
               | That's what tech leads are for. To be the person with
               | experience and judgement who has the authority to set the
               | rules for the rest of the team on these kind of
               | questions. If you're having problems with this I'd
               | suggest you have more of a hiring problem than a
               | framework problem.
        
               | darepublic wrote:
               | you might be right on the money with that. I mean it also
               | reflects badly on me in regards sort of jobs I find
               | myself in where this is a recurring problem. But.. I feel
               | like it may be more widespread problem than most people
               | admit.
        
           | [deleted]
        
       | Atheros wrote:
       | UI/UX is a fundamentally flawed field for a number of
       | intersecting reasons, most of which boil down to not really
       | distinguishing between when it's doing engineering, when it's
       | doing psychology, and when it's doing fashion. And these days, on
       | web apps and mobile apps, it mostly does fashion. Fashion must
       | change for the sake of change. To more easily support these
       | frequent changes, more libraries get invented to make doing new
       | things easier. After that, everything in the article makes sense.
        
         | sjtindell wrote:
         | I'm not sure fashion feels like the right term. People just
         | assume newer equals better. So they want to use the latest and
         | "greatest".
        
           | azemetre wrote:
           | This sounds exactly like fashion to me. One just has to look
           | at how often design has changed over the last decade with the
           | many fads and worst UX.
           | 
           | I feel like when you have an org of designers they will
           | justify in wanting to redesign everything because why else do
           | you need them? The same can be said for some POs and devs as
           | well IMO.
        
             | fny wrote:
             | Yup. The most brutal environments I've ever worked in
             | canned design folk very quickly once a cost crunch arrived.
             | Some startups would even can designers first to save cash.
        
         | [deleted]
        
         | csande17 wrote:
         | > Fashion must change for the sake of change. To more easily
         | support these frequent changes, more libraries get invented to
         | make doing new things easier.
         | 
         | The frontend "ecosystem" libraries discussed in the article are
         | _also_ subject to a fashion hype cycle, independently of UI /UX
         | design trends. A lot of them don't actually make anything
         | easier, or don't make rapid design iteration easier at least.
        
       | [deleted]
        
       | HidyBush wrote:
       | The old saying goes like this: "if you want freedom on one layer
       | you need stability on the layer below"
       | 
       | My guess is that since frontend web development is at the top of
       | the stack it has an incredible amount of freedom so everything
       | changes every minute. You don't see too many people wanting to
       | subvert HTTP making a billion homemade alternatives
        
         | capableweb wrote:
         | > You don't see too many people wanting to subvert HTTP making
         | a billion homemade alternatives
         | 
         | No? I constantly come across new protocols, promising
         | improvements compared to it. Some even become relatively
         | popular and are included in browsers by default. Just some
         | examples are WebSockets, WebRTC and QUIC. I expect we'll see
         | more of them in the future as specific use cases requires more
         | specific protocols.
        
           | ezsmi wrote:
           | I think you make a fair point but on the other hand I don't
           | see many "top 20 alternatives to http in 2022" articles
           | (which implies there are more than 20 alternatives) like we
           | have for front end technologies.
           | 
           | I.e. https://www.netguru.com/blog/front-end-technologies
        
             | bobthepanda wrote:
             | I think part of it is also level of effort.
             | 
             | You could right click "inspect element" in any browser and
             | mess around in the html or the JS console and see things
             | happening live. This is an extremely low barrier to entry.
             | 
             | Low barriers to entry are good, our profession is very well
             | compensated and developed economies could certainly use low
             | effort ways to get people from lower compensated jobs into
             | higher compensated jobs* but that also means that there are
             | _a lot_ of cooks in the kitchen.
             | 
             | ---
             | 
             | * yes, tech isn't for everyone (what job is?), and when I
             | say low barrier to entry I mean you don't really need to
             | subject yourself to what could easily be 5-10 years of
             | schooling in medicine or law or engineering.
        
               | HidyBush wrote:
               | the level of effort is determined by how deep in the
               | stack you are. if you make a new JS framework every
               | single browser will run it, if you make a new web
               | scripting language good luck getting support from even
               | one browser
        
           | dgb23 wrote:
           | Those are orthogonal choices though.
        
       | jokethrowaway wrote:
       | Frontend is the entry level field for all those people who were
       | not developers but wanted a slice of the salary pie. Designers,
       | architect, lawyers. I've seen everything.
       | 
       | I know a few React engineers in my company who can make
       | components and be productive - but they don't know JavaScript and
       | they get stuck when something is slightly different from what
       | they're expecting.
       | 
       | Similarly I'm mentoring a few engineers who started with react
       | and are trying to learn backend and other languages.
       | 
       | Being the field where all the least developer figures start means
       | you'll have tons of people, tons of visibility, tons of cargo
       | culting and tons of crap being built just to make you look
       | cooler. I'm guilty of this as well, I have my frontend framework
       | on GitHub and it's quite useless - even if it's a nice idea.
       | 
       | Of course nobody bothers to maintain stuff and everything is
       | trying to make money on their junior devs fanboys.
        
       | spion wrote:
       | Lack of standardization is the primary reason we have this
       | problem in the JS ecosystem.
       | 
       | "Productive" ecosystems (e.g. Rails, Elixir) usually have one
       | central framework that provides the standard basics. Libraries,
       | tools and other extensions are built on top of the framework to
       | enhance the feature set. Everything typically works well
       | together.
       | 
       | JavaScript has multiple frameworks to implement components,
       | multiple tools to implement bundling, multiple tools to implement
       | modular/extensible stylesheets, multiple package managers with
       | somewhat different features (e.g. when it comes to monorepo
       | support), and multiple libraries to implement basic standard
       | functions.
       | 
       | Many of these are not compatible with each other. Compatibility
       | is a combinatorial explosion problem that cannot be solved
       | without standardization. Without it, you need to have m*n modules
       | to have m things talk to n other things. Extensions to the
       | ecosystem therefore typically have partial compatibility with all
       | the tools, which further widens the breadth of the problem.
       | 
       | There's been very little effort in the community to standardize
       | interfaces and protocols: but for the few things where it has
       | been successful (e.g. see package.json) we've seen much nicer and
       | smoother interop/tool interchangeability. We need more of this,
       | especially when it comes to open-ended "plugin" style stuff (e.g.
       | bundler plugins/extensions, component interfaces, monorepo
       | structures)
        
       | sbf501 wrote:
       | Here's an unpopular opinion: it is unstable because we don't know
       | what exactly "front-end" means. First it was static HTML pages,
       | then it was CGI, then it was PHP, then it was Rails, then it was
       | Node, then it was React, Angular, Vue...
       | 
       | Those aren't random progressions. On the contrary, they are
       | front-end devs responding to needs of the UX moreso than the UI.
       | There have been major efforts to make reactivity match what the
       | user is trying to do, but we're still in unstable-land because
       | we're building the bridge while we cross (I hate that analogy but
       | it is true).
       | 
       | Just my $0.01.
        
         | truthwhisperer wrote:
        
       | heseyin wrote:
        
       | moonchrome wrote:
       | Saying React support libraries are at fault here is not fair -
       | React basically reimagined itself over the years and went from OO
       | and class based components to hooks and functions. The fact that
       | you can still do OO isn't really helping it since it adds to the
       | complexity of things you need to learn to grasp the ecosystem.
       | 
       | But that's honestly missing the forest for the trees - JavaScript
       | itself went from asynchronous callback pyramid of doom, to
       | promises and callback chaining, to async/await. The community
       | went through multiple half-assed module
       | approaches/specifications. Several FOTM bundlers with extreme
       | complexity and various tradeoffs. Various build systems.
       | 
       | Features like hot reloading, transpiling, source mapping,
       | shimming are table stakes for any frontend framework and involve
       | _a lot_ of complexity and tooling - because the entire ecosystem
       | is built on a foundation of shit that is JS and the browsers.
       | 
       | So frontend frameworks are the least relevant part here - it's
       | everything that makes them tick that's the problem.
        
         | holoduke wrote:
         | I don't know one single UI/UX development environment which is
         | elegant and nice. From Android to iOS to Linux to Linux and
         | Windows to browser UI kits. They are all complex and require
         | constant searching for answers. The libraries are very big and
         | require a complex tooling setup. You can never be an expert in
         | all of them. At least not me.
        
           | api wrote:
           | My pet hypothesis for years has been that developers always
           | vastly underestimate the difficulty of doing a UI framework
           | or environment. They think it'll just be a matter of painting
           | widgets and presenting data. As a result they under-build the
           | foundation. The insufficient structure is then released out
           | to the world for everyone else to build upon.
           | 
           | Once people realize the soul devouring chthonic difficulty of
           | doing good modern UI, they've already built on a shit
           | foundation and been forced to realize the full system with a
           | heap of ugly hacks and workarounds.
           | 
           | Then someone thinks "wow, this is way too complex! All I need
           | is a simple UI." Then history repeats.
           | 
           | You can see this with immediate mode clean simple GUI library
           | of the week. They all stagnate after getting all the basics
           | working, and there's a reason for this.
           | 
           | A good mature modern UI is at least on par with a high-end
           | game engine like Unity in terms of feature surface area and
           | difficulty. In some ways it's worse because while the breadth
           | and size of the problem domain is similar the problems you
           | encounter in a game engine are probably a lot more fun. UI is
           | a hell of incredibly hairy state management and a really long
           | tail of edge cases.
        
             | cloogshicer wrote:
             | I think you're spot on.
             | 
             | My hypothesis has been for a while: UIs essentially _are_
             | video games. They have animations and interactions that
             | rival the complexity of video games. Sometimes they even
             | have sounds too. The rendering is not quite as complex
             | (usually!), but everything else definitely is.
             | 
             | I'd like to see a UI system that is built by experienced
             | game devs, who _also_ are good at and understand
             | interaction design.
        
               | jwatte wrote:
               | This is probably a better comparison than one might at
               | first think.
               | 
               | A game engine has a second, hidden, part of the iceberg:
               | The production pipeline for all the 3D world/art assets.
               | 
               | That's actually where most of the work goes -- hundreds
               | of artists go into a AAA game, and all the art they
               | produce must be technically excellent along a bunch of
               | dimensions that have nothing to do with what it looks
               | like (and in fact, generally make it harder to achieve
               | the look you want.)
               | 
               | Game engines that can wire physics simulation to 3D
               | rendering to window abstractions are easy-ish to make,
               | similar to how web UI frameworks are easy-ish to make.
               | 
               | All the production pipeline stuff is where the real meat
               | is, similar to how in WebUI and, package management and
               | transpiling and bundling and deploying is a hard problem.
               | I think the game side has it even harder than the web
               | side, though, although they usually have the benefit of
               | only needing to work on a defined set of platforms,
               | rather than in "the" browser.
        
           | [deleted]
        
           | moonchrome wrote:
           | Pretty much anything after C/C++ era comes with a usable
           | build system, modules and a package manager. JS is really
           | stuck dealing with insanely low level issues in shit ways for
           | various historic reasons.
           | 
           | As shitty as Android support matrix can be - it doesn't
           | compare to IE6 web days (at least in terms of UI development,
           | stuff like OS services is entirely next level - but you can't
           | even start doing that in JS so it's not really a fair
           | comparison) - and we're still paying for the technical
           | decisions made in that era (how many people are polyfiling
           | all the way back to stone age and including hundreds of KB of
           | useless shit ?).
        
             | jhgb wrote:
             | > Pretty much anything after C/C++ era comes with a usable
             | build system, modules and a package manager. JS is really
             | stuck dealing with insanely low level issues in shit ways
             | for various historic reasons.
             | 
             | But of course JS needs neither a build system (runs from
             | source files) nor a package manager (runs from URLs) and
             | recently even plugged the "no modules" hole.
        
               | irrational wrote:
               | > recently even plugged the "no modules" hole
               | 
               | I haven't heard about this. Do you have a link so I can
               | read more?
        
               | jhgb wrote:
               | Well, they added modules some time ago and now they're
               | widely supported. Not quite sure what more there is to
               | say about that. Aside from botched variable scoping, that
               | was probably my biggest grip with JS (but `let` fixed
               | scoping many years ago as well).
        
               | moonchrome wrote:
               | Majority of people using JS with these frameworks are
               | using package management and bundling - and suffering
               | because the ecosystem has such shitty tools for dealing
               | with it.
               | 
               | If you're linking jquery from your favorite CDN and
               | writing your code inside of <script> tags you're not
               | dealing with the issues this article is describing.
        
               | jhgb wrote:
               | Right. But that's their choice. I actually really like
               | what Mithril.js did, regarding decisions on size,
               | complexity, distribution as a single file, etc. Pretty
               | much the only thing I'd like more would be if some
               | similar library targeted both HTML5 web and Sciter (since
               | Sciter does some things in its own -- and very efficient
               | -- way and it would be interesting if something filled in
               | the details in the web platform that web omits but Sciter
               | does not to come up with something Mithil.js-like but
               | also usable on desktop).
        
               | contingencies wrote:
               | This. Use what works and is stable. I strongly dislike JS
               | (PTSD, perhaps) but when it comes to minimal code to get
               | the job done, jQuery is where it's at: the _perl_ of JS
               | frameworks.
        
             | chrisco255 wrote:
             | Very few websites/frameworks/libraries support IE nowadays.
             | And Edge being Chromium-based, means most of the polyfill
             | issues have been resolved. You can reach 99+% of browsers
             | by writing in modern web standards (HTML5/CSS3) without
             | having to worry much. Web dev is probably nicer than it's
             | ever been.
        
           | hkon wrote:
           | I think WPF is nice and elegant. Although complex.
        
             | avens19 wrote:
             | Was going to reply with WPF. The best I've used for UX dev
        
         | [deleted]
        
       | bigmattystyles wrote:
       | I think that if you want a page to impress or make a splash then
       | sure, you always have to move to the next greatest thing,
       | however, I don't work for them but I've paid for Telerik Kendo
       | Controls (the react ones specifically)since they were released,
       | before then, the AngularJs ones and it's been great - it keeps my
       | (albeit internal app) UI development stable, fast and looks great
       | with minimal fussing about. It's been years now and it feels very
       | stable and quick. The switch from AngularJs to React was the only
       | unstable part, but it was at an inflection point in the number of
       | apps I had to support and develop, so the change was actually
       | welcome. YMMV (edit - I just realized I spent the weekend
       | experimenting with MAUI, so I'm full of it)
        
         | Etheryte wrote:
         | I had to read your comment twice to be sure we're talking about
         | the same Kendo. I've consulted for a number of companies over
         | the years who have used it (or tried to use it), ever since the
         | jQuery version to up until now, and it's always been pure pain.
         | I understand how their components work, I understand the
         | underlying architecture because I've stepped through it too
         | many times with a debugger, and I still always fail to
         | understand how they have any happy customers. Perhaps there is
         | a good experience to be had if you only use the components
         | exactly the way the documentation examples use them, but the
         | moment you step outside that narrow path, things fall apart.
         | Never mind custom code, simply using two different components
         | from their library together doesn't even always work.
         | 
         | The first time I had a bout with Kendo was some odd ten years
         | ago, and then I was sure it was simply me not understanding the
         | framework. After all, every component library has its own kinks
         | and it takes a while to get up to speed. After seeing them
         | again and again many times over the years, I've changed my
         | opinion. In my eyes, Kendo is what I like to call an MBA trap.
         | It ticks all the boxes that an MBA manager going by a feature
         | checklist is looking for, but under the hood it's garbage
         | software. I'm glad you've had a good experience, at the same
         | time I don't think I will ever stop recommending everyone to
         | stay away from Kendo.
        
           | bigmattystyles wrote:
           | I don't agree with you but I don't disagree either. Our use
           | cases are very vanilla, and now that I have quite a bit of
           | sway in my team, when people deviate from the showcased Kendo
           | way, I push back and see if the desired way deviating from
           | Kendo is a necessity or a nice to have. If it's the former,
           | we sometimes have the experience you described, though I've
           | often be helped by stackoverflow, their forums or Kendo's
           | support team. (We pay for the 24 hour tier). If it's the
           | latter then I force the Kendo way. FWIW, their ODATA v4
           | support OOTB with dotnetcore webapi with its ODATA v4 out of
           | the box with an EF model is the perfect pattern for most of
           | our use cases. But again, I don't disagree with you either -
           | but I would stress that any alternatives I've seen have their
           | same range of issues.
        
       | dang wrote:
       | Discussed at the time:
       | 
       |  _Why Is Front-End Development So Unstable?_ -
       | https://news.ycombinator.com/item?id=17190992 - May 2018 (354
       | comments)
       | 
       |  _Why Is Front-End Development So Unstable? A Perspective_ -
       | https://news.ycombinator.com/item?id=17182748 - May 2018 (5
       | comments)
        
       | lopatin wrote:
       | The article starts off with an outdated take on the space:
       | 
       | "We all know the meme: by the time you've learned one front-end
       | technology, another three have just been released. Also, that one
       | you just learned? It's deprecated."
       | 
       | Maybe it's because the article is 4 years old. I just don't think
       | it's true anymore. Ok there's React and Vue and others, but
       | that's fine. It's basically the same tech, but they have
       | DX/cosmetic differences. It's not like we're still arguing
       | whether or not VDOM is a good thing.
       | 
       | That said, the "Imagine being a junior developer" section sounds
       | spot on still. Maybe it's because those articles that use
       | dogmatic arguments to recommend inferior technologies are still
       | on the internet, and they are not going anywhere.
        
         | croes wrote:
         | I thought VDom is old school since Svelte and such?
         | 
         | https://news.ycombinator.com/item?id=19950253
        
           | lopatin wrote:
           | I was waiting for someone to mention Svelte :)
           | 
           | I think it's is very possible that it's the next evolution of
           | innovation in the space. It _might_ actually be a Backbone -
           | > React style quantum leap in terms of tech and adoption. The
           | thing is, that won't happen for another 10 years, if it does
           | at all. It could very well turn out to be a niche technology
           | for most people, with minimal real-life benefits compared to
           | the drawbacks of moving off the mainstream.
           | 
           | Every space has new innovative technologies that risk
           | upsetting the status quo. I'm not saying things are
           | completely boring now. Just that, unlike in the mid 2010s,
           | they are actually stable enough.
        
             | runarberg wrote:
             | As far as I know most native web components use direct DOM
             | manipulations over a virtual DOM. So I think the jury is
             | pretty much out on VDOM and we are witnessing it transition
             | to a relic of legacy frameworks.
             | 
             | As far as other innovations Svelte has brought, Vue with
             | the <script setup> sugar looks quite similar to Svelte, as
             | well as compiling to a render function (just like Svelte).
             | I'm not super familiar with the intrinsics of Vue but the
             | VDOM is starting to feel like a thin MIR of the framework
             | which could be swapped out in a future major release,
             | rather then something essential to it.
             | 
             | I honestly think that 10 years is a very conservative
             | prediction.
        
         | Matumio wrote:
         | Ah, the irony. An article arguing about how fast web-dev is
         | moving is itself considered outdated just four years later.
        
         | jbreckmckye wrote:
         | I'm the author and I agree. Things have slowed down and
         | matured. The "JS moves too fast" meme is well out of date, and
         | in fact I wrote a comment here a few hours ago bemoaning it
        
           | escape_goat wrote:
           | I don't know what it's like these days but I recall
           | especially the pernicious 'evangelism'. People on a literal
           | salary promoting frameworks like they were from marketing. As
           | a bargain basement, self-taught, late web 1.0 dev more
           | comfortable on the server side I remember rake-stepping the
           | undiscussed limitations of Backbone JS, and then studying the
           | ridiculous complexities of Angular 1 while reading post after
           | post of Angular doctrine, and then learning that the great
           | leap forward for Angular 2 was "yeah we're going to throw all
           | that bullshit out we were wrong." By the time I was done I
           | genuinely had no interest left in me for another new
           | framework, package manager, or library.
        
       | jbreckmckye wrote:
       | I'm the author of this piece. I no longer think front-end suffers
       | the instability people accuse it of.
       | 
       | I think there are a lot of _vendors_ trying to usher in a
       | revolution around their particular products - there's a lot of VC
       | funding in JavaScript tooling nowadays - but that's a different
       | problem.
        
         | pljung wrote:
         | I enjoyed reading your article, thanks for writing it. I think
         | your recommendation to new devs to focus on Next.js in 2018 (!)
         | was prescient.
         | 
         | > I no longer think front-end suffers the instability people
         | accuse it of.
         | 
         | Do you mind elaborating why you believe this is the case?
        
           | dylan604 wrote:
           | >to focus on Next.js in 2018 (!) was prescient.
           | 
           | now that it is 2022, what's the new flavor that would be
           | prescient? I don't ask to actually know, but to reiterate the
           | problem of nothing being solid in this world.
        
             | vosper wrote:
             | NextJS is still looking pretty good if you're in React
             | land. There's new competition, like Remix, Astro, etc...
             | but I don't see any of them putting NextJS to bed. I'm
             | starting a new application, and I'm still choosing NextJS.
             | 
             | (Now what you couple with NextJS for data access is an
             | interesting question - this is where there's a lot of
             | innovation. Personally, I'm going with tRPC. I would look
             | at Edge DB, but in this application I'll need a recursive
             | CTE and Edge can't do it.)
             | 
             | Edit: I do think Astro might replace NextJS for purely-
             | static sites, or ones where the "islands of interactivity"
             | pattern is compelling.
        
             | markhesketh wrote:
             | I'm not in the JS space, but if my twitter feed is anything
             | to go by it'll be https://remix.run/
        
             | Jenk wrote:
             | Still next.js, probably. Keep an eye on Svelte.
        
         | dgb23 wrote:
         | Some of the vendor backed libraries are among the best. But
         | generally I would agree that marketing, especially certain
         | types, generates a ton of noise, like you beautifully
         | illustrated in your article. I think navigating the web with a
         | BS filter on is an important skill to have.
        
         | ricardobeat wrote:
         | You covered the frameworks, but a lot of the feeling comes from
         | the tooling and library ecosystem. For example, a recap of the
         | last 10 years:
         | 
         | - grunt / broccoli / gulp / browserify / webpack / metro /
         | esbuild / parcel / swc / turborepo / bun
         | 
         | - flummox / redux / unstated / mobx / mobx-state-tree / xstate
         | / apollo / apollo-link-state / swr / react-query / zustand /
         | recoil / jotai
         | 
         | And this is just within React, and off the top of my head. Then
         | you add all the ECMAScript versions, browser feature churn,
         | node.js, npm/yarn, immutability, classes, functional
         | components, hooks, fiber, the list goes on and on.
        
           | cehrlich wrote:
           | It's true that there are a lot of different ways to do the
           | same thing, but the good news is you're doing the same thing
           | and the difference is mostly just syntax. Someone who has
           | used Redux extensively can get up and running with Zustand in
           | no time, and vice versa. Likewise React Query and Apollo
           | Client are basically the same thing.
           | 
           | Build tools are a bigger issue, but fortunately most front
           | end devs don't actually need to deal with them all that
           | often.
        
           | nawgz wrote:
           | Webpack has been the de facto build system for react since
           | 2017
           | 
           | Competing state libraries is to be expected but picking redux
           | or mobx has let you use the same ones since 2017
           | 
           | JS itself has improved but hasn't really ever deprecated
           | anything, it just grows and adds terse methods to the
           | language
           | 
           | Npm and yarn are among the best package managers
           | 
           | React hooks were the only major change you've touched on but
           | even they didn't deprecate class based react or change
           | library semantics very significantly
        
             | ricardobeat wrote:
             | These are not really counterarguments to the fact that
             | things change _a lot_ here, and newcomers and veterans
             | alike need to continuously learn, and pick the best. None
             | of these started off as the default choice, I remember when
             | each and every one of these was the weird  / risky option.
        
               | nawgz wrote:
               | They are very much counter arguments to the idea that
               | there is big churn still happening.
               | 
               | Webpack 2 was in CRA in 2017
               | 
               | Redux and MobX have been the #1 and #2 state managements
               | for that whole span, and clearly all the observable libs
               | are successors of MobX after Proxy came out
               | 
               | Every language changes, many with breaking version
               | changed that JS avoids
               | 
               | I don't know how you'd point at package management as an
               | issue in JS land
               | 
               | It's just that every single popular community has massive
               | amounts of clones or similar libraries, I don't know how
               | that qualifies as "churn" though. I maintain my 2017 apps
               | including major version bumps with no issues today, using
               | the same libraries and tools. The argument you're making
               | was fine in 2016 but is half a decade out of date.
        
           | thepasswordis wrote:
           | Just to chime in here for anybody reading along:
           | 
           | I work full time as a software developer _doing react_. I
           | have got literally no idea what almost everything you listed
           | is.
           | 
           | "Broccoli"?
           | 
           | I have heard: grunt, gulp, webpack, metro, redux, and recoil.
           | The rest of those could be sarcasm for all I know.
        
             | ricardobeat wrote:
             | These are only the mainstream ones I can remember, there
             | have been a ton more! I guess if you've started post-2018
             | things have been a bit more stable, but there was quite a
             | bit of churn to get here. And it's still happening - no two
             | React projects are alike even in the enterprise.
             | 
             | https://github.com/broccolijs/broccoli
        
               | mccorrinall wrote:
               | That's because react is a library, and not a framework.
               | React doesn't have opinions, that's why you can find 300
               | state management libraries and 200 routers which do the
               | same thing, just in different ways.
        
               | throw_m239339 wrote:
               | > That's because react is a library, and not a framework.
               | 
               | React should be considered a framework.
               | 
               | React absolutely imposes a data model (unidirectional
               | workflow) to the developer thus a certain code structure.
               | The fact that it is light weight compared to Angular
               | doesn't change the fact that React is a front end
               | framework. React usage completely replaces the
               | traditional way to interact with the DOM and manage DOM
               | events, thus abstracting it.
               | 
               | > React doesn't have opinions,
               | 
               | React becomes very hard to use if your data model isn't
               | organized to suit React architecture.
               | 
               | It doesn't have opinions about everything (like AJAX or
               | SPA routing) but it absolutely has an opinion about how
               | you data objects should be structured.
        
       | pojzon wrote:
       | Frontend is unstable because it attracts ppl whose attention span
       | is often lower than the one of a goldfish.
       | 
       | Every JS frontend dev I met was speedrunning trying to prove
       | himself by "inventing something new" which in fact was already a
       | state of art.
       | 
       | The amount of rehashing and reinventing the wheel with new catchy
       | names in the field is staggering.
       | 
       | TBH, if the field wants to improve -> its time to ditch
       | JavaScript and force Browsers to move to something that makes
       | more sense.
        
         | tenebrisalietum wrote:
         | Does WASM make more sense?
        
           | secondcoming wrote:
           | The idea is sound, but it'll just allow mediocre JS devs
           | write the same crap but in a multithreaded way.
        
         | lopatin wrote:
         | Thank you! Part of the reason that I love these front-end
         | threads is because inevitably somebody will make a fool of
         | themselves by spouting anti-js-dev "backend master-race"
         | nonsense, and this certainly did not let me down.
        
           | pojzon wrote:
           | It would be true if I was working in backend development. I
           | dont.
           | 
           | JS is just not good enough for what we want it to do.
           | 
           | Someone sooner or later has to make a decision to move
           | further.
        
             | doomroot wrote:
             | No. JS is here to stay, better get used to it.
        
             | rschachte wrote:
             | What is JS not good enough for w.r.t front-end dev in your
             | eyes?
        
         | oraphalous wrote:
         | So your solution to the problem of the field re-inventing
         | itself over and over is for it to... re-invent itself again.
        
         | LoveGracePeace wrote:
         | Java would be my strong preference.
        
         | taneq wrote:
         | To be slightly more charitable, front end attracts self-taught
         | devs because the browser is the default dev environment on
         | Windows and on phones/tablets and it's far more accessible a
         | new players than any other environment.
         | 
         | It's more fun to write code and make stuff up than to find and
         | evaluate libraries (especially when said libraries are written
         | by self-taught devs), so people tend to reinvent rather than
         | research.
        
       | RcouF1uZ4gsC wrote:
       | I think part of the reason is the evolution of common user
       | networking.
       | 
       | Initially, users had low bandwidth connections, and web pages
       | were mostly static with links.
       | 
       | Then came JavaScript interactivity and AJAX.
       | 
       | As users bandwidth grew, we started having heavier frameworks and
       | SPAs.
       | 
       | I believe there is another revolution that is happening now
       | because of decreased latency. Recently with protocols such as
       | HTTP2, web sockets, and edge computing, round trip latency is
       | greatly decreased. This is resulting in UI where more of the
       | logic lives on the server and has led to such libraries as htmx
       | (client) and Turbo.
       | 
       | It will be interesting to see where this settles out.
        
         | blueslurpee wrote:
         | Agreed, very interesting things going on in the "edge" space. I
         | personally think this is why HN is so jazzed about things like
         | fly.io. Super low latency opens up a whole new category of
         | applications, it's a "step function" change in that regard.
        
         | crooked-v wrote:
         | React is also pushing in the 'edge computing' direction with
         | Suspense and with major libs like Next implementing the idea of
         | "server components".
        
       ___________________________________________________________________
       (page generated 2022-05-30 23:00 UTC)