News for hackers. Stuff that matters.
Re:The silent majority in software by jongjong on Monday August 29, 2022 @03:49AM (#32635670)
I used to be part of the silent majority of software developers but that changed after I became disillusioned about the direction of the industry. Nowadays, I'm basically forced to use certain inefficient tools in order to get a job because a bunch of highly vocal junior devs who got their way.

It's a bit like in politics; when times are good for the majority, most normal people aren't interested in politics; they have better things to do; this apathy makes it easier for freaks to get power and start messing with things... Until it gets so bad that regular people start noticing and begrudgingly getting involved in politics.

Re:The silent majority in software by donatj on Monday August 29, 2022 @04:02AM (#32635757)
I am regularly up at night in a cold sweat worrying about how if I suddenly needed to find a new job I’d have to learn some sort of front end JavaScript framework.
Re:The silent majority in software by pjerem on Monday August 29, 2022 @04:17AM (#32635843)
Could be worse.

I am regularly up at night in a cold sweat worrying about how if I suddenly find a technically fulfilling job, realizing I forgot everything about computers after a decade on working on meaningless front end JavaScript framework.

Re:The silent majority in software by quickthrower2 on Monday August 29, 2022 @05:52AM (#32636343)
Where is the job where you get to work on compilers. If it is not React it is probably the glorious back end, making some graphql endpoints talk to mongodb or suchlike. Or devops, fight k8s!
Re:The silent majority in software by bluGill on Monday August 29, 2022 @08:24AM (#32637300)
There are a few thousand compiler jobs in the world. Maybe in the tens of thousands, i'm not sure. For everyone of them there are thousands (again I don't know how to measure, could be in the ten thousands) of programmers using the compiler.
Re:The silent majority in software by golergka on Monday August 29, 2022 @08:41AM (#32637441)
Feels pretty lined up to the amount of programmers who are skilled in writing compilers.
Re:The silent majority in software by bluGill on Monday August 29, 2022 @10:40AM (#32638864)
If I got a job in writing compilers I could becomes skilled at it. However I have a job in a different area. I doubt few as as skilled at writing the type of code I write as me, but the world only needs a few handfuls of people who write the type in the niche I'm writing code in. The world needs lots of websites, and so the world needs lots of people skilled in writing them.
Re:The silent majority in software by quickthrower2 on Monday August 29, 2022 @07:33PM (#32644868)
This is what I call the graduate job paradox.

What you do as your first job massively influences you career. I did .NET for years by the fluke that is what my first job did. If they did Java, I would be an expert in Java. If I worked somewhere they needed a compiler written in C++ I would have done it and may have a compiler career.

The paradox is as a graduate you generally, unless very exceptional or well connected, or live in the (not "a") tech city, just need to get that first job.

It is hard to get that breaking opportunity, and so that thing that will have echoes throughout your career, you don't have much control over! The reason it is hard to get the first job is because it needs interview experience, and you have very little proof yet. You are asking a company to take that leap of faith.

Later side stepping is possible but very hard as you are competing with people who can be paid the same as a web dev with deep experience.

Also as a young person back then, I had approximately zero confidence, both in myself and even that programming is a good thing to do. Getting into it was very weird, I was probably the only person at my high school of hundreds who geeked out on electronics and programming, for example.

Nowadays with HN and other sites, there is an online community such that even in a country town you can get a sense of community and what is possible. With that any graduate now could hatch a decent plan for their career. They might take any job to pay the bills, but aim to get into a FAANG for example, knowing what it pays and how to go about it. 2020's are amazing.

Re:The silent majority in software by Existenceblinks on Monday August 29, 2022 @11:27AM (#32639417)
Even worse when backend is javascript framework too. Welcome to isomorphic thingy (don't even know what that really means). SSR today only means nodejs server. No, not ruby, go, rust, python, php, elixir, it's javascript. Island architecture, partial hydration, and the latest backend js framework is "Zero JavaScript Runtime" wow. One language to rule them all pipe dream is not dead yet.
Re:The silent majority in software by Aeolun on Monday August 29, 2022 @05:03AM (#32636105)
Yeah, that’s a thing. When you’ve been fighting React for some years your mental pathways for anything else are completely eroded.
Re:The silent majority in software by nvarsj on Monday August 29, 2022 @05:37AM (#32636262)
Honestly that's why I swapped from front-end at the beginning of my career. Back end and infra moves much slower, jobs tend to be more secure and specialized, and pay seems higher overall. Learning Java back in the 00s was one of my best career moves.
Re:The silent majority in software by jongjong on Monday August 29, 2022 @06:09AM (#32636426)
I agree. Also, back end tends to have fewer mega-trends. You usually have the option to stick to your old tools. There are still plenty of C/C++ back end jobs for example. The community keeps branching off.

On the front end, the trends tend to be more extreme; people will not take you seriously unless you give up on whatever tools you use and go straight for React or VueJS... Then when TypeScript comes along, everyone has to switch to that... I couldn't believe it when people started combining JSX with TypeScript... It's essentially a double-transpiled language now... The trends keep adding more complexity and everyone is forced to switch to that regardless.

Re:The silent majority in software by danielvaughn on Monday August 29, 2022 @08:36AM (#32637402)
As someone who really appreciates strong typing, I will die on this hill - I hate Typescript.

Introducing a transpiled typing system on top of a dynamically typed language is a recipe for all sorts of insane complexity, which is what I experience whenever I try to use TS. If you consider all the time and effort it took to introduce types for every NPM project out there, all the development of the language itself, the effort expended by individual devs and teams to learn the syntax...

...might it have been the same amount of effort just to introduce some strong types into Javascript itself? It's not like the language can't adapt, and there are already some strong types when you're working with the graphics APIs.

Re:The silent majority in software by jongjong on Monday August 29, 2022 @02:32PM (#32641749)
I'm in a similar boat. I appreciate static typing and although I don't have any strong objections to TypeScript purely as a language, I can't get past the way it's transpiled into a dynamically typed language with source maps... Seems like a hack.

It doesn't make sense; kind of like transpiling lower level assembly code into higher level C code. You could always argue that there is value in forcing arbitrary constraints onto developers but in the end, you need to ask the question "is it worth the complexity?"

Re:The silent majority in software by overgard on Monday August 29, 2022 @10:07AM (#32638432)
To me, TypeScripts "complexity" is just from documenting the weird things JS libraries do. If it encourages less weirdness Im happy
Re:The silent majority in software by jollybean on Monday August 29, 2022 @10:05AM (#32638414)
I consider JS an anti-pattern and won't allow more then 50 lines to be anywhere near me without TypeScript. The issues raised are innumerable.

TS is really flexible and you can do some crazy gymnastics with it - I don't favour that. Just keep it very simple and don't go crazy with the generics.

I've never had a problem at all, I've never had to dig into what was transpiled.

Re:The silent majority in software by danielvaughn on Wednesday August 31, 2022 @08:12PM (#32670047)
Someone else in the thread mentioned how The Good Parts™ idea applies to TS just as much as JS, and I think that's what kinda frustrates me about it. If they'd just kept the damn thing simple, I don't think I'd have a problem with it.
Re:The silent majority in software by wnolens on Monday August 29, 2022 @09:50AM (#32638218)
Did a personal web project and chose TypeScript to see what the rage was about.

I spent a ridiculous amount of time trying to design types. At some points I couldn't figure it out, or I ran into some limitation of the language to express what I need. So my code has a bunch of exclamation points everywhere to assert that a null ain't coming. It feels dirty.

Just too hard to use for me.

Re:The silent majority in software by llllIIIIllll on Monday August 29, 2022 @11:00PM (#32646178)
After years and years in C# I spent half a year writing Typescript full time.

IMO it's not that Typescript is limited at all, it's just that the type system is different, more complex and also more flexible - there are typically more ways to define types compared to Java/C#, so a lot more decision points trying to write something elegant, or even just idiomatic/understandable, so IMO the learning curve is steep. And then you get to the fun stuff with more abstract type definitions, infer keyword...

It screwed with my head way more than I thought it would. Structural typing was really different, I had to spend a long time rewiring my brain. But when I went back to C#, I felt like the type system was crude. I lost all the nice and easy ways of writing dynamic code and had to revert to defining surplus kludgy interfaces, delegates, etc. And in Typescript I'd finally figured out how to write null-safe code and remove almost all ugly coercions, then back in C# null references were a real possibility.

Re:The silent majority in software by wnolens on Tuesday August 30, 2022 @12:16AM (#32646582)
Interesting, yeah I had one or two good moments after spending a few hours wrangling my interfaces.

But the frustration left a worse impression than did the benefits. Perhaps if I was being paid to do it and had mentors around to ask for help. But I couldn't find any good advice online.

Re:The silent majority in software by llllIIIIllll on Tuesday August 30, 2022 @11:57PM (#32658215)
I had a pretty terrible experience at that job - no engineering manager, never had any code reviewed, hardly any collaboration with other team members so I was basically stabbing away in the dark trying to get my shit together in TS.

It took me far longer than a few hours to feel comfortable, probably more like over a month of coding to get to the point where I mostly understood how to express what I wanted with the type system, and had stopped doing C# things in TS and adhering to style guidelines - functional modules, types instead of classes, injecting dependencies etc. And another month or two? to really figure out how everyone has been (ab)using the type system to do more complex stuff.

Re:The silent majority in software by overgard on Monday August 29, 2022 @01:10PM (#32640709)
A few things you might consider...

Are you using "?" optional fields in your classes/interfaces a lot? If so, do you need to? Unless it's truly optional, you're basically making the type system less useful if you put that all over the place. If you have a lot of sparse objects, it's probably an indicator of a data type doing too much. You might be much better off splitting it into smaller interfaces and using union types when you need combined objects.

Even if you can't do the above, checking for null at the start of a function/block will "prove" to the compiler that it's not-null for the rest of the block, so an upfront check can save you from a lot of "!" assertions.

Even if you can't do either of the above, you can probably use the elvis operator "?." to safely dereference things that might possibly be undefined.

In my experience with typescript, there's a few good rules of thumb and things to keep in mind:

- Prefer "interface" over "class" for describing most data types. Especially plain old data objects that don't have methods. I'd forget about the definition of "interface" you might know from Java. It can be used that way, but it can also be used like you would use "struct" in C

- Use the "Partial" modifier instead of using "?" in the base structure if you need to do something like sparse updates. For instance a pattern I use a lot is:

   interface MyStruct { a: number, b: string }
   
   function update(original: MyStruct, updatedFields: Partial<MyStruct>) {
      return {...original, ...updatedFields}
   }
- Always prefer readonly fields and non-optionality.

- If you're not worried about GC pressure, it's almost always better to return a new object than mutate an old one. The spread operator is great for this.

- Within reason, it's better to prefer smaller data structures and use type unions when you need fields from both in one object.

Re:The silent majority in software by wnolens on Monday August 29, 2022 @05:15PM (#32643642)
Thanks. It's definitely not obvious to me coming from Java/c++/python.

I think I went into the deep end with some non trivial generic functions. It's been a few months, but I remember ditching interfaces for classes so I could do some run time type checking.

I wouldn't have fallen into these traps with something like Java.

Re:The silent majority in software by rektide on Monday August 29, 2022 @11:01AM (#32639129)
It's just so awesome that a thread on "Silent Majority" has the typical loud protests against JavaScript, against the web, against React, against TypeScript. The irony is loud to me.

It's not even that there's only happy heads-down programmers off HN who support these mainstream techs. Even in the active userbase here, I'd wager there are tons of people who have an adequate or better experience with typescript or react, and may disagree with the dislikers. But we're not as invested in our liking, don't feel like it's worth engaging in, and none of the banter changes what is or where things are going. These are the de-jure tools that the majority definitely uses widely, which at least the first anti- comment, on front-end frameworks, acknowledged. Whatever the targets-of-the-day happen to be, they will crop up repeatedly, which further dissuades from trying to come back with a positive or even neutral opinion that might represent that silent majority's take. And the silent majority must constantly face Brandolini's Law; what it's doing may be working & have good reason, but it's hard to keep supporting & reasoning through with a pact invested in disbelieving.

I liked the top post talking about disagreeing with the direction. That can be contributive, be value based. So often though the protests amount to gatekeeping "you've done too much." I evaluate where these comments would fall on Steve Yeggie's Software Political axis, from Notes from the Mystery Magic Bus[1], and almost universally the voices are conservative; they object rather than suggest, they refuse rather than support. I'd like to see more progressive protests, that can surface good, that acknowledge value & need but reflow or redirect the energy elsewhere, rather than being unhappy with what is.

[1] https://gist.github.com/cornchz/3313150

Re:The silent majority in software by wnolens on Monday August 29, 2022 @05:54PM (#32644047)
HN can be conversational, not always a well researched debate. Most of us are over-involved with these debates with coworkers at our day jobs, where we HAVE to spend the energy having productive disagreements.

I appreciate the high quality HN posts, but sometimes just like at a water cooler a bunch of us just wanna say, "agh I'm so sick of object oriented" and it doesn't mean "all object oriented programming is of no use".

Re:The silent majority in software by vbezhenar on Monday August 29, 2022 @01:05PM (#32640640)
What's so hard about designing types? I'm Java developer and when I need to use TS, I just write Java with it. Works fine. The only times I encounter weird types is when for some reason I need to read type definitions for some weird JS library. But that's relatively rare.
Re:The silent majority in software by danielvaughn on Monday August 29, 2022 @07:56PM (#32645050)
I’ve found that working with the DOM can be really difficult because the types built into TS don’t accurately capture the underlying API. In just a few hours I found 2 cases where it seemed obvious that the type definition was incorrect.
Re:The silent majority in software by wnolens on Monday August 29, 2022 @05:55PM (#32644056)
Good for you.
Re:The silent majority in software by mikewhy on Monday August 29, 2022 @11:31AM (#32639461)
Threads like these are why I don't pay attention to HN anymore.
Re:The silent majority in software by wnolens on Monday August 29, 2022 @05:55PM (#32644066)
I'm sorry I didn't sufficiently entertain you.
Re:The silent majority in software by striking on Monday August 29, 2022 @09:24AM (#32637904)
> might it have been the same amount of effort just to introduce some strong types into Javascript itself?

TypeScript exists as a first step to adding types to JS. Some folks are currently trying to figure out a way to add type annotations that the JS engine will just ignore for now based on what we've learned from TS.

Re:The silent majority in software by golergka on Monday August 29, 2022 @08:46AM (#32637504)
> ...might it have been the same amount of effort just to introduce some strong types into Javascript itself?

And how would it be different?

I've been using TS since 2016, both for front and back-end, and I can count an amount of times the transpilation abstraction leaked on one hand (and most of these were when I just learning TS and worked on weirdly configured projects). Aside from these, I could just forget about the fact that it's transpiled to JS under the hood.

Re:The silent majority in software by danielvaughn on Monday August 29, 2022 @08:49AM (#32637529)
Interesting, maybe it's just been my personal experience. I often work at the native DOM level, where the API is extremely forgiving and dynamic. The type system does not work well there, as I found several instances where the underlying type definition didn't match what the native API actually had available. My only recourse in those moments was to either use `any` or to write my own type definition (which I am not going to do).
Re:The silent majority in software by Existenceblinks on Monday August 29, 2022 @11:33AM (#32639475)
Reminds me of javascript the good part thin vs thick book meme. TS the good part is thin as well, though no one sets rules how many features they should use. Unsound type is bad enough, too many features make it worse. I wish they delete TS features, not trying to add more things to already broken underlying language (js)
Re:The silent majority in software by cageface on Monday August 29, 2022 @07:05AM (#32636709)
Back end seems to be changing quite quickly too. Docker, k8s, serverless, a million different specialized cloud services, all kinds of non-sql DBs etc. I'm sure you can find a job doing backend that doesn't involve following these trends but you can also still find plenty of front end jobs using jQuery.
Re:The silent majority in software by BlargMcLarg on Monday August 29, 2022 @07:23AM (#32636824)
If anything, it feels like frontend has slowed down tremendously whereas backend has sped up. That said, both are pushing for more cross-discipline experience in some form (fullstack, devops, UX/UI for frontend, etc.)
Re:The silent majority in software by KptMarchewa on Monday August 29, 2022 @09:01AM (#32637650)
Data-related things are moving at least as fast as pre-react/typescript era javascript.
Re:The silent majority in software by cutler on Monday August 29, 2022 @05:11PM (#32643598)
Do you see much evidence of Kotlin eating Java's lunch as some have predicted?
Re:The silent majority in software by camgunz on Monday August 29, 2022 @04:23AM (#32635888)
While I admit to enjoying some of the debate aerobics on HN, this is the prime reason I try and give my voice to some of the discussion here. I kind of view it similarly to voting: you have to make your opinions known.

It's had the pleasant side effect of also educating me on quite a lot--mixing in with people with different experiences and values has enriched my life, so I think it's a win-win. I just try and be careful to not get too wound up: that's the failure case haha (I'm not saying constantly check your blood pressure while using HN, but I'm not not saying it).

Re:The silent majority in software by ChrisMarshallNY on Monday August 29, 2022 @09:10AM (#32637749)
One of the [few] advantages of becoming a crusty old fart™, is that we tend to waste a lot less time, worrying about what others think of us, and just do what we need to do, to get the job done.

I was just talking about this, to someone, yesterday.

I'm often accused of being a "killjoy," or a "dreamkiller," by today's yutes. This is because I say 'orrible things, like "Have you considered what happens if..?" or "We tried that, a couple of years ago. It didn't work out, and here's why...".

In actual point of fact, I'm exactly the opposite. It's my job to Make Things Happen. I plan to ship everything that I do, and my work is generally focused around the endless practicalities and compromises, necessary to get products out the door.

This has often resulted in me being called every name in the book, as I try to avoid chasing shiny, and keep the eye on the ball. In my days of yute, this would keep me awake at night, worrying whether or not I had made the right decision, if I was an unintended, out-of-wedlock child, or if I really was a goose-stepping fascist.

But I have been getting stuff out the door, for pretty much my entire adult life.

These days, I sleep like a baby.

Re:The silent majority in software by falcolas on Monday August 29, 2022 @09:31AM (#32637993)
> and my work is generally focused around the endless practicalities and compromises, necessary to get products out the door.

This hits too hard. I’m still in the “acceptance” phase of grief over the death of my ideal that there’s a “right” technical solution for every problem. And I’m in my 40’s.

Re:The silent majority in software by ChrisMarshallNY on Monday August 29, 2022 @10:17AM (#32638568)
I've learned to "lean in" to my compromises.

It starts by accepting them, right off the bat, then using the time that I'd otherwise spend in fruitless pursuit of shiny, doing things like testing and documenting the codebase.

Experience gives me the ability to see them, at the start of things, other than waiting to run into them, later.

Re:The silent majority in software by wellokthen2 on Monday August 29, 2022 @04:31PM (#32643163)
I've read enough of your comments here to know that you are one of those who really Get It Right. Top 5% dev. Keep up the good work sir.
Re:The silent majority in software by azemetre on Monday August 29, 2022 @08:24AM (#32637299)
Would you mind sharing some things that juniors have forced that you think are bad?

I’ve recently switched jobs and my team doesn’t write integration tests for our services but rather manually test them with postman. It’s definitely odd and very inefficient.

Re:The silent majority in software by chrischattin on Monday August 29, 2022 @08:55AM (#32637580)
Not OP, but front end JavaScript frameworks are the first thing that comes to mind as an inefficient antipattern that was forced into the dev mindshare by (effective) mega-cap marketing and jr devs who didn’t know any better.
Re:The silent majority in software by progrus on Monday August 29, 2022 @09:04AM (#32637675)
I’ve been programming ~15 years, and from my perspective, those frameworks helped us move on from a world riddled with XSS, “better than fail whale”-level reliability expectations, and software ossification (Gmail, Facebook, etc).

Today, the frameworks bite me in the ass about once a week, but I think it’s worth it to get safe React with strict TypeScript, and plenty besides.

Caveat: All infrastructure requires a lot of maintenance, though! YAGNI still applies, and hopefully you have (or are on) a team dedicated to supporting the tools that you do need.

Re:The silent majority in software by chrischattin on Monday August 29, 2022 @09:22AM (#32637880)
???

XSS has long been a solved problem.

Security is definitely not an argument for using front end JS frameworks as they add attack vectors and complication to the stack.

Re:The silent majority in software by shadowgovt on Monday August 29, 2022 @09:49AM (#32638204)
Assuming your entrypoints are typed, TypeScript makes it much harder to accidentally mishandle data of the wrong type and frameworks make it much harder to inadvertently change state at a distance in a way that was unintended. These are the two most common ways that undesired behaviors are introduced to JavaScript UIs.
Re:The silent majority in software by progrus on Monday August 29, 2022 @10:58AM (#32639105)
Is your solution something like “always remember to sanitize user-generated content”?
Re:The silent majority in software by dc-programmer on Monday August 29, 2022 @07:42PM (#32644944)
It’s definitely not a solved problem. Most developers absolutely would not escape their outputs if left to their own devices
Re:The silent majority in software by vbezhenar on Monday August 29, 2022 @01:19PM (#32640830)
You may call me junior, although I have over 10 years of programming at different things. But IMO React is hands down best thing happened with frontend. It's beautiful tech. Sometimes I write javascript without frameworks, but I'm doing it just for fun, because I have strange love for tiny code, when entire "webapp" fits in few kilobytes. That's something like demo scene from the old days. I'll never do that for any commercial project.

Right now my position is something like tech lead, at least I do technical decisions in our company. And there's no way I'll allow to write anything complex without React.

And sites are bad not because of React. Sites are bad because of other things. If anything, React helps making sites less bad.

Second best thing is TypeScript. I don't like tooling, though, but I think it gets better.

Re:The silent majority in software by ericwooley on Monday August 29, 2022 @09:02AM (#32637662)
The entire concept of fronted frameworks is an anti pattern?

This might be the oldest, grumpiest man on the front lawn yelling at childreniest take we on web dev, that I’ve ever heard

Re:The silent majority in software by fezfight on Monday August 29, 2022 @09:23AM (#32637888)
You have to at least admit that there's an awful lot of stuff done these days to render what used to be done with html.
Re:The silent majority in software by TheCoelacanth on Monday August 29, 2022 @09:33AM (#32638009)
It's not what used to be done with HTML. It's what used to be done with desktop GUI toolkits.

Web apps were never this complex before the creation of frontend web frameworks.

Re:The silent majority in software by strictfp on Monday August 29, 2022 @12:39PM (#32640295)
Webpages were designed to avoid complex state management. URLs, HTML and forms, i.e the original REST, is a model with a lot of power and flexibility, and almost none of the complexity of desktop UI toolkits.

Frontend web frameworks have their use in rich apps, but using them for general web pages is just complicating things for no good reason.

Re:The silent majority in software by fezfight on Monday August 29, 2022 @09:42AM (#32638119)
Yes, that's the point I'm trying to make. At the end of the incredibly complex and long modern road, you end up looking at text, images, etc, in a browser.
Re:The silent majority in software by shadowgovt on Monday August 29, 2022 @09:51AM (#32638229)
At the end of an incredibly complex and long modern road, I end up looking at text and images in any application, but I wouldn't wish upon the developers of, say, IntelliJ that they render the user interface by making their own JNI calls directly to "draw a rectangle" APIs...
Re:The silent majority in software by fezfight on Monday August 29, 2022 @10:09AM (#32638452)
I agree that would be ridiculous, but I'm talking about people using some huge front end library, react, k8s, etc, to make a form. With a logo. Obviously do whatever you want, but it's a lot.
Re:The silent majority in software by shadowgovt on Monday August 29, 2022 @11:18AM (#32639313)
A form with a logo... that looks consistent across most browsers, scales automatically between mobile and desktop user-agents, and already has all its sticky a11y metadata sorted properly, if they've picked a good framework. The gap between modern expectations and the bare-bones AJAX page is pretty wide these days.

It would definitely be better if there were a way to side-load those libraries as a standardized strata underneath the main browser content to save resources. So if someone uses React to do their form, yes it seems costly but the cost only needs to be paid once, and then the relevant framework is cached more statically than the transient web cache (and with an alternative to domain-based cache, such as checksums or signed binaries, to determine if two domains are using the same framework and save the download cost for all sites you visit using that framework).

... but only better if the tricky engineering questions around caching were sorted. There's plenty of risk that you'd end up with gigabytes of cached frameworks, because the current solution means I don't have to care if one site is using React 12 and another is using React 12.1.

Re:The silent majority in software by fezfight on Monday August 29, 2022 @01:52PM (#32641246)
To me what youre writing sounds like a parody given the context. And I feel like I could write a form webpage with a logo in significantly fewer characters than used in your explanation for why you need all that stuff.

But this isnt my field of expertise so I'll have to take your word for it that you're not joking.

Re:The silent majority in software by shadowgovt on Monday August 29, 2022 @02:33PM (#32641759)
Like I said, doing a form is just a few lines of HTML in a <form> tag (assuming you have a cooperative server that isn't expecting anything unusual and just digests POSTed form bodies).

Doing a form that will do things people expect these days (client-side validation, formatting, error-handling and highlighting / locating fields with errors in them, auto-fill of addresses... What, you don't expect the user to type in a whole address without verifying it's a real address, do you, there's validation services these days!) is the kind of thing you may want a framework for.

This relatively simple "Contact us" form (https://aflcio.org/contact) loads nine custom fonts, JQuery, an email-decoder script from Cloudflare, and a host of other things. Why nine custom fonts? Because the AFL-CIO has a brand and they're not obliged to deviate from it just because your browser doesn't have the font they use, anymore than they wouldn't show their logo because your computer doesn't have the logo yet. Why JQuery? Probably because there's a button on the page that hides and shows a field, and even in The Year Of Our Lord 2022 those are still an absolute witch to write without bugs in plain JavaScript. The email-decoder script is, I think, self-evident; lets them save the bandwidth of rejecting your input if you put "no" as the email address. And of course, the tracking scripts because they want to know how people are finding the "Contact Us" form (are they coming in from the main page? Is there some specific page that should be answering their question that they're falling over into "Contact Us" instead? Are they coming in from completely outside our org because someone shared a deep-link on a political site and said "Go bug the AFL-CIO", because if yes they can use that tracking to pre-filter the messages they get from that entry-path and bin them all low-priority). I'm seeing some inefficiencies in the Inspector (it's loading some Android-specific icons, probably because it's not good about refraining from loading assets for its mobile layout), but a lot of that stuff I'm not surprised at all to see.

There are several driving factors underpinning this phenomenon. One is that frameworks are more flexible (per unit of code written) than bare-AJAX development, so there's plenty of "everything looks like a nail" thinking going on; once you've paid the up-front cost to build out a dev environment using a framework, it's cheap to keep using it. Another huge factor is that relative to the web experience of, say 15 years ago, there are many incentives to push a lot of work (especially validation of inputs) client-side; few places have truly full-stack developers (or, more often, don't allow the authority for one developer to go hacksaw into the front and backend whenever they feel like it), so simply implementing one new validation rule may be a bunch of back-and-forth tickets if implemented server side or a couple hour's work if done client-side. And client-side work saves the server computation costs (and often bandwidth costs, even when one factors in the up-front cost of loading all that framework boilerplate if the site's used long enough per session).

All of this pushing of complexity to the client does come at a cost of client performance (and sometimes bandwidth, depending on how solid the caching logic is), so (especially at big companies like Facebook and Google) it's a constantly-shifting tradeoff. Google in particular has some incredibly clever partial-rendering logic in-house to allow them to push pieces of a big page on-the-fly to the client, saving bandwidth by rendering a mock button with no behavior attached until the user tries to click on it (and then the behavior script flies in as-needed). Of course, that's a huge amount of complexity that requires tight hand-in-glove coordination between client and server, so the framework that supports it is even more thick and robust, etc.

At the end of the day, "simple web sites" (unless they are truly read-only, in which case just use Hugo and call it a day) are still client-server distributed computing problems with complexity that scales nonlinearly.

Re:The silent majority in software by fezfight on Monday August 29, 2022 @07:12PM (#32644731)
Forgive me, but I dont think we are going to see eye to eye, here. I appreciate the verbosity with which you explained your point. Thank you.
Re:The silent majority in software by chrischattin on Monday August 29, 2022 @09:33AM (#32638011)
Yep. Duplicating the data model on the client and server is just one example of the insanity. I could go on, but that’s for another day.
Re:The silent majority in software by wainstead on Monday August 29, 2022 @02:42PM (#32641879)
> Would you mind sharing some things that juniors have forced that you think are bad?

Nested ternary operators... though, because of how TypeScript does constants, I saw why they used this way of doing things so often.

Re:The silent majority in software by Existenceblinks on Monday August 29, 2022 @04:56AM (#32636074)
Yeah. This is happening, look around job board. A lot of job description look really dumb, tech stack doesn't make sense for their business at all.
Re:The silent majority in software by jongjong on Monday August 29, 2022 @06:15AM (#32636464)
It's so frustrating to find a nice job advert, then you read through the (very specific) list of requirements and you're thinking to yourself "JavaScript: Check, Node.js: Check, Postgres: Check, Docker: Check, REST: Check, WebSockets: Check, Redis: Check, RabbitMQ: Check, Distributed systems: Check, nginx: Check, Kubernetes: Check, GraphQL: DAMN IT! This was almost a match..."
Re:The silent majority in software by pindab0ter on Monday August 29, 2022 @07:54AM (#32637108)
Requirements aren't really that. They're really wish lists.

Such a shame, since this is ‘a great way’ to dissuade women[1].

[1]: https://hbr.org/2014/08/why-women-dont-apply-for-jobs-unless...

Re:The silent majority in software by oaiey on Monday August 29, 2022 @06:43AM (#32636591)
You hire smart people not perfect matches.
Re:The silent majority in software by jongjong on Monday August 29, 2022 @02:50PM (#32641979)
Companies will generally tolerate developers to not have experience with certain tools but they will only hire them based on the assumption that they will learn those tools on the job. The problem arises when the developers don't like a specific tool; maybe they know better tools to use for this project. For me, as a developer, it's a deal breaker if a company expects me to use some tool which I'm experienced with but which I don't like.

It's a mistake for companies to assume that just because someone has 3 years of professional experience with a particular tool, that they like that tool. I've witnessed many developers catch Stockholm syndrome after spending lot of time using (and becoming an expert in) a specific tool but I regard this is as a sign of inexperience.

Re:The silent majority in software by vikramkr on Monday August 29, 2022 @09:10AM (#32637755)
Those requirements are almost always just a wishlist
Re:The silent majority in software by specialist on Monday August 29, 2022 @11:38AM (#32639536)
FWIW, every generation feels this way.

Older me is now super embarrassed by my prior enthusiasm for object oriented programming and misc methodologies. I have very vivid memories of grey beards dismissing my naivety and me thinking "they just didn't get it." [0]

If there's any kind of karma, today's noobs will live long enough to be mocked by even younger noobs.

Small solace, I know.

[0] I always remember criticisms. I've got the voice of doubt in the back of my head always wondering what I'm missing, what if they're right, etc. It's a serious bummer.

Re:The silent majority in software by wainstead on Monday August 29, 2022 @02:50PM (#32641978)
> I've got the voice of doubt in the back of my head always wondering what I'm missing, what if they're right, etc. It's a serious bummer.

There's probably a saying somewhere along the lines of "There are two kinds of programmers: those who admit they get Imposter's Syndrome, and those who are too afraid to admit it."

We all have those doubts. I've been in this since... what, 1994 professionally I suppose, and I still have doubts. It's totally normal. IS is not limited to software development either.

Re:The silent majority in software by goodpoint on Monday August 29, 2022 @05:29AM (#32636235)
Same here. Many popular and needlessly complex tools, especially around devops... used only because they are popular.

Even worse, people don't even bother to look at other options even if it's just to learn from them.

Compare the new hip thing with a different one and people get defensive.

Re:The silent majority in software by kaba0 on Monday August 29, 2022 @05:49AM (#32636332)
Strangely enough I feel that we tell ourselves again and again that this problem is not as hard, the previous iteration of programs trying to solve it were just written by incompetent people. It can be made so much easier - the program gets built but in the process the developers realize that it has plenty of edge cases not solved by this easier version and the same complexity gets bolted on later.

The fact is, there is an essential complexity that simply can not ever be reduced. But we should also strive to not get blinded by the n+1 failed, bad attempt because true, novel approaches do turn up from time to time, e.g. nix actually solves the dependency hell problem.

Re:The silent majority in software by goodpoint on Monday August 29, 2022 @06:16AM (#32636467)
> written by incompetent people

Which is funny because most modern devops tools are written by organizations with no experience maintaining critical systems or large scale.

Re:The silent majority in software by CrLf on Monday August 29, 2022 @07:05AM (#32636711)
Well… many of those tools are written while building those critical systems and scale, so they may include both the learnings as well as the mistakes. And, frankly, most people aren’t building things that are critical or require scale (no matter what they say to make their work sound interesting).
Re:The silent majority in software by goodpoint on Monday August 29, 2022 @09:58AM (#32638312)
> many of those tools are written while building those critical systems and scale

Very, very few come out of teams working on the real stuff. Both FAANGs and other companies are not going to release their crucial internal tools and not even discuss them in public.

> may include both the learnings as well as the mistakes

"release early" is not something anybody should do for production critical tools like devops stuff.

> frankly, most people aren’t building things that are critical or require scale

100% agree, but if I build ships they have to fit safety standards even if most people never meet rough seas.

Re:The silent majority in software by mardifoufs on Monday August 29, 2022 @08:29AM (#32637339)
Can you give us an example?
Re:The silent majority in software by tempodox on Monday August 29, 2022 @06:33AM (#32636550)
Agreed, fashion-driven development is shockingly pervasive.