Я считаю, что, в любом случае, для профессиональной работы необходимо глубокое знание своего языка программирования, общее представление о других языках и как минимум знание математики уровня первого курса. Это позволит найти решение для практически любой поставленной задачи или понять, где это решение искать.