Вообще зависит от каждого конкретного проекта, обычно выработка требований должна происходить при формировании и определении его задач самими исполнителями совместно с заказчиком, это рекурсивный процесс повторяется 4-5 раз (минимум 2-3 по ГОСТу для автоматизированных систем). Но в этом плане на фриланс слишком надеятся не приходится, так как контроль качества тут отсутствует в принципе, и заказчики особо не парятся по этому поводу... а фрилансеры/студии впаривают что могут/умеют, учитывая что универсальных инструментов не бывает выглядит это довольно печально.
Главными критериями при подборе человека для написания любых ТЗ является наличие опыта
- Проектирования SOA
- Внедрения непрерывной интеграции и приёмочного тестирования
- Знание основных подходов и технологий на 3-4 языках программирования
- Организации долгосрочной поддержки продуктов (5+ лет)
- Формирования требований к проектной документации
- Формирования требований к профилированию, нагрузочному тестированию, вертикальному и горизонтальному масштабированию
Если нужны PUSH нотификации, то это уже не MVC, а СQRS-ES ... и php / python / ruby для такого подходят довольно плохо так как довольно плохо утилизируют аппартные мощности серверов, и у них нет родной многопоточности/ассинхронности без костылей - были случаи когда люди слазили с ruby на golang и java, получали 10ти кратные приросты производительности и соответствующее уменьшения количества серверов.
node.js и ruby поддерживать довольно сложно, слишком часто отваливается обратная совместимость существующих решений. По моим субъективным - раз в полгода. Но вот в качестве систем сборки и препроцессоров для фронтэнда - ничего лучше нету.
Пишите в скайп void.nugget,
обсудим детали - помогу чем смогу.