Even with this setup in place you need a heightened level of caution relative to a monolith. In a monolith I can refactor function signatures however I desire because the whole service is an atomically deployed unit. Once you have two independently deployed components that goes out the window and you now need to be a lot more mindful when introducing breaking changes to an endpoint’s types
You don't have to. The producers of the microservice also produces an adapter. The adapter looks like a regular local service, but it implements the code as a REST request to another microservice. This was you get you type-safety. Generally you structure the code as
Proj:
|-proj-api
|-proj-client
|-proj-service
Both proj-client and proj-service consume/depend-on proj-api so they are in sync of what is going on.
Now, you can switch the implementation of the service to gRPC if you wanted with full source compatibility. Or move it locally.
It's only logical if you ignore the strawman assumption that these protesters assumed no personal risk.
Though morality can be subjective, culturally we have coalesced on many shared moral values (a subset of which have been codified into law, for example, it is both immoral and illegal to kill someone in most peace time circumstances). And since "morality" encompasses a broad set of expected behaviors that manifests in practically every facet of our lives, it's unfortunately relevant at pretty much all times. Morality is quite necessary for high functioning societies.
Since companies like Google dilute responsibility and behave collectively as sociopaths in the pursuit of money, I'm quite glad we have people willing to self-sacrifice to keep them from behaving a-socially (or, arguably, evilly). Yes, it's probably safer and "logical" for most people to avoid sticking their necks out for what the believe in.
Sir, in most companies if you suggest something technical without having equivalent political power, at best, no one will listen to you. At worst you will create political enemies.
Probably there was an SDE-2 or SDE-3 who called bullshit on it and got ignored.
You call bullshit on it by either refusing to run the test, or better and more helpfully by running a test that answers the performance question.
I've seen these kinds of requests plenty of ways. Sometimes those asking include a design or specs because they honestly thought that was the right way to do it, other times they are knowingly asking for (in this case) a useless test to check a box. In either case, IMO the right response is to ask questions to clarify the goals and build to that, changing the provided design or specs if necessary.
I've had to play this out dozens of times over the years and never earned enemies from if, at one point I won over the PM leader that everyone on the dev team warned me about. Its all about tact and approach, assume everyone is on the up and up and just ask good questions to clarify the goals. Its hard to get mad at that unless its done in a condescending or argumentative way.
If it was an SEO trick, you'd think they wouldn't bother at-mentioning people. Usually SEO stuff tries to fly under the radar so it can stay online, and visible to search engines, for as long as possible. (Like the classic technique of spamming generic "nice post!" comments on WordPress blogs with your profile URL set to the spam site.)
Reading is a skill. The more you read, the better you get. The laptop encourages you to surf (and surfing is reading), the phone encourages you to scroll, usually through images and videos.
Attention span is a separate issue. I lack the attention span to watch a short youtube video, but I can easily read long essays.
The grafana/grafana-oss docker image has a bin/grafana static go binary that takes up 180MB. It compresses to 20% that size as does the long tail of .js.map files each of which are 1MB to 10MB in size. Presumably these are only there for debugging Javascript. I wonder why they were included?
The whole image is ~80MB, compressed. It is, indeed, impressively lean.