Are devs losing the skill of writing good database queries and operations because of the rise in the use of ORMs? Undecided so far..discuss?
My answer doesn't fit into 140 chars so I'm going to inflict a rare blog post on you.
The evolution of programming (in my myopic lifetime):
Rapid Application DevelopmentWhen I was a nipper RAD seemed to be all the rage. Visual Basic & Delphi were the kings in the world of small to medium business and their developers were knocking up simple interfaces on top of simple databases such as Paradox, dBase and the JET engine. Typically database design was very simple in these applications in db theory terms many of these application started off with a Universal relation and when necessary the applications tended to have a few more tables. Some of the tooling that I experienced helped you glue these queries together producing some suspicious SQL. (And in many dialects ANSI-92 incompatible).
It's probably worth noting at this stage that the whole point of RAD was to rapidly develop applications. Tooling allowed developers to put together GUIs very quickly and these GUIs were a lot of the time just an interface over the data tables they supported.
As some of these business became more mature the more requirements for the application grew and so therefore so did the number of entities in datastore.
The rise of the enterprise dbThere began a new era. As SQL databases became more popular and many applications stored their data in the same databases (or very similar/replicated distributed dbs) and data became a central part of small to medium businesses's strategy, more questions were asked of the data. In applications and in the relatively new area of Business Intelligence. The developer of this day was asked to do a lot more with asking the database. In addition stored procedures were popular and a lot of business logic was put in there. Data was king and this was the golden of SQL. RDBMS's were begining to look invincible.
The fallIt seems from my point of view at least that not much has come out of RDBMSs in comparision with the application development space. App devs have had to evolve from desktop to web, learn testing, go functional, go dynamic, get SOLID and have had to start testing their own work. In addition to all the tooling changes there was another look at design. A lot of previous systems were developed from a data driven perspective. Now the thinking was to design a system from a domain driven perspective. Databases suddenly became an implementation detail (and a very expensive one in Oracle's case).
So about queriesSo what does this little history lesson tell us? Well in the RAD days data and DBs were forming for small to medium orgs. Queries were simple typically as the systems were tightly coupled to UIs and as the whole flipping db was in 1 table. The majority of developers only needed to user very simple SQL. Then RDBMSs became more prevalent and SQL became more popular so geralists had to learn more complicated SQL. As more data was stored in our DBs we had to get smarted with out SQL and learn about optimization too. To get by you needed to know more. Now we are in an age that we are questioning that data should even be stored in an RDBMs there is less motivation for developers to learn SQL in depth.
I think this is a good thing. Application programming is becoming more diverse why learn about SQL if you are say a mobile dev or a front end dev or a game dev? Our industry is demanding more diversity so why not embrace it?