This is true, just like "all lives matter" is true, and it misses the point in the exact same way.
Those people you are replying to are not saying that this soldier should get away with his corruption because more powerful people are getting away with theirs. They are saying that those who abuse greater power are doing greater harm, and that their corruption should be punished with greater urgency.
On top of the harm the powerful people inflict directly through their corrupt actions, there's a secondary effect on the society at large. Unlike trickle-down economics, trickle-down corruption is a real thing. People see those in power get away with corruption and say "Why should I do the right thing?"
Of course, the usual answer from those in power ends up being "because we have the power to punish you and you don't have the power to punish us". And that's how you end up with the arrest and prosecution of a US soldier on the same 5 counts that the top politicians and their cronies are getting away with on a daily basis, aided by the president himself.
Two wrongs don't make a right. Legitimizing small time corruption because bigger corruption exists just legitimizes corrupt behavior in general. It should be offensive no matter who does it.
We can't penalize the 400B corruption. If we could, I would completely agree with OP's point. It's just that it's not a matter of choice.
It's not that we "don't choose to"... We obviously want to, but we can't, because there is an inherent principal-agent problem that exists with high-level corruption.
Again, it's like saying "let's not take the time to charge someone with manslaughter, because there are people out there who have committed war crimes that have killed tens of thousands of people." We all want to bring the war-criminals to justices, but we can't, so it's moot.
We should spend our resources on law enforcement where we can. Otherwise it's a race to the bottom, because with justice, perfect quickly becomes the enemy of good.
I have to ask: did you read what I wrote before you replied to me? I know the question might come across as an attack, but it's not. I'm genuinely curious about what process lead to your comment being a reply to mine, when mine explicitly states the following:
> Those people you are replying to are not saying that this soldier should get away with his corruption because more powerful people are getting away with theirs. They are saying that those who abuse greater power are doing greater harm, and that their corruption should be punished with greater urgency.
I did read it. Your point is effectively irrelevant. It means the same thing. Creating an "urgency chain" is effectively the same thing as justifying behavior.
It's like saying "we shouldn't worry about enforcing traffic laws because we need to use our resources to bring war criminals to justice" when the reason where not bringing war criminals to justice isn't for lack of concern, it's just that we have no coercive power.
Caring about prioritizing things where we do not have coercive power is pointless.
> It's like saying "we shouldn't worry about enforcing traffic laws because we need to use our resources to bring war criminals to justice"
It most definitely isn't. At no point did anyone in this discussion say "we shouldn't worry about small time corruption". In fact, I explicitly said the opposite. And then I highlighted it after you essentially accused me of doing so, as you're doing again.
> Creating an "urgency chain" is effectively the same thing as justifying behavior.
No, it's not. No one is "creating" an "urgency chain". Justice isn't binary. Things can be more or less just, they're not either perfectly just or completely unjust with nothing in between. Similarly, different people have different levels of impact. That's the definition of power in this context: the level of impact your actions have. No one is "creating" these concepts out of thin air.
What is happening here is that people are complaining about injustice and other people -- like you and the person I initially replied to -- are trying to delegitimize those complaints by stating that "all corruption is bad".
Let me repeat this, in case it got lost despite earlier repetitions: yes, we all know that "all corruption is bad". Just like we all know that "all lives matter", but pointing out that banality only got popular after the "black lives matter" slogan surfaced in response to a systemic injustice against African Americans.
You're doing the same kind of thing here.
> Caring about prioritizing things where we do not have coercive power is pointless.
On the contrary. If you always give up on caring because you don't have coercive power, you will never rectify injustices caused by imbalance of coercive power.
It's all relative. The general idea of this is that a software engineer spent years studying such concepts and then years more working in legacy code.
so it's second nature to do the mechanical operation of "extend a new class from Widget and add a function that returns the number of pencils pushed", and then somewhat easy after a few years to "pipe the pencil pushing function into the website frontend to display". Even if just describing this to a non SWE would have their eyes glaze over, and a junior SWE would struggle getting things integrated.
The painter metaphor works well here:
>Picasso in a restaurant, asked him to scribble something on a napkin, and said she would be happy to pay whatever he felt it was worth. Picasso complied and then said, “That will be $10,000.”
>“But you did that in thirty seconds,” the astonished woman replied.
>“No,” Picasso said. “It has taken me forty years to do that.”
(Disclaimer: I do not think Picasso literally said this, but it's a very common tale)
Hard perhaps but it feels a lot easier now than three years ago. Or so my backlog of personal projects outside of my most familiar stack would suggest.
What is hard about it? Young children seem to pick it up with ease. It cannot be that hard?
Determining what to program can be hard, but that was already considered earlier.
The only other place where I sometimes see it become hard for some people is where they treat programming as an art and are always going down crazy rabbit holes to chase their artistic vision. Although I would say that isn't so much that programming is hard, but rather art that is trying to push boundaries is hard. That is something that holds regardless of the artistic medium.
> What is hard about it? Young children seem to pick it up with ease. It cannot be that hard?
That's like saying "becoming a writer can't be that hard, since kids learn how to write in the elementary school".
Given a set of requirements, there are many different ways to write a program to satisfy them. Some of those programs will be more efficient than others. Some will scale better. Some will end up having subtle bugs that are hard to reproduce.
> That's like saying "becoming a writer can't be that hard, since kids learn how to write in the elementary school".
Is writing hard? I expect most can agree that determining what to write, especially if you have an objective (e.g. becoming a best-selling novelist), can be extremely hard — but writing itself?
> there are many different ways to write a program to satisfy them.
"What to program" being hard was accepted from the onset and so far we see no disagreement with that.
> Is writing hard? I expect most can agree that determining what to write, especially if you have an objective (e.g. becoming a best-selling novelist), can be extremely hard — but writing itself?
Being able to transcribe sentences in a certain language is the skill kids pick up in elementary schools. Being a writer requires a whole set of skills built on top of that.
The reason why I brought up that difference in the first place is because both of these are called "writing". When a fan says "I heard the author is writing the next book in the series" or when an author says "I haven't been able to focus on writing due to my health issues", they're not talking about the low-level transcription skill.
> "What to program" being hard was accepted from the onset and so far we see no disagreement with that.
Similar to your interpretation of "writing", you're choosing to interpret "programming" as a process of transcribing an algorithm into a certain programming language, and everything else ends up being defined as "what to program".
That's an overly reductive interpretation, given the original context:
> For reasons which it would take a while to unpack, if is often the case that the best (or sometimes only) way to find out what programming actually needs to be done, is to program something that's not it, and then replace it. This may need to be done multiple times. Programming is only occasionally the final product, it is much more often the means of working through what it is that is actually needed.
> [...]
> Most of what is being done, during programming, is working through the problem space in a way which will make it more obvious what your mistakes are, in your understanding of the problem and what a solution would look like.
Notice that the original comment talks defines "determining what to program" as a process of refining your understanding of the problem itself.
In my reading of the original comment, understanding what your users need is "what to program". Writing code that solves your users' requirements is "programming".
> Writing code that solves your users' requirements is "programming".
For me, I need to have a solution figured out before writing code. I am not even sure how you could write code before having the problem solved. Your approach would be insightful.
Like, I get it is effectively impossible to gather all user requirements upfront and that you need to build a product to find out what details you overlooked. That means software is an iterative process. But within each iteration, surely you still need to have the solution — to the extent that it satisfies the known requirements — prepared before you can write code? Maybe if you had an infinite number of monkeys you could have them bang out something that accidentally works by throwing down random keywords, but in the real world where it is only you and your code has to meaningful, what you program is simply the expression of what to program.
Yes, which is why I have been making the distinction between "programming" and "writing code" all this time.
Programming is hard because it's not merely writing code. Determining what to program is not the same as determining what code to write. "What to program" is about requirements. Going from "what to program" to "what code to write" is what programming is about.
> Going from "what to program" to "what code to write" is what programming is about.
Once your requirements are established there isn't any thing left to choose from, other than maybe whether to use a while loop instead of a for loop — stuff that makes absolutely no difference. The structure of your code, the algorithms you choose, etc. are all dictated by the requirements. So what lies in this nebulous in-between state and what makes it so hard? Is it choosing between for and while what you think is hard?
> Only if you expand the meaning of the word "requirements" to encompass a full specification of the solution.
They are one in the same, no? Why would one write code that isn't required?
Are you referring to the aforementioned iteration process where the act of writing code and measuring the results will lead to realizing that not all requirements have been gathered? When you start with bubble sort and then users complain that your program is too slow you will realize that you missed that efficiency as a requirement when you were first determining "what to write", sure, but theoretically the requirement was there all along. I don't think when you discover "what to write" really matters with respect to the discussion. The process was understood in the original comment.
We can recognize that transient state where one hypothetically thought bubble sort was a suitable algorithm for the user's requirements when it actually wasn't. But isn't it still chosen under some misaligned understanding of the user requirements, like seeing bubble sort as being quick to implement and thinking fastest delivery is the requirement in the moment? The choice to use bubble sort is not random. I'm not sure refinement as more information becomes available changes anything.
> You want to know what I think? I think this conversation is crossing into rudeness.
True. I can think of nothing more rude than asking for clarification an in effort to understand someone. My apologies. I will only talk past you henceforth... But seriously, appeal to emotion is a poor device. There is no good faith discussion that can venture into the world of logical fallacies. What were you trying to accomplish here?
You sound like you would confidently say that you can play chess. Basic moves are easy to learn by very young children.
But if only thing you know are basic moves playing against a player with 1600 ELO you are not going to win without serious training and 1600 is still far below grand master level.
Absolutely. I am quite capable of moving the pieces around a chess board within the confines of the rules. I think you would be hard-pressed to find many who are incapable of that, given exposure to the game. If that isn't easy, what is? I am not all that good at figuring out what moves to make, but that analogs with "what to program", not "programming" as it pertains to the discussion that has been talking place. Nobody has ever suggested "what to program" is easy.
At some level even if you know basic moves those moves are wrong.
Some things are hard to express in code even if you know exactly what you need to achieve and you know all the basic moves like loops and if statements.
If you know that you have to do a check mate or get amount of points and you know how to do basic moves but you don’t know any openings you are going to loose in 3-5 moves. If you get past openings you might get to 15 moves. If you do easiest greedy approach you loose if you take easiest defensive approach you loose.
It is not „what to program” because in chess you exactly know what is the goal. Getting to that goal alone is hard.
> Some things are hard to express in code even if you know exactly what you need to achieve and you know all the basic moves like loops and if statements.
Like what? Are you, perhaps, confusing "hard" with "time consuming"? Some things take a long time to express in code (absent AI, at least). It's not hard, though. It's just rote copying down what you have already determined "what needs to be programmed". Getting to the point where it is just rote copying can be difficult, but is decidedly in the "what to program" phase.
> Young children seem to pick it up with ease. It cannot be that hard
It is other way around. Children can pick up a lot of skills that adults struggle at, like languages for example.
Plenty of research has shown reduced plasticity of the brain has stronger correlation to learning speed and ability as it grows old. Most breakthrough research is usually at age 40 or less or chess grand-masters fade in skill after. 25-40 is probably age group where the optimal balance between knowledge experience and learning ability for best outcomes.
They don't? It is taught in schools in the early elementary level. I see no indication that most are failing.
I think we can agree that few of them would be economically useful due to not knowing what to program. There is no sign of competency on that front. Certainly, even the best programmer in the world could theoretically be economically useless. Programmers only become economically useful when they can bridge "what to program".
> They don't? It is taught in schools in the early elementary level. I see no indication that most are failing.
Programming in elementary schools typically involves moving a turtle around on the screen. (My mother taught 4th grade in New York for many years, and I believe her when she explained the computer instruction.)
Economically valueable programming is much more complex than is taught in many schools through freshman college. (I taught programming at the college level from 1980 till I retired in 2020.)
Because economically valuable programming has to consider what to program, not simply follow the instructions handed down by a teacher of exactly where and how to move a turtle on the screen. But nobody questions "what to program" not being hard. It was explicitly asserted in the very first comment on this topic as being hard and that has also carried in the comments that have followed.
Good thing he's so good at respecting rules that say he can't do things. And good thing that he's had to face the punishment for breaking some of those rules. Imagine reading what you wrote if he were repeatedly allowed to break rules without any consequences.
> Left to their own devices, engineers would build the cheapest bridge they could sell that hopefully won't collapse.
I don't know any real (i.e. non-software) engineers, but I would love to ask them whether what you said is true. For years now, I've been convinced that we should've stuck with calling ourselves "software developers", rather than trying to crib the respectability of engineering without understanding what makes that discipline respectable.
Our toxic little industry would benefit a lot from looking at other fields, like medicine, and taking steps to become more responsible for the outcomes of our work.
Civil engineers are licensed and carry insurance. When software developers have similar requirements, then I'll call them engineers. In some fields like avionics, the certification regime is a good proxy for licensing -- I think we could extend the "engineer" title to those developers too.
Such a world still has room for unlicensed developers too -- I'd certainly be among them.
> Such a world still has room for unlicensed developers too -- I'd certainly be among them.
Sign me up. When I started programming as a 7 year old kid, it wasn't because I dreamed of spending my days on endless meetings and documents. But hey, 40 years later, I'm working as a senior "engineer" and with that comes a heavy emphasis on project management.
Sure, you're expected to know how to solve interesting technical challenges, but that's more of a nice-to-have. It's nowhere near important as being able to make a project look successful despite the fact that the middle management convinced the senior "leadership" to do that project out of sheer ambition and without bringing on board the people who actually talk to the users, so now you're stuck without clear requirements, without a clear way to measure success, and with accumulating tech debt gumming up the works while your boss works with various "stakeholders" to "pivot" over and over so he doesn't have to go to the senior leadership to explain why we're delaying launch again.
And what I'm describing is one of the best places I've ever worked at across more than 25 years of my professional career. Hell, I'm lucky that senior "engineer" is what they call a "terminal" position here, i.e. I'm allowed to settle in it without having to work towards a promotion. From what I've been told, there are places where you have to get to be a staff engineer or they'll eventually let you go.
I don't know about anyone else, but I find the whole situation fucking insane.
> No one has ever made a purchasing decision based on how good your code is.
There are two reasons for this. One is that the people who make purchasing decisions are often not the people who suffer from your bad code. If the user is not the customer, then your software can be shitty to the point of being a constant headache, because the user is powerless to replace it.
The other reason is that there's no such thing as "free market" anymore. We've been sold the idea that "if someone does it better, then they'll win", but that's a fragile idea that needs constant protection from bad actors. The last time that protection was enacted was when the DOJ went against Microsoft.
> Sure, if you vibe code a massive bug into your product then that'll manifest as an outcome that impacts the user negatively.
Any semblance of accountability for that has been diluted so much that it's not worth mentioning. A bug someone wrote into some cloud service can end up causing huge real-world damage in people's lives, but those people are so far removed from the suits that made the important decisions that they're powerless to change anything and won't ever see that damage redressed in any way.
So yeah, I'm in camp #2 and I'm bitter about AI, because it's just accelerating and exacerbating the enshittification.
Someone on the HN wrote recently that everyone who's foaming at the mouth about how AI helps us ship faster is forgetting that velocity is a vector -- it's not just about how fast you're going, but also in what direction.
I'd go further and say that I'm not even convinced we're moving that much faster. We're just cranking out the code faster, but if we actually had to review that code properly and make all the necessary fixes, I'm pretty sure we would end up with a net loss of velocity.
I just learned about this, too. It turns out that in the US, being an iPhone user is cool and being an Android user is lame, and you can tell who's who in group chats, because the messages that go over iMessage are represented with blue speech bubbles and the rest are in green bubbles.
That's not quite how it works. You can't have a group chat that's mixed iMessage and SMS/MMS.
If an iMessage user creates a group chat where not everyone is using iMessage, then it's MMS. I suppose now it could be RCS if everyone's using a device and carrier that supports RCS, but I haven't kept up with that. MMS has a bunch of limitations relative to any modern internet messaging app, so people don't want to use that.
Some people are also very reluctant to install third-party messaging apps.
Thanks. I don't actually have an iPhone, so my freshly acquired "knowledge" of this was based on reading about it on the Internet and I misunderstood what I read.
I don't either, but I'm familiar with the situation from talking to people who do.
The obvious answer is to just use any of the many third-party messaging apps, but in the USA it seems like there's always someone who thinks a one minute setup process and tapping a different colored icon is too much effort.
> If state-level spy agencies wanted to spy on someone's porn habits, they do not need to kindly ask Discord to collect that person's ID.
The first time I ever had a conversation about privacy concerns with anyone was around 1999. I've been hearing this kind of argument ever since then. Meanwhile, the erosion of privacy since back then has been nothing short of staggering.
We're at the point where we have government using Palantir to target the people, yet somehow privacy concerns keep falling on deaf ears and keep producing the same old "government doesn't need this latest privacy-eroding change" knee-jerk non-argument.
No, they might not need it, strictly speaking, but it sure as hell comes in handy, not to mention that it shifts the Overton window and serves as a stepping stone for the next invasion of privacy.
Every time I hear an argument like this one, it's always phrased in terms of "the government is greedy and/or incompetent, therefore taxes are bad" and never in terms of "the government is greedy and/or incompetent, therefore our systems of controlling our government are not good enough".
I didn't actually say they are greedy or incompetent.
Government starts a new program and funds it with taxes. First, it is difficult to prove if the program is doing what it set out to do effectively. Second, there is 0 incentive to ever shut it down. The people working there don't want to, the group who started it also don't want to. The people funding it have 0 insight or say if it should continue.
Except that a company, no matter how heterogenous, has an overarching organization, whereas the open-source community doesn't.
There is no CEO of open source, there are no open-source shareholders, there are no open-source quarterly earnings reports, there are no open-source P&G policies (with or without stack ranking), and so on.
This is true, just like "all lives matter" is true, and it misses the point in the exact same way.
Those people you are replying to are not saying that this soldier should get away with his corruption because more powerful people are getting away with theirs. They are saying that those who abuse greater power are doing greater harm, and that their corruption should be punished with greater urgency.
On top of the harm the powerful people inflict directly through their corrupt actions, there's a secondary effect on the society at large. Unlike trickle-down economics, trickle-down corruption is a real thing. People see those in power get away with corruption and say "Why should I do the right thing?"
Of course, the usual answer from those in power ends up being "because we have the power to punish you and you don't have the power to punish us". And that's how you end up with the arrest and prosecution of a US soldier on the same 5 counts that the top politicians and their cronies are getting away with on a daily basis, aided by the president himself.
reply