Hmm, thanks for this opinion, and experiences.
But unless you handling it on your own, you have no role management, no data partition, no contact related access control to data, no dotted attributes support....hmmm....
Sure, direct access to db is the fastest one, and maybe the one with lessest overhead, but as always, it is not reflecting application logic.
Might be ok for read access only, with the disadvantages mentioned above, but a no go for updates anyhow.
SOAP, in my understanding , is a machine to machine API , where exception handling is a must, and easily possible.
If you are looking for a UI related interface, take REST.
As always , it always depends on what you need to achieve.
Regards
.....Michael