Обязательно:
С++, паттерны программирования.
Всё остальное зависит от специализации и задач. Точнее, всё остальное можно и не знать.
Главное иметь базу, а знания по задаче спокойно наберутся.
Ну и вдобавок теорию распределения рабочего времени, понимание "меньшего зла" и коммуникабельность (пусть и в узком кругу)
PS пункт "Вся теория про компиляторы, IDE, и прочий инструментарий" это скорее из категории "суперспециалистов" и относится к максимум 0,5 - 1% всех программистов. Вы б ещё написали пункт - знание всех ОС с всеми тонкостями