Прежде всего, программисту нужно знать программирование. То самое, о котором не говорят в самоучителях языков программирования и на курсах программирования.
Для того, чтобы быть программистом надо не только записывать способ решения задачи в понятной компьютеру форме (т.е. уметь писать код на языке программирования), но и находить эти способы решения и выбирать из них оптимальный для данных условий (т.е. уметь программировать).
Бездумного копипаста вызубренных типовых методов решения типовых рутинных задач для того, чтобы быть программистом, недостаточно.
Устройство ПК знать не нужно. Программист - это автор кода, который должен знать только две вещи: задачу и решение. Точный объем информации разнится от языка к языку. И рассматривать программирование надо, как творчество, в котором не требуется знать о рисовании красками, если предпочитаешь карандаши.
Он должен знать всё
Кто будет следующим президентом страны
Где прячутся марсиане
Что есть на дне Марианской впадины
За кого выйдет замуж Бузова
Сколько денег у Киркорова
И всё остальное )