Профессиональный программист должен знать:
— Основные алгоритмы, дабы не придумывать «велосипеды с квадратными колёсами»;
— Теорию БД и SQL, без них никуда. Все серьёзные проекты используют БД;
— Структуру и функционал системы, в которой работает программист. Он должен знать как и по каким правилам отдельные элементы системы взаимодействуют друг с другом. Под системой понимается не только язык программирования, но область приложения, которая может быть не связана с программированием. Пример, профессиональный программист АБС должен знать бухгалтерию кредитных организаций, как это не звучит дико.