Deleted Comment
Morality is a social construct. The selfish gene is a biological construct.
It also feels uniquely selfish. "I love the money but I still want to protest!" If you feel so strongly then quit but that would require sacrifice.
If you cant come to terms with what your employer is doing, it's in the right of the either party to terminate the contract.
Morality is a subjective argument and non-sequiter here anyway.
Management and product owners should understand how these things work, and shouldn't ask for bogus data when they do. But teams implementing the changes should just flat out refuse when they know the request isn't reasonable.
Probably there was an SDE-2 or SDE-3 who called bullshit on it and got ignored.
then correct your initial post, which says something entirely different:
> Fun fact: the WireGuard macOS client application cannot work on macOS unless it's distributed via the App Store - Apple simply will not provide the required VPN entitlements for web/self distributed apps. You can use the commandline wg tools (which use a different OS API) but not the GUI ones.
it really is increasingly annoying that people just post nonsense on HN to back up their dumb prejudices.
In pretty much all projects I worked with in recent years, people chop up the functionality into small separate services and have the events be serialised, sent over the network and deserialised on the other side.
This typically causes enormous waste of efficiency and consequently causes applications to be much more complex than they need to be.
I have many times worked with apps which occupied huge server farms when in reality the business logic would be fine to run on a single node if just structured correctly.
Add to that the amount of technology developers need to learn when they join the project or the amount of complexity they have to grasp to be able to be productive. Or the overhead of introducing a change to a complex project.
And the funniest of all, people spending significant portion of the project resources trying to improve the performance of a collection of slow nanoservices without ever realising that the main culprit is that the event processing spends 99.9% of the time being serialised, deserialised, in various buffers or somewhere in transit which could be easily avoided if the communication was a simple function call.
Now, I am not saying microservices is a useless pattern. But it is so abused that it might just as well be. I think most projects would be happier if the people simply never heard about the concept of microservices and instead spent some time trying to figure how to build a correctly modularised monolithic application first, before they needed to find something more complex.