This original silent majority was a victim of Soviet propaganda. Nothing is better in war when the enemy no longer wants to fight because he has self-doubt.
>And that’s fine, we’re all amateurs, and sometimes we can be wrong.
I'm not an amateur. Or if I am than everyone is too since I have written software for project that would kill tens of thousands if it fails.
Other than that the vocal minority was always my opinion on Rust. A small core of true believers who decided that convincing people they should change the world is worth more than actually doing any work in Rust.
Such a saying is what the incompetent obsessively repeat to themselves. They can't stand by the thought of people who don't need an Internet connection to program, who don't copy and paste from the fools over at StackOverflow, and the many other things they do which their betters don't.
The fools over at Reddit call some things "adulting", because the idea of growing out of childhood is so foreign to them that they'd rather make it childish too. It's the same basic disease.
There’s difference between being humble and insecure. Generally people who repeat that mantra are trying to guard themselves by “we’re all fools”veil from any critique.
> The “silent majority” was used by President Richard Nixon during his presidency and his campaign against the Vietnam war.
Excuse me? The "silent majority" was the set of Americans who were for the war, not (loudly) protesting against it. Nixon was all for continuing the war.
It was stealthily changed. Someone else quoted the original further down in the comments
> The “silent majority” was used by President Richard Nixon during his presidency and his campaign against the Vietnam war. He spoke to the people who were not actively voicing their opinions and who were overshadowed by the vocal few who were supporting the war.
Can we please stop supporting political operations like BLM, MAGA, and political parties in software. I am tired of every open source project asking for donations to BLM. Uyghurs matter too.
> Usually, the comments on HN/Reddit are polarised by a single group of people who have the same opinion,
Can't speak for Reddit, but that's not at all the case here. For example, I often speak of my hatred of microservices here. I'll get some upvotes and agreement, some people telling me it's a dumb opinion, and some people telling me we're doing it wrong and explain their right way. Believe it or not, I learn a lot from different people and their experiences.
I can't think of a single topic that seems to be prevelant here that doesn't have a sizeable amount of disagreement, in fact. And I wouldn't have it any other way.
The only niche tech subreddit I know of that's anywhere near the level of discourse on HN is r/zfs, and even then, it's mostly people asking for help because they broke their zpool; it's just that the answers are often quite detailed in their explanation. r/sysadmin is Windows-centric but isn't awful in terms of depth of knowledge. r/kubernetes is mostly blog spam and "can you troubleshoot <problem I've put zero effort into solving> for me," and r/devops is mostly "how do I get a job in devops."
HN culture is quite like a subreddit IMO. The only real difference is that it doesn't receive drive-by comments and upvotes from redditors browsing /r/all while not subscribed to it. This helps to curb most forms of reddit humor
However; check out subreddits like /r/rust, it looks a lot like HN
For this reason alone, the two sites are night and day to me. I don't have the stomach or nerves for Reddit anymore, but I can sip the cool, refreshing draught that is HN all day long.
> Usually, the comments on HN/Reddit are polarised by a single group of people who have the same opinion,
> polarize: divide or cause to divide into two sharply contrasting groups or sets of opinions or beliefs.
> "the cultural sphere has polarized into two competing ideological positions"
At school, they used to say that two don't fight if one doesn't want to. Except that was a lie. Bullies didn't get the memo, while teachers and parents were happy to repeat the lie, wash their hands and blame the victims.
I don't think microservices are silent majority. They seem like more of a blogger architect who likes to tinker with stuff thing.
I would expect the true silent majority just uses monoliths. If it works and doesn't make people complain every day when they work on it, why use a microservice? That's more work.
Everyone likes to think of microservices as a modern high tech thing, but to me it seems like old fashioned unix stuff, that appeals to people who enjoy doing simple weekend projects, trying to make their job into a series of tiny projects of the type they might do at home for fun.
The focus seems more on individual parts than on the vision of the complete project.
Of course it seems to just mostly move complexity into the high level gluing it all together, and spread it out in bits of interface code, but if you are more interested in working on simple but interesting challenges, and don't mind the more hands on dev ops maintenance work, and aren't that into building complex systems, I imagine you would like it.
I've joined a company with a silent majority monolith, and joined at the inflection point where they realise their monolith is strangling them...
If your dev guide in the wiki says "to run unit tests, use docker-compose exec monolith test some.package.test_class", you're in danger.
This company needs to start breaking the monolith down into, well maybe not microservices, but at least smaller monoliths, if they want to achieve what they want to achieve.
The hard part is to recognize when to start moving towards microservices.
As long as the team is small enough and the core product is still undergoing rapid development, I think it's premature to use microservices. Too much overhead without any tangible benefit.
But with multiple teams working on different parts of a profit-generating system, it makes sense to the transition - ideally, having a relatively stable core monolith and developing new services around it, occasionally extracting some core functionality as needed.
Well you can do the same with a monolith too right, just pull some random code out of the codebase and compile it without anything else, plus the tests for it. It gives the same guarantees as the microservices unit tests.
I don't know what _they_ think is wrong with it, but if you need docker-compose to run unit tests, they're not unit tests. Unit tests really shouldn't have external dependencies of the kind docker-compose helps to provide.
That's more of a terminology point IMO, and probably not what they were talking about.
I'm guessing it is something like "works with version X of dependency Y which is only available on Linux distro Z" and distro Z is only available with an ancient kernel which makes it a pain to run on modern laptops so everyone just develops in Docker.
I have no particular dog I wish to back in the Microservice vs Monolith debate. But I think since you joined at the inflection point it's probably worth it to take a good look at why their monolith landed them in such a poor place and so that no matter what direction you go for the future you can at least make different mistakes.
Microservices won't magically fix issues with tightly coupled components or poor achitecture. Those problems can and do still happen with them.
No, you just need a sane test architecture. I've worked on monoliths, and none of them required docker compose for unit tests.
Now, you may need some extra infrastructure for integration tests, depending on how you architect them, but that's also not a requirement. You could also use mock services, test containers, ... - essentially there's enough ways to make this sane.
It's annoying that people take badly written monoliths as an excuse to proceed to write badly written microservices.
Let me just say, Django was designed to be a monolith.
Also, people who put code that reaches out to external systems in __init__.py are the devil, but the people who decided "sure, let's execute code when we import a module or package, even if we're just importing it to use a class, that sounds reasonable" are the super-devil.
The silent majority are mostly corporate devs building internal tooling. Microservices are a fantastic method for building distributed, horizontally scaling, dynamic services in a way that's sane. But the overwhelming vast majority of services would be perfectly ok with a simple monolith that occasionally gets a VM spec bump.
Yeah, I'm probably just explaining poorly. That's what I was thinking: horizontally scaling subsets of your verticals that need it (they don't usually all need to scale at the same rate)
> but to me it seems like old fashioned unix stuff
It's exactly this for me. Unix has been around longer than I've been around and will outlive my career if not my life. Components have been successfully updated and replaced mostly without significant disruption. Unix is a model for producing and maintaining complicated systems.
I forget the exact quote I read on HN once, but it made me laugh, all concurrent systems will eventually recreate Erlang. If you think of Microservices and even Kubernetes Clusters and company, they're all barely doing a fraction of what Erlang can do, because Erlang had the right concept, it was just 40 years ahead of its time.
"Any sufficiently complicated concurrent program in another language contains
an ad hoc informally-specified bug-ridden slow implementation of half of
Erlang."
That's the one! Thank you! I didn't realize it was from one of the founders of the language, which actually makes a LOT of sense. I wonder what tech he saw back then that made him think of it, I can only come up with more modern examples.
I saw the quote attributed to a book they wrote back in the late 90s as well, but I'm not sure how accurate the attribution is... If it is accurate, I'm genuinely curious what project in the 90s was remotely comparable. The answer could be as simple as whatever they were using prior to creating Erlang.
It's very complex. It has it's business use cases, but if you don't need it (or don't need full-blown OAuth2) then don't use it. If you're worried about the future separate auth user from account internally in your application (SSO ready) and move on.
It sometimes feels like there's a cabal of people who think the more complex something is, the more skilled they are for being able to implement it. That's not really where the skill lies for an engineer.
Microservices vs monoliths with nothing in between is a false dichotomy itself of course. There's been SOA and n-layer applications for decades now. Not every service is a microservice and not everything bigger than a microservice is written as one big application.
From the discourse on forums these days, someone fresh to the field might think there's no such thing as an internal API or an ongoing ETL layer without breaking each feature down to its own container and throwing the whole thing on Kubernetes. All those systems that are two to four layers and decomposed into half a dozen or so parts at the outer interface still exist in the world, even if they're not on track to be one container per feature.
I have a slightly different view on microservices. They are not a technical solution but a business solution. Technically it's a fairly dumb idea ... but if every microservices is actually a tiny business function (that is some "atom" of the domain) then suddenly the business can see and manipulate and monitor and see stats in usage for each atom of its processes. Things become isibke that were hidden in giant "oh the refund section of screen four does that and bobbys team is working on that".
I think Programmer Anarchy was a early adopter of microservices and as they ran a business as developers I think this may have been useful
I also think HN usually come from the same background with predominantly comments from California USA or USA in general.
Compare any topic relating to capatilism, the plights of the low income classes or politics in general. I often amuse myself comparing the takes between the two sites relating it those topics.
Also HN is more clinical, it discussed the death of Swedish reporter like it was a cold case ready to be ripped through.
And also more easily distracted by seemingly innocent open questions like in politics for example "Why is it X job to care about this?" since you can't dismiss it with a short meme it creates discussion that the OP only wanted to distract from the original article.
Apart from that HN discourse is 100% better than reddit and I agree with you in some terms.
Very sorry but it absolutely is the case here. Your anecdotal data is limited to you, but HN very much operates as a hive mind, it just hides it better.
Considering this place to be "superior" to other places only leads to complacence and further strengthens the echo chamber.
I think your experience actually proves the point and touches on why many dangerous and crazy POV have also been getting so much air time in the news.
Let's say you have 2 opposing POV: A or B
"A" has a silent majority so only 5 of the 5,000 people post a comment about A being the right POV.
"B" is a passionate minority so 5 of the 50 people post a comment about B being the right POV.
To the viewer, it looks like a balanced discussion and a topic open to much debate, both sides have equal voice but in reality "A" is by far the most accepted position.
The actual silent majority was a violent, reactionary, prowar group led by Nixon. They were not anti war, and they were not silent. The comparison the author made is an incredibly bad analogy, at least to anyone who actually understands reality.
Sure, but if your premise for the article is "This thing in my field is a lot like Nixon's politics", I'd expect you to not get Nixon's politics wrong, specifically because a lot of people may not know it enough to tell if your comparison is correct.
> The “silent majority” was used by President Richard Nixon during his presidency and his campaign against the Vietnam war. He spoke to the people who were not actively voicing their opinions and who were overshadowed by the vocal few who were supporting the war.
This is a shocking misunderstanding of history. The “silent majority” Nixon spoke of were folks opposed to anti-war protests. Nixon intentionally prolonged the war for political gain- killing additional thousands of people.
Just to save time for other people who might be wondering how Wikipedia could get this wrong, bndr seems to have forgotten to read the last part of the admittedly long sentence in Wikipedia. It lists several vocal groups.
>If you ever find yourself about to say that Nixon did something that a non-evil person would do, you’d better triple check your facts.
Actually Nixon did several things "a non-evil person would do", Nixon as evil is a carricature.
Like giving back Native American lands, or green-lighting the first major environmental protection legislation, or to get talking with China. And of course the Vietnam war itself was escalated by the "good" JFK, and even more so Johnson.
Later presidents did things many times worse than Nixon (his Watergate business included) and got off scot-free. But Nixon had an ugly mug, and was an old-style politician, in an era when the boomers were young and "rebellious" and wanted someone more trendy.
I've never been into history, so my perception of the guy was "formed" almost entirely by Futurama. So, in reality I don't know anything about Nixon except I do not want him to get Cambodian on my ass
He very nearly signed a Basic Income law. I originally read that the Democrats voted against it because it was too low, but more recently read that someone convinced Nixon that a Basic Income would have terrible consequences based on some faulty historical information about the Speenhamland system, which turned Nixon against BI. But it was close; he could have made history in a much more positive way than what we currently remember him for.
The seventies were an odd time - the generation who had come of age during WWII were in power. And WWII had the strangest historical anomoly - wealth was most evenly distributed post WWII than at any time prior. And it was working. It seemed a great idea to experiment with other ways to keep wealth fairly distributed. What a shame power and wealth found it's way back to the few.
We will have to fix that. preferably without a global war
Everyone was equal because they bombed most of the existing capital until there were only smoking craters left and set the poor to killing each other. It should be a great example of why inequality is a good thing - everyone wants to solve inequality by raising the poor up to be billionaires, but the only way we actually know how is to destroy all the capital that the billionaires own so we all have access to nothing.
Someone else being well off doesn't have to make life worse for anyone. People need to live with that truth.
Throughout human history someone being wealthy almost always meant someone else being exploited - from obvious chattel slavery to less obvious trading networks
That these exploitations often created empires that created institutions that themselves promoted higher efficiency in trade (like protecting from piracy and brigands) was a good thing. But trade, whilst always a win win, can be and for empires always was structured to win more towards the centre of the empire
This structural inequality is found everywhere. In strong and weak forms. A weak form is commonly known - wealthy people "cheat" to get their kids into MIT or Harvard, (or even being wealthy is a cheat) and then the networks formed their help with access to resources later (see VC funds two kids from MIT with idea for ...)
Strong examples of structural inequality are found in say the Russian Federations army where the head of the armed forces has multiple houses and yachts and oddly the conscripts are fighting on a dollar a day and often come from rural impoverished areas.
None of this your fault.
But we choose our structures, our institutions in the same way we choose our built environments. If we have Houston-like 20 lane highways with nose to nose traffic when we could have please t walkable cities with electric trams and steeet cafes then yeah, none of that is the fault of the people in the traffic jams.
But it was a choice. A choice made in these cases in a democracy.
And we just assume that if people were given informed choices they would not have gone "hell yeah 20 lane highway".
So the solution to bad structures, bad institutions, bad urban environments
is democracy. Is people making their voices heard and choices being made that are the informed choices people want (I assume most people will vote for "more equal")
Yet the next step is a leap of faith. Faith in democracy
and human intelligence
The networks will work to keep themselves in power and are a centralising force (gather more power to self)
but human wealth now depends not on control of land but intelligent use of excess energy and political stability
So does someone have wealth today? That's nice. Is the structure of how they got it a fair one? Is it right that someone who has capital today should continue to direct the use of that capital? Is it fair that a founder gets 80% of the shares but the first engineer gets 1%? I know it was a trade but capitalism is structured like the above empires were structured - to benefit the capital city.
Is that the only way to structure the allocation of resources in the planet?
The use of coal and oil has seen an outrageous chnage in human wealth. Fantastic. And the conditions for that industrial revolution are so weird that tinkering with it seems so risky. but the two world wars showed that it is a fairly robust revolution- and if we want to get out from the oil / CO2 trap and into a sustainable future we need to overcome bad resource allocation - it's time to try new options. Private Companies are undemocratic and control about 50% of western wealth, is a hierarchy like that the best way to allocate and motivate resources? Most western nations are highly centralised - does that make for th best local
decisions?
This is why those that benefit from the current status quo are trying to dismantle and destroy education, right? We can't let the people read, know, or think about what you wrote. It's destabilizing and "dangerous" to their way of life.
What we are seeing is an increasing number of wealthy people trying to fit into a system designed for a smaller number. I mean Harvard takes on a freshman year of 2,000 out of something like 3 million 18 year olds.
Most Ivy Leagues will have a small airport nearby. Usually Cessnas etc. On graduation day that thing is full of private Lear Jets.
The plain old wealthy, someone who worked hard built a successful company and retires - the American dream kind of thing we imagine here on HN. That person does not get a ducking look in at Harvard.
The system is failing everyone - which is kind of weird.
But nah. I don't think there are back rooms with smoke and cackling bankers working out how to stop the poor from reading.
I mean that was true in slave owning southern states but that's now just toned down to simple racism in the country club.
The problem is that the racists in the country club are only slowly coming aware how much the system is ducking them. None of them are able to say their daughters got into Harvard.
Hence Trumps popularity. He probably won't fix it but he at least says he will and blames the country club racists problems on the people that they hate (as opposed to the actual cause)
Well, mass education was never about learning to read, know, or think. It was about making factory workers, clerks, and (later) office staff.
Elite education, and especially luxury education for the children of the elite, was about learning to read, know, and think - mainly because it was still tied to an earlier humanistic and scholarly tradition where those things were important.
That lasted a short while, say until the 70s.
Now, even elite education is not about that kind of learning anymore, as those in power don't really need or appreciate those skills.
I think this is a re-work of "Chinas Totalitarian Bet". So there is a theory that the reason Middle East armies are basically expensive and crap is that the elites of the Saudis and Kuwaitis and Iraqis have loads of money but are despots and won't trust anyone but the most loyal / ethnically familial close with real power. So the tank battalions are lead not by talented colonels but by a cousin of the royal family. Spend six million training a nobody from nowhere Tom Cruise to be a fighter pilot? Make all the princes pilots. Let a sergeant train with a Anti Tank weapon. No way. They might aim at the cousin in his tank.
This is the opposite of the (more) meritocratic USA. Decision making is pushed downwards and the coherent mission is aligning all.
It is worth noting that a lot of ISIS / al-quida success is attributed to having to let go of this attitude - their central driving mission meant everyone was loyal, this decision making and training could be pushed right down into cells. Anyway I am not an expert here.
The point being that Totalitarian regiemes have a hard time making militaries that are flexible and responsive. And that rolls over to factories and civil servants etc.
Now the guardian writer Jon (?) and up with Chinas Totalitarian Bet - china knows this but thinks software and the surveillance state changes the game enough that either no-one can get out of line enough before their digital footprint catches them (again see al-qeueda) or that they can just give direct orders to be followed like Amazon warehouse packers and that will allow such flexibility and change.
So yeah mass education was about teaching the masses to think. And the people in say Victorian Britain who said this will end their way of life were actually right - fortunately for us.
The question now is can software replace our thinking? Can we all just do as we are told ? Will a society of drones be worth living in or even be productive enough to survive? And will the opposite, a more democratic more meritocratic and more fair and generous society be more productive innovative and worthwhile. I say Yes to the last and no to all others.
It was quite the opposite. It gave the US capitalism a new lease of life in the 90s, and of course it helped China (that's 1.6 billion people and counting) grow.
Yes. The first thing the chinese government did after Nixon ended sanctions and allowed trade, was to order 12 fertiliser plants from R W Kellogs (not the cornflakes one). Giant things that squeeze ammonia out of the atmosphere. That meant climbing out of a starvation cycle.
Nixon going to China probably saved 100s of millions of lives. Chinese lives of course but lives. Sadly for Nixon the lives he saved did not vote in Chicago.
Nixon was not evil. People arent evil. Decisions people make are evil.
I believe it was to undercut the numerous state-level organisations that had started appearing, consolidating power with the federal govt (and executive branch, specifically)
That's a very specific wording; were these people also pro-war, or did they just not like the protests themselves?
I think that's an important distinction to make. In my country we've had farmer's protests (environmental legislation has caused the government to target some farmers, things like forced buy-outs. It's all on paper and wouldn't affect that many people or the food supply since 65% is exported anyway, but still); while a lot of people agree and stand with the farmers, what they don't agree with is the protests they've done where they block the highways, first with just slow moving tractors as they made their way to the government seat, more recently with barricades, manure and burning hay bales. That affects people directly, the upsdie-down flags and slogans on fields along the roadside don't.
That’s the thing- the war was widely unpopular, but there was a growing reactionary sentiment against the protests, so Nixon gave a speech where he basically said “if you aren’t with me on the war then you’re a dirty hippie” and people feel for it.
I don't think that 10% comments, the numbers I remember are 10% votes and 1% comments. And looking at some random topics it seems to be roughly there, 10% comments is way too high.
I'd suppose that on a personal level and for HN, activity also changes with experience.
I've been passively reading HN for a few years as a junior dev after my team lead introduced the site to my before even creating an account.
I've been making comments on a few topics of interest now and then in the past three years.
Since a few months I feel like "yeah, I should probably write some docs + blog posts" which might be interesting to other HN readers.
I've also noticed that some HN users write a lot of comments to any kind of post whereas others mainly commment on articles related to their are of expertise.
I may belong to that silent majority. I have learnt a lot from the discussions here in HN and other sites, but I rarely participate on them. This post made me think about being a little more active because, sincerely, most of the times it is just laziness what prevents me from commenting anything.
In fact, this is my first comment here in HN. Little by little.
I will say that in my own experience, if you go against the zeitgeist on HN you can often get by as long as you're sensitive/respectful and intelligent on the issue. There are people who downvote things they disagree with, but I think most people on here downvote people who sound unconstructive or argumentative.
And at the end of the day, if you're respectful etc, who cares about being downvoted or having people argue back to you? Just take it on the chin.
you're supposed to downvote things you disagree with on HN. Here's Dang pointing to PG saying that downvoting for disagreeing is what you're supposed to do
I think it's healthy for the website that many people reserve downvotes for stuff that really 'deserves' it. But good to remember the mods position so you don't go around moaning about rule breaking voting. And how could you police that anyway?
Agree. Downvoting disagreeable people will eventually completely silence them with that logic. One has to be generally agreeable to maintain positive karma. Not sure if the side effect is worth it. There are a lot of amusing assholes out there with unpopular opinions. Opinions that are highly relevant to the topic at hand can be polarizing, but these will likely result in the poster having negative karma long term. pg and dang are simply wrong. It encourages a hive mind.
> That isn't true, I am very disagreeable and argumentative and post before I think, and still maintain positive karma without any issues.
Oh, I see. You personally haven't been downvoted into oblivion and/or had the door slammed in your face, so everything is cool then. 100% of the people who were censored must have been terrible people. Heil Dang, etc.
I sometimes upvote replies to my own comments that I disagree with, because I think they make a good or interesting point (even if I disagree). Am I doing it wrong?
I've always been the vocal outspoken critic. XML, EJB, annotations, aspects, ORMs, everything JavaScript, agile, ad nauseum. (My non-technical list is way longer.) It's always cost me.
I really wish I could tell young me to just smile and STFU.
> There also seems to be an assumption on HN/Reddit that vocal activity on the internet, in any form — be that videos, blogging, podcasts, etc. — is proportional to activity behind the screen.
Personally, I dislike this attitude. I think the internet is a good signal for what will be in the streets in 2-4 years time unabated. The attitude OP reflects is one that was valid in the 90s and early 2000s, but not today.
No, I think that's very wrong, now more than ever. What you read "on the internet" is almost always fabricated and published with manipulative intent and asymetric capabilities to promote a product, lang/skill, or whatever. It's the negative comments you should care about.
I agree with both of you. There are useful contents indicating trends and there is so much shilling and fake news online. We need somebody to sift through it all - like an honest, ethical media ...
I would say, less "naive", and more "to forget". I remember reading about russian bots like eight years ago, the Facebook scandal, and more on the topic once in a while. But. Maintaining vigilance 24/7 is bloody tiring, as any guard/soldier knows.
I simply forget. Maybe that's how they get you. They wear you down.
I think you and I may be talking about different things. I do agree with your point that there's lots of hot garbage on the internet. We might as well be doing Olympic laps in it. My point was more at trends in general. If you see something appear on the internet that has even moderate staying power, it will weave its way into society eventually.
I totally disagree. Slacktivism is a thing. It's easy, especially when you're jobless or still at school or without any social life or hobbies to be an activist online. It's less easy when you have to face the material world.
Moreover "the internet", whatever the meaning, is not a faithful representation of the "real world". Go tell the millions of people without toilets or working the whole day the slacktivists spending their days on twitter represent their struggle...
The disgusting natures of UNIX, UTF-8, and the general culture here whose members don't understand that touching a computer (poorly) doesn't entitle them to dominion over the non computer-touchers is generally controversial on orange Reddit.
a professional community has the right to a place to communicate among themselves, about things they like and understand. This has nothing to do with dominion
I'll elaborate. Firstly, this may be a community of "professionals", but that term means something very different for programmers. No "professional" here is an engineer, as an example, because real engineers would be imprisoned and stripped of title for what the typical programmer does. The dominion to which I refer is the fact that many of these "professionals" work for large advertising corporations who encourage them to believe they know better than the people trying to do real work with a computer. They expect their tools to have a price, and then work on tools intended to never be sold, but be rented forever. They touch computers poorly, because out of one side of their mouths do they decry things such as Bitcoin and out of the other they excuse the extreme waste of their corporations and of asinine practices such as embedding an entire WWW browser solely to execute a chat program wastefully.
> about things they like and understand
They like politics and understand very little about being a hacker, certainly.
Why is this linked to the nature of UTF-8 and Unix? And since you're explaining your thoughts, are those nature the same or is each one a different facet of the programmer culture?
And lastly: do you honestly think most production or data engineers should be imprisoned or stripped of their titles?
>Why is this linked to the nature of UTF-8 and Unix?
Those are just another two sacred cows.
>And since you're explaining your thoughts, are those nature the same or is each one a different facet of the programmer culture?
UNIX and UTF-8 are alike because they were made by the same fools, and both made to avoid upsetting the delicate sensibilities of the disgusting C language. The nature of Hacker News is similar in its ignorance and wastefulness, but it's not a consequence of either.
>And lastly: do you honestly think most production or data engineers should be imprisoned or stripped of their titles?
Sure, probably; it's not as if their titles mean anything anyway.
Mh I've never seen a developer who is not passionate about a few topics. Eventually he's not participating in online discussions, but I think the silent-mayority thinking assumption is plain wrong.
Without a good bunch of enthusiasm you cannot do this job well. Moreover without some strong opinions that you are able to voice you just are a puppet of pull request comments and cannot profile yourself in your team.
Most, if not all of the developers I know online are passionate developers, but the majority I met in real life at various work places are not it seems.
I am reading this as someone a little too young and too European to yet know much about Nixon, but would prefer if HN could avoid potentially making an idiot out of myself, when talking about recent history.
Besides getting history wrong and eventually making a non-sensical point I'm pretty sure the author is going to point to this thread as some kind of gotcha to confirm their opinion.
Or Apple, or libertarians, or Rust, or any other similar darling. Or suggesting that absolute free speech comes with issues when coupled with the global reach and pseudo anonymity of the Internet.
I could show you multiple examples for many countries. Just search google for "dang nationalistic site:news.ycombinator.com" for some great ones. Admittedly, a lot of them are over the line, but it really is as if you can't mention any country in any kind of remotely critical way, yet they won't just publish that in the guidelines for some reason.
If you give good criticisms with well thought out and logical statements. It’s received well. If you dump a buzzword loaded handwavy comment, it isn’t.
I think most HN users are quite receptive to debate around capitalism. It’s just that the majority of this debate is copy pasting slogans and making easily disproven statements.
As someone far left, I criticize capitalism routinely here, and it usually gets upvoted. As for free markets, it's hard to criticize something that is largely absent in our modern economy: capitalism is actively hostile to free markets and is basically a positive feedback loop for market monopolization. But I've seen people criticize free markets (as they understand them) and get upvoted as well, many times.
> As someone far left, I criticize capitalism routinely here....
I'm glad you told me that, because I never would have discerned either of those things from your recent post history. I would suggest you probably don't have the perspective to see just how many downvotes get aimed at someone who's actually critical of capitalism and "free markets."
To judge by the current thread, at least, the difference isn't ideological, it's that int_19h is using HN as intended, and your account not so much. We're not trying to dampen curious ideological discussion here; we're trying to dampen internet dreck.
(You've also posted good comments to HN! my criticism here is narrowly scoped.)
I've found you can get away with criticizing almost anything on HN, if you do it as an open discussion rather than from a closed position of just espousing doctrine. It's one of the great strengths of this community.
People do that all the time on HN - I can give you a long list of comments complaining that HN is dominated by socialists, communists, Marxists, you name it.
We should distinguish between making substantive anti-market arguments and shrill ideological rhetoric—the latter is going to get downvoted (correctly) regardless of ideology because it's against the site guidelines and the intended spirit of curious conversation - https://news.ycombinator.com/newsguidelines.html
Well, golly gee, thanks! That's gonna generate some insightful discussion.
I don't recall seeing very much thought to the left of Bernie Sanders/AOC on here (which is to say, left of the entire American mainstream). I'll believe that when I see it.
Look closer! There are quite a few accounts representing further-left positions on HN. Look up claudiawerner or deanCommie or one or two of the accounts posting in this thread (edit: oops, I meant https://news.ycombinator.com/item?id=32637686 - got my controversies mixed up). That's no problem as long as they stay within the site guidelines. Indeed, it's good for intellectual diversity. We do our best to protect accounts like that when we see majority prejudices acting unfairly (as well as other minority viewpoints, including strongly disagreeing ones).
Of course those politics are less represented on HN than others, but they're less represented in society too. I'd guess they're rather more represented on HN than they are in the population at large, given HN's semi-intellectual orientation. (Only 50% HN users are in the US, btw, last I checked.)
As for detaching this subthread- if we aren't going to mark a big-ass ideological meta subthread off topic, I'm not sure what we would. That's one of the most boring, generic, and pointless offtopic tangents there is.
(Btw, nearly everyone who makes large claims on that note is completely wrong, because people's perceptions about this are determined by their own pre-existing positions. That's why the question of which way HN is like-totally-biased is decided so differently by every camp. If you want examples, there are dozens at https://news.ycombinator.com/item?id=26148870.)
I know many developers (over 35 years old) in Europe doing the same (they earn above the average european salary, so like 140K EUR/year or so): Java, no HN, no Linkedin, no FAANG, no leetcode, no switching jobs every 2 years. They have families, they are normal people. If you ask them about monads, they would have no idea (like me) what are you talking about. That's the path I'm heading to (hopefully).
140k a year in most of the countries in the EU would mean you are working in trading/banking or some Big Tech, which means they probably had to do go some of the leetcoding to end up there.
Contractor do pass f** leetcode tests to enter the banking sector, as well as weird interview about DevOps and agile. The comp is the best though, easily 2x what you do in more 'interesting' avenues. And the code is changing from 95% Java to python/TS/go + 50% Java (gotta keep those Jenkins and airflow going).
140k EUR for a dev role? Normally I'd say you're delusional, but since you say you actually know people who consider that normal, may I ask which country(ies) you're talking about (since it's apparently not Switzerland or Norway, where I might have believed it)?
I still have a strong suspicion that either your friends gave you wildly inflated numbers, or you happen to know some serious outliers. Check this out for a reality check - the highest-paying Eurozone country is Germany, with an average dev salary of about 60k, and 76k for seniors: https://blog.helloastra.com/2021/10/18/the-average-software-...
That site seems to exclude Ireland entirely, which would I think would come in ahead of Germany for salaries and is both a European and Eurozone country.
140k is possible, it's probably an outlier though for a perm role. I worked at a SF based start up and that is around the salary they paid EMEA principal engineers. FAANG will pay more than that for a senior engineer (around 200k). As a contractor you can also hit this number pretty easily (it's around 600/day).
The GP said 140k was at or above the average, while the data suggests that it's an extreme outlier. But tbh I struggle to believe it even for senior roles at a SV start-up. Do you know what the reasoning was for paying so far above the market?
>they earn above the average european salary, so like 140K EUR/year or so: Java, no HN, no Linkedin, no FAANG, no leetcode, no switching jobs every 2 years
Do you have more details about the country and industry? As this is way way above the Java dev salaries in Austria and they'd kill for this kind of money without grinding leetcode. Nobody pays Java devs that kind of money here.
Positions like these don't grow on trees and since you say there's no leetcode, Linkedin or big-tech involved, I'm guessing there's other forms of gatekeeping for such a lucrative and easy gig, like having the right industry connections or knowing the right people in order to hear about the openings I would assume, as if they were to advertise this salary on Linkedin or other places they would be drowning in quality applicants, for even less money than that.
My friend’s father is a firmware engineer in Bulgaria and he hadn’t even heard of Rust. I’ve noticed that it takes a looong time for technologies to propagate globally
Depends, if I were writing low-level code like firmware or embedded systems, I would be casting envious eyes and dreaming of the day in 10 years when I'll get to start using it in production code. As a web dev, that's the way I used to view new APIs when I was still marching to the beat of someone else's supported browser list.
> While browsing HackerNews, [...] you might think that PHP is never used nowadays because whenever it’s mentioned, everyone is hating on it in the comments.
This is one of those things that "everyone knows". It may have been true at some point, but it definitely isn't true anymore. The reality is that most discussons here treat PHP fairly, giving it credit where it deserves it and also pointing out its weaknesses.
- (2019) https://news.ycombinator.com/item?id=19917655 : the top comment is someone praising Laravel and the "modern" approach to php. The general feeling is that PHP got some things right (shared-nothing), doesn't offer anything particularly unique but is surprisingly effective in reality.
I’d argue people greatly underestimate confinement by the Status Quo, or producing what stakeholders asked for... rather than what they needed. As an engineer one may have opinions about how things should be done, but in reality it is often not really your call if you are just an employee.
Put another way, if you are not listening to the person who signs the checks, than your career will be rather short.
"Nor would a wise man, seeing that he was in a hole, go to work and blindly dig it deeper..." (The Washington Post October 25, 1911)
with all the banning, down-voting and cancel culture in general - it's just not worth it. why should I even care if the receiving part isn't listening, got different agenda (yet another celebrity cult buildup || greed)? heck... the youth doesn't even know how to swear anymore. n word this, r word that - as if Lord Voldemort's gonna pop in. internet has created an illusion that teachers have become obsolete, even at work I refuse to criticize co-workers as it's not my job to evaluate them.
already said it. point is - *it's not worth it*. placed a small bait and that's pretty much all you took away from the post. why even bother? it's much easier to live w/o giving a crap that random dude from the interwebz might assume I'm a racist. unless you are an established public figure with bunch of sheep dancing around - exactly this is always the response. snarkiness, down votes, timeouts, public shaming. then I tell them to go fuck themselves and they ban me from their useless community. never ending bitching on stackoverflow about what's a duplicate and what's not. ending with KEKW
I think what the author says is true. The mass of digital workers use
older, established and unfashionable technology, and are neither vocal
nor particularly curious about the work.
But there's an implication of moral purity at play. Are those who just
quietly "mind their own business" a good, wholesome but misrepresented
group?
On the contrary, I think that in matters with far reaching
consequences, which computing is, silent majorities are the
problem. Unreflectively going along with the programme becomes a
kind of passive negligence which should not be lionised in a folksy
way.
The insane race to adopt any fad to be cool, is a mindset I find far worse
morally than using tried and true tools.
It enhances risk.
The latest tool language and/or framework is uncharted territory
A tried-and-true solution has had a lot of bugs and issues documented
and some of them solved.
It also mean the team must take a break from development to learn whatever
the new thing is. Some will need more time than other, which may slow it down even further.
A lot of systems are developed in domains where "go fast and break things",
A/B testing etc. would not be at all advisable.
The main selfish focus on "adopt whatever is hip this week" is to pad resumes with it, consultant can come in to help train people $$$.
Consultants will fight for it to use the newest and greatest since it may
increased development time $$$.
This is a false dichotomy though. Your comment makes it sound like the only options are to keep using the same tech stack for 30 years or to "race" to adopt the "newest fad". What about switching from a moribund 30 year old technology to a mature 5-10 year old technology every now and then, based on an assessment of the very real drawbacks of living in the past. Security is one of the biggest problems with outdated software that many people are only too happy to ignore.
Switching wholesale is often detrimental itself. Often the best thing is to leverage new tools for new development, and as certain older parts of your stack are retired move those from the legacy technology to something more modern. If something's getting so old that you're getting short on people who understand it, that part becomes more urgent to move to the newer technology. It doesn't kill a business to have two or even three generations of tech spread across teams so long as it's manageable.
An older tech stack doesn't mean never updating the system. either. Perl still gets updates. Linux distros still get updates. In fact, often a newer piece of software will introduce bugs including security bugs that were fixed in older software long ago. All things being equal, though, using a language with better string handling and memory safety can be a boon if your old stuff is in something like C.
It happens at the company level too. You end up with a lot of decisions being made by the minority that (1) feels strongly and (2) is willing to speak up.
It's an interesting dynamic. I've been on both sides in my career. Silent is much easier but doesn't get you recognition & promotions.
>>You end up with a lot of decisions being made by the minority that (1) feels strongly and (2) is willing to speak up.
...and don't forget to include the wonderboy/girl from the overpaid consulting firms that come in and tell the CEO they are doing everything wrong and should move everything to: (pick the latest technology fad)
and then 2-3 years later they come back and convince upper management to move to the next big thing...
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.
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.
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.
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!
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.
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.
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.
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.
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.
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.
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.
> ...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.
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).
> 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.
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.
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.
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".
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.
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.
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:
- 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.
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.
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.
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.
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.
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.
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.
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)
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?"
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.
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.)
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).
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.
> 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.
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.
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..."
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.
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.
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).
> 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.
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.
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.
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.
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...
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.
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.
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.
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 com...
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.
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.
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.
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.
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.
> 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.
370 comments
[ 1.7 ms ] story [ 281 ms ] threadI'm not an amateur. Or if I am than everyone is too since I have written software for project that would kill tens of thousands if it fails.
Other than that the vocal minority was always my opinion on Rust. A small core of true believers who decided that convincing people they should change the world is worth more than actually doing any work in Rust.
The fools over at Reddit call some things "adulting", because the idea of growing out of childhood is so foreign to them that they'd rather make it childish too. It's the same basic disease.
> Such a saying is what the incompetent obsessively repeat to themselves.
I'll take humble over arrogant.
Excuse me? The "silent majority" was the set of Americans who were for the war, not (loudly) protesting against it. Nixon was all for continuing the war.
"In this usage, it referred to those Americans who did not join in the large demonstrations against the Vietnam War at the time"
> The “silent majority” was used by President Richard Nixon during his presidency and his campaign against the Vietnam war. He spoke to the people who were not actively voicing their opinions and who were overshadowed by the vocal few who were supporting the war.
Can't speak for Reddit, but that's not at all the case here. For example, I often speak of my hatred of microservices here. I'll get some upvotes and agreement, some people telling me it's a dumb opinion, and some people telling me we're doing it wrong and explain their right way. Believe it or not, I learn a lot from different people and their experiences.
I can't think of a single topic that seems to be prevelant here that doesn't have a sizeable amount of disagreement, in fact. And I wouldn't have it any other way.
Found some screenshots from the early years:
https://www.reddit.com/r/historyofreddit/comments/q1zks/redd...
However; check out subreddits like /r/rust, it looks a lot like HN
Wonder how much of a difference it makes that most HN users can't downvote.
> polarize: divide or cause to divide into two sharply contrasting groups or sets of opinions or beliefs. > "the cultural sphere has polarized into two competing ideological positions"
Hmm...
I would expect the true silent majority just uses monoliths. If it works and doesn't make people complain every day when they work on it, why use a microservice? That's more work.
Everyone likes to think of microservices as a modern high tech thing, but to me it seems like old fashioned unix stuff, that appeals to people who enjoy doing simple weekend projects, trying to make their job into a series of tiny projects of the type they might do at home for fun.
The focus seems more on individual parts than on the vision of the complete project.
Of course it seems to just mostly move complexity into the high level gluing it all together, and spread it out in bits of interface code, but if you are more interested in working on simple but interesting challenges, and don't mind the more hands on dev ops maintenance work, and aren't that into building complex systems, I imagine you would like it.
If your dev guide in the wiki says "to run unit tests, use docker-compose exec monolith test some.package.test_class", you're in danger.
This company needs to start breaking the monolith down into, well maybe not microservices, but at least smaller monoliths, if they want to achieve what they want to achieve.
As long as the team is small enough and the core product is still undergoing rapid development, I think it's premature to use microservices. Too much overhead without any tangible benefit.
But with multiple teams working on different parts of a profit-generating system, it makes sense to the transition - ideally, having a relatively stable core monolith and developing new services around it, occasionally extracting some core functionality as needed.
The microservices equivalent needs Kubernetes to run your tests.
That's more of a terminology point IMO, and probably not what they were talking about.
Microservices won't magically fix issues with tightly coupled components or poor achitecture. Those problems can and do still happen with them.
Now, you may need some extra infrastructure for integration tests, depending on how you architect them, but that's also not a requirement. You could also use mock services, test containers, ... - essentially there's enough ways to make this sane.
It's annoying that people take badly written monoliths as an excuse to proceed to write badly written microservices.
Also, people who put code that reaches out to external systems in __init__.py are the devil, but the people who decided "sure, let's execute code when we import a module or package, even if we're just importing it to use a class, that sounds reasonable" are the super-devil.
Quite the opposite - they think about architecture as opposed to a crappy unmaintainable hodgepodge that the vast majority of web applications are.
Inferiority of web-based apps doesn’t come from nowhere.
I have never seen services (of any size) succeed in a place that wasn't using them to do vertical partitioning of a system.
I imagine you are probably talking about horizontally scaling each of those vertical partitions, but the phrasing is really confusing.
My criticism is more general, that the usual idiom is confusing and misleading for people that don't know it already. Maybe it shouldn't be usual.
It's exactly this for me. Unix has been around longer than I've been around and will outlive my career if not my life. Components have been successfully updated and replaced mostly without significant disruption. Unix is a model for producing and maintaining complicated systems.
"Any sufficiently complicated concurrent program in another language contains an ad hoc informally-specified bug-ridden slow implementation of half of Erlang."
http://erlang.org/pipermail/erlang-questions/2008-January/03...
It's very complex. It has it's business use cases, but if you don't need it (or don't need full-blown OAuth2) then don't use it. If you're worried about the future separate auth user from account internally in your application (SSO ready) and move on.
It sometimes feels like there's a cabal of people who think the more complex something is, the more skilled they are for being able to implement it. That's not really where the skill lies for an engineer.
From the discourse on forums these days, someone fresh to the field might think there's no such thing as an internal API or an ongoing ETL layer without breaking each feature down to its own container and throwing the whole thing on Kubernetes. All those systems that are two to four layers and decomposed into half a dozen or so parts at the outer interface still exist in the world, even if they're not on track to be one container per feature.
I think Programmer Anarchy was a early adopter of microservices and as they ran a business as developers I think this may have been useful
Compare any topic relating to capatilism, the plights of the low income classes or politics in general. I often amuse myself comparing the takes between the two sites relating it those topics.
Also HN is more clinical, it discussed the death of Swedish reporter like it was a cold case ready to be ripped through.
And also more easily distracted by seemingly innocent open questions like in politics for example "Why is it X job to care about this?" since you can't dismiss it with a short meme it creates discussion that the OP only wanted to distract from the original article.
Apart from that HN discourse is 100% better than reddit and I agree with you in some terms.
Very sorry but it absolutely is the case here. Your anecdotal data is limited to you, but HN very much operates as a hive mind, it just hides it better.
Considering this place to be "superior" to other places only leads to complacence and further strengthens the echo chamber.
Most of us here agree with you.
Let's say you have 2 opposing POV: A or B
"A" has a silent majority so only 5 of the 5,000 people post a comment about A being the right POV.
"B" is a passionate minority so 5 of the 50 people post a comment about B being the right POV.
To the viewer, it looks like a balanced discussion and a topic open to much debate, both sides have equal voice but in reality "A" is by far the most accepted position.
For example you have 99% of scientist agreeing about global warming.
You have 1% who disagree.
So they write that "Some scientist disagree" and it sounds like its up for debate or maybe a significant portion know something the others don't.
In the pursuit of a "Balanced" POV they tip the scales vs just reporting where the scales are at accurately.
[1] the marketing here is a CTO position himself as some sort of "though leader," which I wouldn't be opposed to, if there was some sort of substance.
https://en.wikipedia.org/wiki/Silent_majority
This is a shocking misunderstanding of history. The “silent majority” Nixon spoke of were folks opposed to anti-war protests. Nixon intentionally prolonged the war for political gain- killing additional thousands of people.
https://www.smithsonianmag.com/smart-news/nixon-prolonged-vi...
If you ever find yourself about to say that Nixon did something that a non-evil person would do, you’d better triple check your facts.
https://en.wikipedia.org/wiki/Silent_majority#:~:text=The%20...
Actually Nixon did several things "a non-evil person would do", Nixon as evil is a carricature.
Like giving back Native American lands, or green-lighting the first major environmental protection legislation, or to get talking with China. And of course the Vietnam war itself was escalated by the "good" JFK, and even more so Johnson.
Later presidents did things many times worse than Nixon (his Watergate business included) and got off scot-free. But Nixon had an ugly mug, and was an old-style politician, in an era when the boomers were young and "rebellious" and wanted someone more trendy.
I guess Wikipedia is all wrong again, huh
We will have to fix that. preferably without a global war
Someone else being well off doesn't have to make life worse for anyone. People need to live with that truth.
That these exploitations often created empires that created institutions that themselves promoted higher efficiency in trade (like protecting from piracy and brigands) was a good thing. But trade, whilst always a win win, can be and for empires always was structured to win more towards the centre of the empire
This structural inequality is found everywhere. In strong and weak forms. A weak form is commonly known - wealthy people "cheat" to get their kids into MIT or Harvard, (or even being wealthy is a cheat) and then the networks formed their help with access to resources later (see VC funds two kids from MIT with idea for ...)
Strong examples of structural inequality are found in say the Russian Federations army where the head of the armed forces has multiple houses and yachts and oddly the conscripts are fighting on a dollar a day and often come from rural impoverished areas.
None of this your fault.
But we choose our structures, our institutions in the same way we choose our built environments. If we have Houston-like 20 lane highways with nose to nose traffic when we could have please t walkable cities with electric trams and steeet cafes then yeah, none of that is the fault of the people in the traffic jams.
But it was a choice. A choice made in these cases in a democracy.
And we just assume that if people were given informed choices they would not have gone "hell yeah 20 lane highway".
So the solution to bad structures, bad institutions, bad urban environments is democracy. Is people making their voices heard and choices being made that are the informed choices people want (I assume most people will vote for "more equal")
Yet the next step is a leap of faith. Faith in democracy and human intelligence
The networks will work to keep themselves in power and are a centralising force (gather more power to self)
but human wealth now depends not on control of land but intelligent use of excess energy and political stability
So does someone have wealth today? That's nice. Is the structure of how they got it a fair one? Is it right that someone who has capital today should continue to direct the use of that capital? Is it fair that a founder gets 80% of the shares but the first engineer gets 1%? I know it was a trade but capitalism is structured like the above empires were structured - to benefit the capital city.
Is that the only way to structure the allocation of resources in the planet?
The use of coal and oil has seen an outrageous chnage in human wealth. Fantastic. And the conditions for that industrial revolution are so weird that tinkering with it seems so risky. but the two world wars showed that it is a fairly robust revolution- and if we want to get out from the oil / CO2 trap and into a sustainable future we need to overcome bad resource allocation - it's time to try new options. Private Companies are undemocratic and control about 50% of western wealth, is a hierarchy like that the best way to allocate and motivate resources? Most western nations are highly centralised - does that make for th best local decisions?
There are options
What we are seeing is an increasing number of wealthy people trying to fit into a system designed for a smaller number. I mean Harvard takes on a freshman year of 2,000 out of something like 3 million 18 year olds.
Most Ivy Leagues will have a small airport nearby. Usually Cessnas etc. On graduation day that thing is full of private Lear Jets.
The plain old wealthy, someone who worked hard built a successful company and retires - the American dream kind of thing we imagine here on HN. That person does not get a ducking look in at Harvard.
The system is failing everyone - which is kind of weird.
But nah. I don't think there are back rooms with smoke and cackling bankers working out how to stop the poor from reading.
I mean that was true in slave owning southern states but that's now just toned down to simple racism in the country club.
The problem is that the racists in the country club are only slowly coming aware how much the system is ducking them. None of them are able to say their daughters got into Harvard.
Hence Trumps popularity. He probably won't fix it but he at least says he will and blames the country club racists problems on the people that they hate (as opposed to the actual cause)
Elite education, and especially luxury education for the children of the elite, was about learning to read, know, and think - mainly because it was still tied to an earlier humanistic and scholarly tradition where those things were important.
That lasted a short while, say until the 70s.
Now, even elite education is not about that kind of learning anymore, as those in power don't really need or appreciate those skills.
This is the opposite of the (more) meritocratic USA. Decision making is pushed downwards and the coherent mission is aligning all.
It is worth noting that a lot of ISIS / al-quida success is attributed to having to let go of this attitude - their central driving mission meant everyone was loyal, this decision making and training could be pushed right down into cells. Anyway I am not an expert here.
The point being that Totalitarian regiemes have a hard time making militaries that are flexible and responsive. And that rolls over to factories and civil servants etc.
Now the guardian writer Jon (?) and up with Chinas Totalitarian Bet - china knows this but thinks software and the surveillance state changes the game enough that either no-one can get out of line enough before their digital footprint catches them (again see al-qeueda) or that they can just give direct orders to be followed like Amazon warehouse packers and that will allow such flexibility and change.
So yeah mass education was about teaching the masses to think. And the people in say Victorian Britain who said this will end their way of life were actually right - fortunately for us.
The question now is can software replace our thinking? Can we all just do as we are told ? Will a society of drones be worth living in or even be productive enough to survive? And will the opposite, a more democratic more meritocratic and more fair and generous society be more productive innovative and worthwhile. I say Yes to the last and no to all others.
What such law ever passed Congress during his tenure?
What a waste of time that was.
You have high standards.
Nixon going to China probably saved 100s of millions of lives. Chinese lives of course but lives. Sadly for Nixon the lives he saved did not vote in Chicago.
Nixon was not evil. People arent evil. Decisions people make are evil.
I mean, he did give us the EPA. What the ulterior motive was, I'm unsure.
[1] https://www.history.com/this-day-in-history/nixon-insists-th...
[2] https://abcnews.go.com/Politics/video/richard-nixon-im-crook...
That's a very specific wording; were these people also pro-war, or did they just not like the protests themselves?
I think that's an important distinction to make. In my country we've had farmer's protests (environmental legislation has caused the government to target some farmers, things like forced buy-outs. It's all on paper and wouldn't affect that many people or the food supply since 65% is exported anyway, but still); while a lot of people agree and stand with the farmers, what they don't agree with is the protests they've done where they block the highways, first with just slow moving tractors as they made their way to the government seat, more recently with barricades, manure and burning hay bales. That affects people directly, the upsdie-down flags and slogans on fields along the roadside don't.
Those also don't achieve anything. The only form of protesting that the population at large accepts are either illegal or useless
Well naturally. He's a right-wing politician. See also Margaret Thatcher, Tony Blair, Benito Mussolini, and any of the rest.
(i've written on it here and how it does favor creators https://www.swyx.io/puwtpd#why-does-this-work-on-them )
I've been passively reading HN for a few years as a junior dev after my team lead introduced the site to my before even creating an account.
I've been making comments on a few topics of interest now and then in the past three years.
Since a few months I feel like "yeah, I should probably write some docs + blog posts" which might be interesting to other HN readers.
I've also noticed that some HN users write a lot of comments to any kind of post whereas others mainly commment on articles related to their are of expertise.
In fact, this is my first comment here in HN. Little by little.
That's why there are places on the internet (like here) where, usually, I don't find the usual online fluff content.
Here have an upvote!
And at the end of the day, if you're respectful etc, who cares about being downvoted or having people argue back to you? Just take it on the chin.
https://news.ycombinator.com/item?id=16131314
Edit: It works since to downvote you need 500 karma, but everyone can upvote, so getting many upvotes is a lot easier than getting many downvotes.
Oh, I see. You personally haven't been downvoted into oblivion and/or had the door slammed in your face, so everything is cool then. 100% of the people who were censored must have been terrible people. Heil Dang, etc.
I've always been the vocal outspoken critic. XML, EJB, annotations, aspects, ORMs, everything JavaScript, agile, ad nauseum. (My non-technical list is way longer.) It's always cost me.
I really wish I could tell young me to just smile and STFU.
Personally, I dislike this attitude. I think the internet is a good signal for what will be in the streets in 2-4 years time unabated. The attitude OP reflects is one that was valid in the 90s and early 2000s, but not today.
Not being skeptic in 2022 of comments or news online is being very naive.
I simply forget. Maybe that's how they get you. They wear you down.
Moreover "the internet", whatever the meaning, is not a faithful representation of the "real world". Go tell the millions of people without toilets or working the whole day the slacktivists spending their days on twitter represent their struggle...
> about things they like and understand
They like politics and understand very little about being a hacker, certainly.
And lastly: do you honestly think most production or data engineers should be imprisoned or stripped of their titles?
Those are just another two sacred cows.
>And since you're explaining your thoughts, are those nature the same or is each one a different facet of the programmer culture?
UNIX and UTF-8 are alike because they were made by the same fools, and both made to avoid upsetting the delicate sensibilities of the disgusting C language. The nature of Hacker News is similar in its ignorance and wastefulness, but it's not a consequence of either.
>And lastly: do you honestly think most production or data engineers should be imprisoned or stripped of their titles?
Sure, probably; it's not as if their titles mean anything anyway.
Without a good bunch of enthusiasm you cannot do this job well. Moreover without some strong opinions that you are able to voice you just are a puppet of pull request comments and cannot profile yourself in your team.
I am reading this as someone a little too young and too European to yet know much about Nixon, but would prefer if HN could avoid potentially making an idiot out of myself, when talking about recent history.
I think most HN users are quite receptive to debate around capitalism. It’s just that the majority of this debate is copy pasting slogans and making easily disproven statements.
I'm glad you told me that, because I never would have discerned either of those things from your recent post history. I would suggest you probably don't have the perspective to see just how many downvotes get aimed at someone who's actually critical of capitalism and "free markets."
(You've also posted good comments to HN! my criticism here is narrowly scoped.)
We should distinguish between making substantive anti-market arguments and shrill ideological rhetoric—the latter is going to get downvoted (correctly) regardless of ideology because it's against the site guidelines and the intended spirit of curious conversation - https://news.ycombinator.com/newsguidelines.html
We detached this subthread from https://news.ycombinator.com/item?id=32635382.
Well, golly gee, thanks! That's gonna generate some insightful discussion.
I don't recall seeing very much thought to the left of Bernie Sanders/AOC on here (which is to say, left of the entire American mainstream). I'll believe that when I see it.
Of course those politics are less represented on HN than others, but they're less represented in society too. I'd guess they're rather more represented on HN than they are in the population at large, given HN's semi-intellectual orientation. (Only 50% HN users are in the US, btw, last I checked.)
As for detaching this subthread- if we aren't going to mark a big-ass ideological meta subthread off topic, I'm not sure what we would. That's one of the most boring, generic, and pointless offtopic tangents there is.
(Btw, nearly everyone who makes large claims on that note is completely wrong, because people's perceptions about this are determined by their own pre-existing positions. That's why the question of which way HN is like-totally-biased is decided so differently by every camp. If you want examples, there are dozens at https://news.ycombinator.com/item?id=26148870.)
No leetcode, no Bay Area, no FAANG.
Just people writing the code responsible for our banking, travel, supermarkets and many other systems which underpin our society.
I still have a strong suspicion that either your friends gave you wildly inflated numbers, or you happen to know some serious outliers. Check this out for a reality check - the highest-paying Eurozone country is Germany, with an average dev salary of about 60k, and 76k for seniors: https://blog.helloastra.com/2021/10/18/the-average-software-...
https://ie.talent.com/salary?job=software+developer https://de.talent.com/salary?job=software+developer
(this says Ireland is almost on par with Germany, which sounds about right)
Freelancing is a different story.
Do you have more details about the country and industry? As this is way way above the Java dev salaries in Austria and they'd kill for this kind of money without grinding leetcode. Nobody pays Java devs that kind of money here.
Positions like these don't grow on trees and since you say there's no leetcode, Linkedin or big-tech involved, I'm guessing there's other forms of gatekeeping for such a lucrative and easy gig, like having the right industry connections or knowing the right people in order to hear about the openings I would assume, as if they were to advertise this salary on Linkedin or other places they would be drowning in quality applicants, for even less money than that.
This is one of those things that "everyone knows". It may have been true at some point, but it definitely isn't true anymore. The reality is that most discussons here treat PHP fairly, giving it credit where it deserves it and also pointing out its weaknesses.
Examples:
- (2022) https://news.ycombinator.com/item?id=32325055 : top comment praising PHP
- (2022) https://news.ycombinator.com/item?id=30219984 : the top comment is a fairly positive comment overall, without falling into zealotry.
- (2019) https://news.ycombinator.com/item?id=19917655 : the top comment is someone praising Laravel and the "modern" approach to php. The general feeling is that PHP got some things right (shared-nothing), doesn't offer anything particularly unique but is surprisingly effective in reality.
Put another way, if you are not listening to the person who signs the checks, than your career will be rather short.
"Nor would a wise man, seeing that he was in a hole, go to work and blindly dig it deeper..." (The Washington Post October 25, 1911)
But there's an implication of moral purity at play. Are those who just quietly "mind their own business" a good, wholesome but misrepresented group?
On the contrary, I think that in matters with far reaching consequences, which computing is, silent majorities are the problem. Unreflectively going along with the programme becomes a kind of passive negligence which should not be lionised in a folksy way.
It enhances risk. The latest tool language and/or framework is uncharted territory
A tried-and-true solution has had a lot of bugs and issues documented and some of them solved.
It also mean the team must take a break from development to learn whatever the new thing is. Some will need more time than other, which may slow it down even further.
A lot of systems are developed in domains where "go fast and break things", A/B testing etc. would not be at all advisable.
The main selfish focus on "adopt whatever is hip this week" is to pad resumes with it, consultant can come in to help train people $$$. Consultants will fight for it to use the newest and greatest since it may increased development time $$$.
An older tech stack doesn't mean never updating the system. either. Perl still gets updates. Linux distros still get updates. In fact, often a newer piece of software will introduce bugs including security bugs that were fixed in older software long ago. All things being equal, though, using a language with better string handling and memory safety can be a boon if your old stuff is in something like C.
It's an interesting dynamic. I've been on both sides in my career. Silent is much easier but doesn't get you recognition & promotions.
...and don't forget to include the wonderboy/girl from the overpaid consulting firms that come in and tell the CEO they are doing everything wrong and should move everything to: (pick the latest technology fad)
and then 2-3 years later they come back and convince upper management to move to the next big thing...
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.
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.
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.
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.
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.
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.
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.
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.
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
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".
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:
- 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.
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.
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.
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.
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.
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.
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?"
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).
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.
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.
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.
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.
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...
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.
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.
Which is funny because most modern devops tools are written by organizations with no experience maintaining critical systems or large 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.
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.
This might be the oldest, grumpiest man on the front lawn yelling at childreniest take we on web dev, that I’ve ever heard
Web apps were never this complex before the creation of frontend web frameworks.
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.
But this isnt my field of expertise so I'll have to take your word for it that you're not joking.
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 com...
Frontend web frameworks have their use in rich apps, but using them for general web pages is just complicating things for no good reason.
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.
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.
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.
Nested ternary operators... though, because of how TypeScript does constants, I saw why they used this way of doing things so often.
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.
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.