9 karma · joined January 3, 2013
I learned all the rules of logarithms in 10th grade, but didn't actually know what a logarithm was until chemistry in college. They just.. didn't really tell us. And how often are integrals explained as "the area under a curve", which is a definition that makes absolutely no sense?
You wouldn't ask a 6 year old how the government ought to be run. Why should you value the opinion of a 30 year old who hasn't actually learned any more about the topic in the intervening 24 years?
You may think you understand a topic, but you really have a narrow view of it. You understand your own point of view, but not necessarily others. Or the breadth and depth of consequences to a decision. How can you expect equally valid results through a narrower lens?
It's not that they don't "know better", it's that their needs are different. Just like it's hard to sell an amateur tool to a professional, it's hard to sell a professional tool to an amateur.
Of course, that's not the only division. Small business vs. enterprise is another. For instance, Amazon S3 enabled an entire new class of content-based web startup. Not because it was "like having fileservers but worse", but because it served the needs of users who needed to host files, but didn't need and couldn't afford to have their own hardware. A group which was otherwise underserved in the market at the time.
But here's the thing: it doesn't really matter what you have or haven't experienced. What matters are the experiences of the people being discriminated against. As I said, these stories are everywhere; if someone says they were made to feel a certain way (such as: unwelcome) it's not your prerogative to question whether that was a valid way to feel.
And what if you want to have the same logic for several services? I guess you abstract it out to a function. But then it turns out one of those services doesn't have a restart command, and you have to do stop+start. And another service won't start if you use restart while it's not running, so you have to check if it's stopped and use start, otherwise use restart.
It's much more than just whether the code is declarative or imperative, or whether it's idempotent or not. An imperative tool can change your system from known initial state A to desired state B. A declarative system can change it from whatever initial state it's in to desired state B, even if you never considered it might be in that state.