"all database access should be via stored procedures"
They're compiled on the server and execution plan in properly cached, it makes them fastest (if written correctly, ofcourse). Another great thing is that it's very easy to maintain security or even implement row-level security if needed. I avoid views, just because you have to maintain indexes both on the view and the tables in order to make it efficient.
But, I agree... you should be able to know all possible options available. If I need to put something together QUICK, or even something that will be run infrequently such as a report, I'll use what ever makes it easiest. But if it's a back-end system for a website, for example, the rules should apply.