Без заголовка
Правильный подход -- это хорошо писать, и добиваться, чтобы хорошо работало. И для этого в ключевых точках должны быть правильные алгоритмы (т.е. программист не должен уклоняться от дискуссии, как лучше обойти его случай дерева: сверху вниз, снизу вверх или сикось накось. Он должен знать о существовании такой дискуссии и основных аргументах сторон ещё до написания кода!). Но или человек долго возится с usability и agile, либо дружит с математикой и читал Кнута. Гармоничный баланс двух умений плохо получается. Возможно, нужно использовать разделение труда: иметь в команде как минимум одного чокнутого алгоритмиста и одного чокнутого человека с инженерным взглядом на жизнь, и талантливого менеджера, который сможет обеспечить их дружную работу с "конструктивным конфликтом" (а не деструктивной сварой с утра до вечера). Это отличается от "иметь в бригаде языковеда", ибо знакомство с алгоритмами обычно означает языковедение на очень и очень заковыристых языках, недоступных простым императивным смертным.