Программист обязан иметь хорошую логику и навыки алгоритмизации. Всё остальное — особенности конкретного языка или фреймворка — можно изучить на практике. Продолжая историю моего опыта общения с программистами, могу отметить, что два лучших разработчика в моей практике (включая девушку) закончили факультет ВМК МГУ, где получили именно фундаментальные знания.