Программист вообще должен знать всё. Вот поступил заказ на программу для кассовых аппаратов. И надо учиться работать с кассовыми аппаратами. Вот поступил заказ на какую-то рассчитывающую программу для телескопов. И учи астрономию.
А насчёт «надо»/«не надо»: вам очень пригодилось в течение жизни знание того, что в русском алфавите 33 буквы? А знание того, что затмения происходят из-за того, что Луна отбрасывает тень на Землю? Такие знания формируют кругозор, некоторым и без него неплохо.
Программист скорее должен не знать всё (невозможно такое), а уметь разобраться в том, что нужно для написания программы. Возможно (при серьезном, не кустарном подходе), при помощи специалистов в той области, для которой разрабатывается программа.
Иначе выучит программист астрономию на случай, если закажут программу на эту тему, а заказа и не будет, закажут программу по сравнительной лингвистике.
Знание количества букв в русском алфавите. насколько я помню, мне ни разу не пригодилось. Возможно, когда-нибудь в будущем.
Незнание количества букв в украинском или польском алфавите тоже как будто бы ни разу не помешало.