Аннотации — это скучная тема, но хочу сказать по поводу CRUD.
Всё сводится к «у меня тут приложение простое». А что такое «простое» — это никому неизвестно, мы по понятным причинам кодом не делимся. Само понятие «простое» слишком размытое, поэтому не ждите что можно найти какое-то понимание, если вы его постоянно используете как аргумент в свою пользу. Скажем, если у вас задача посчитать сумму всех чисел от 1 до 100, то самое «простое» решение — это начать складывать все числа по очереди. Но можно, как в одной легенде с Гауссом, применить более «сложный» метод, который приводит к ещё более «простому» решению, и цена за это — нужно напрячь мозги. Когда речь идёт о том, что нужно наполнить базу и подойдёт чуть ли не phpMyAdmin — OK, не понимаю что тут можно обсуждать. Но в остальных случаях, особенно когда вы работаете над основной частью системы, как универсальная чёрная дыра вида PUT /foo/42, принимающая любые свойства может быть «проще», чем несколько явных методов с явными именами и имеющими явный список параметров — это большой вопрос.
Я помню кое-кто хвастался, что нагенерить CRUD-формы он может за полчаса-час. Но такая скорость легко объяснима: здесь вообще нет никакой логики. Вы просто сделали интерфейс к базе данных. Если бы сайты представляли из себя лишь интерфейсы к базе данных, то можно было бы избавиться от лишнего звена — какого-то там «программиста», который лишь занимается настройкой. Хотя постойте, StrongLoop уже изобрели.