I was having a discussion about databases and SQL with some coworkers and I want to get a chance to argue for using that as opposed to an ORM that generates some generic query functions. I feel like doing it the “hard and unintuitive” way will require more work and also allow for much finer-grained control and the ability to tweak queries and get into the details of indexes and execution plans, which can be important at some points. And there is no worrying about the quality or correctness of generated code.
At the same time I have been largely impressed with the thought that as developers we need a continuing and life-long lesson in empathy. Ask a non-daily computer user, maybe a senior citizen, to start making appointments and dealing with logistics online and see the result. And what if the person in question cannot afford a cell phone? Or a smart one with a web browser built in? Are we to leave such people behind? And what of accessibility? Of literacy or language fluency?
These issues are - to me - all tied up. There are no easy answers and as with all practical things there will be decisions and tradeoffs made.
But I think it is definitely worth thinking about.
I was watching debate between Robert Sapolsky and Daniel Dennett on free will. Robert pulled the rug out under Daniel's by saying, "Daniel is agreeing with me on the easy cases where it is easy to pin point a failure by a person to his brain tumour but the environment, both internal and external, always determine a person's behaviour in all cases and hence empathy must be extended to all people irrespective of whether we can explain it or not"
> And there is no worrying about the quality or correctness of generated code.
Although people are still very capable of writing terrible code.
The real, best reason to use an ORM is to piggyback on their migration management- the abject awful chaos of DIY migration tooling is difficult to describe.
That is an argument for using an ORM (or similar) to define the schema. I agree it is probably the biggest single advantage.
There are advantages for using an ORM for queries. Its more concise (at least Django ORM, which is what I mostly use), it uses the same syntax as the rest of your code, and it returns an object. It works very well for simple queries but for more complex ones it does sometimes feel like I am fighting the ORM, and you do often have to look at the generated SQL too.
Using computers is now a basic necessity for life in modern societies, on par with reading and writing.
I think the answer for people who do not have or for some reason cannot use computing devices is to provide places they can go and be assisted (we have those in France called "maisons de service").
I don't think you can design everything around the lowest common denominator (in terms of language or computer literacy) but you can provide ways of obtaining assistance for those that can't manage by themselves.
Not really. You can still pay your bills with checks and file your taxes on paper and make doctor and dentist appointments by phone. Sure computers offer convenience but are not essential especially for a person who grew up without them.
I was having a discussion about databases and SQL with some coworkers and I want to get a chance to argue for using that as opposed to an ORM that generates some generic query functions. I feel like doing it the “hard and unintuitive” way will require more work and also allow for much finer-grained control and the ability to tweak queries and get into the details of indexes and execution plans, which can be important at some points. And there is no worrying about the quality or correctness of generated code.
At the same time I have been largely impressed with the thought that as developers we need a continuing and life-long lesson in empathy. Ask a non-daily computer user, maybe a senior citizen, to start making appointments and dealing with logistics online and see the result. And what if the person in question cannot afford a cell phone? Or a smart one with a web browser built in? Are we to leave such people behind? And what of accessibility? Of literacy or language fluency?
These issues are - to me - all tied up. There are no easy answers and as with all practical things there will be decisions and tradeoffs made.
But I think it is definitely worth thinking about.
Here is another article with different ideas on the subject: https://news.ycombinator.com/item?id=35589176