Сложно сказать, что нужно. Как понимать это "нужно"? Что-то знать совершенно необходимо, что-то знать желательно. Диапазон очень широкий. Ещё зависит от направления, в котором программист работает, от решаемых задач. Желательно закончить ВУЗ по одной из специальностей, связанных с программированием. Ссылка "Теоретический минимум для программиста" sharpc.livejournal.com/67583.html На самом деле это не минимум, а просто список тем. Это скорее максимум.