Как выбрать? Точный рецепт отсутствует. Наиболее надёжный вариант это, если вы хорошо общаетесь с тем кто заказывал разработку, у вас похожий проект, как по содержанию так и по длительности, если у знакомого длительность была 2 месяца, а у вас больше года запланирована, то такая рекомендация может быть бесполезной. Держать у себя разработчика, который будет кроме написание кода ещё и сигнализировать о траблах, не панацея и все же можно попробовать создать команду, часть штатные, часть наёмные - весьма рабочий вариант. Полностью создать штат разработчиков хорошая идея на длинный проект, если бюджет позволяет и это стандартный вариант, в котором вы держите много что под контролем. Большие проверенные временем компании разработчики - хорошо, только с маленьким бюджетом вы не интересны, даже если возьмут, когда что-то пойдёт не так, вы мало на что можете повлиять, от вас проще отказаться. Можно ориентироваться по цене и не брать совсем дешёвые варианты, хотя бывают дорогие и не качественные, так и бывают дешёвые с приемлемым качеством, тут скорее важна эффективность использования времени и денег.