But software developers often struggle to use sql and prefer using ORMs or analytical APIs like polars; the people who excel at sql are typically not programmers, they’re data engineers, DBAs, analysts, etc.
Maybe a similar bifurcation will arise where there are vibe coders who use LLMs to write everything, and there are real engineers who avoid LLMs.
Maybe we’re seeing the beginning of that with the whole bifurcation of programmers into two camps: heavy AI users and AI skeptics.
What you can achieve with the standard SQL is taught on universities. The whole package. I’ve never met a developer, who struggled with that. When you use ORMs you need to follow SQL’s logic anyway. People use ORMs to avoid painful data conversions. Not to avoid the logic. Data engineers, DBAs, analysts, etc excel in specific databases, not in “SQL”.
Ive worked in BI and data engineering my whole career and I’ve met plenty of programmers who struggled immensely with SQL once it went further than select and group by. And don’t get me started about their database design skills. It’s way too often a disaster hidden behind “it works for the software so good enough”.
Im more surprised by software engineers who do know these things than by the ones who don’t.
I’ve worked with gameplay programmers who can’t do simple 3D math, c++ programmers who fundamentally don’t understand pointers, backend developers who didn’t understand globals were shared state and cause race conditions, etc.
It’s not that SQL is hard, it’s that for any discipline the vast majority of people don’t have a solid grasp of the tools they’re using. Ask most tradespeople about the underlying thing they’re working with and you’ll have the same problem.
I'm a developer and:
- I hate ORMs, they are the source for a lot of obscure errors behind layers and layers of abstractions.
- I prefer analytical APIs for technical reasons, not just the language.
Reasons:
- I can compose queries, which in turn makes them easier to decompose
- It's easier to spot errors
- I avoid parsing SQL strings
- It's easier to interact with the rest of the code, both functions and objects
Well, the problem in ORM is the O. Objection-orientation is just a worse way to organise your data and logic than relational algebra.
It's just a shame that many languages don't support relational algebra well.
We had relations as a datatype and all the relevant operations over them (like join) in a project I was working on. It was great! Very useful for expressing business logic.
It's not enough, there is no way to represent some db stuff (not relational, more impl oriented) or some special queries in the program with an ORM. No ORM I have seen comes close to 100% of what you could do with the DB. So still the best way to get closest to the db is using raw queries in the program, but of course that does not scale with more tables, does not scale with more db engines, and does not scale with juniors taking over your codebase and not understanding it.
So to conclude, objection-orientation is fine and relational is fine too, the issue is that the optimal way to translate between them does not scale.
I'm with the first part of your comment. But why do you suddenly conclude that object orientation is good?
If your language supports relation, there's no need to badly translate to objects. (And even if your language doesn't support everything your database does, there's still less of an impedance mismatch if you use an 'RRM' instead of an ORM.)
Are you saying that expecting software developers to know how to use SQL is a no true scotsman fallacy? What's next? Do we stop expecting people to know how FOR loops work?
Do you think that's where I'm going with that? Expectations for people and for loops?
> 'real' engineers can use SQL just fine.
To be very explicit instead of snarky about my point: I think it is both factually incorrect and unnecessary gatekeeping to say real engineers know sql and imply not knowing sql marks someone as not a real engineer, hence the "no true Scotsman" fallacy.
I probably agree with most of your opinions here within the context of the thread - I think good engineers can learn sql and other tools as necessary. I don't, however, think experience with any particular technology is a valid bar for a good or bad engineer at this point and I'm happy to speak against that when I see it.
Aren't data engineers programmers? That is to say, a data engineer is-a software engineer?
I share your sentiment though - I'm a data engineer (8 years) turned product engineer (3 years) and it astounds me how little SQL "normal" programmers know. It honestly changed my opinion on ORMs - it's not like the SQL people would write exceeds the basic select/filter/count patterns that is the most that non-data people know.
Claude made this point while reviewing my blog for me: the mechanization of farms created a whole lot more specialization of roles. The person editing CAD diagrams of next year's combine harvester may not be a farmer strictly speaking, but farming is still where their livelihood comes from.
> Strictly speaking, farming is where all our livelihoods come from, in the greatest part. We're all living off the surplus value of food production.
I don't think farming is special here, because food isn't special. You could make exactly the same argument for water (or even air) instead of food, and all of a sudden all our livelihoods would derive ultimately from the local municipal waterworks.
Whether that's a reductio ad absurdum of the original argument, or a valuable new perspective on the local waterworks is left as an exercise to the reader.
Except in a few places drinkable water is in such abundance that nobody every spent significant effort trying to get it. Likewise for air, few people have ever spent much effort getting air to breathe - even in the worst polluted areas bottled air was reserved for airplanes, hospitals (and a few people with medical conditions), and scuba divers.
And food is now in such abundance (at least in the western world) that we don't spend much effort on it, either. Or at least, if you only care about energy and nutrition, you can get it for really cheap. If you want something tastier, you can pay more. Exactly the same with drinks.
You could argue that water being so cheap is exactly what you'd expect when the surplus value of water production is sky-high: people only spend a fraction of their income on both food and water production, exactly because the surplus is so high.
Thus if water isn't the basis for all our livelihoods, neither is food production these days.
Removing jobs that could only be performed by those living near the particular fields with those that can be done anywhere makes jobs for the person willing to take the least satisfactory compensation for the most skill and work.
Working the summer fields was one of the least desirable jobs but still gave local students with no particular skills a good supplemental income appropriate for whichever region.
depending on the job, it may also allow you to select for talent much better, which creates intense competition and raises salaries significantly.
A good example of this phenomenon is sports. Even thought it can't be done remotely, it's so talent dependent that it's often better to find a great player in a foreign country and ask them to work for you, rather than relying exclusively on local talent. If it could be a remote job, this effect would be even greater.
Increasing total prosperity is the wrong goal if distribution is completely unregulated. Investor and real estate owning classes like the 1% get more, the salaries can trend down because food costs are down, in a deflation spiral the youth are perpetual dependents and/or debtors who can't possibly earn enough over day to day costs given global competition includes people with no debts or debts from an economy that was less wealthy.
Maybe a similar bifurcation will arise where there are vibe coders who use LLMs to write everything, and there are real engineers who avoid LLMs.
Maybe we’re seeing the beginning of that with the whole bifurcation of programmers into two camps: heavy AI users and AI skeptics.