SQL can be confusing for someone new to the language, but that’s hardly an excuse to throw either it or explicit schema out. SQL was designed to be human readable and writable, and a solid understand of it wields its user incredibly power and flexibility. Yes, you can write some really nasty queries, but there’s no reason to use a dull knife all the time just because you are afraid someone might cut themselves. This is strongly supported if you consider the alternatives so far. As a replacement for SQL, query languages based on JSON are total crap. They discourage you to actually look at your database directly, requiring code to compose queries frequently based on nested data structures. At a glance, it’s easy enough to compose simple queries for a handful of rows. As the feature set grows however, you end up with something that’s completely unmanageable and a nightmare to edit. Even if we decided to ditch SQL forever in favor of some other query language, it STILL does not force our hand to even consider removing explicit schema.