Физику точно не обязательно. Только если Ваша предметная область не физические расчеты. Но с тем же успехом тогда можно сказать что "хороший программист должен отлично знать бухгалтерию". И это выражение даже ближе к истине поскольку в современной России бухгалтерией и прочим учетом занимается несоизмеримо больше программистов нежели физикой.
С математикой здесь несколько сложнее. Во многих областях программирования, и причем эти области как раз наиболее массовые, нужна только элементарная математика. Следующими в плане полезности идет дискретная математика, теория множеств и теория вероятности. Это да формально разделы высшей математики. Но фактически они весьма специфичны по сравнению с той "высшей математикой" которую начинают преподавать в школах и продолжают на первых курсах непрофильных ВУЗов. И которая в основном состоит из матанализа. А вот матан программисту нужен ровно также как и вышеупомянутая физика - только если это Ваша предметная область.
Есть обходной вариант - так называемая "информатика". Которая есть ни что иное как выжимка в упрощенном виде как раз тех разделов математики, которые достаточны подавляющему большинству программистов. Не путать со школьным предметом информатика, под коим часто имеется в виду вовсе не информатика а программирование.
Физика нужна больше для общего развития.А вот высшая математика конечно нужна.Дискретная математика,млита - must have.Ну и конечно же не стоит забывать об алгоритмах.
а что такое млита?