Программированием очень общий термин, и этим словом могут называть как процесс сборки как из конструктора лего готовых приложений, с чем справится практически любой более менее адекватный человек, изучив документацию и общие положения, так и разработка эффективных алгоритмов, решающих задачи, которые еще не решены или решены не эффективно.
Что бы делать что то серьезное (что вы подразумеваете под системным программированием?), необходимо разбираться в той системе, в который вы собираетесь работать... не на уровне пользователя, а на глубинных уровнях, разработчика.
Пример, что бы состряпать простейшую формочку с кнопочкой и текстовым полем на win32 требуется минимальные знания c++, win32 api (да и не нужно знать, достаточно пары примеров посмотреть) и знание тулчейна (как настроить и как пользоваться), что бы собрать из исходников свое приложение..
А что бы состряпать решение, которое создаст дополнительный рабочий стол windows, подключит к нему второй монитор, дополнительную клавиатуру и мышку, и сделает на рабочих ревизиях многопользовательский терминал (смотри ibik aster) необходимо разбираться во внутренних особенностях и глюках win32 (в т.ч. что там последовательно наломали майкрософт со времен winnt4 до win11), разработать драйвера прослойки (что бы правильно разделять управлени и доступ к клавиатуре и монитору), да еще что бы это работало на одной видеокарте и не требовало по отдельной на рабочее место... в общем вот ЭТО системное программирование.
p.s. есть мнение, что что бы работать на таком уровне нужно не просто знания, но и соответствующий склад ума, какая то внутренняя мотивация (многие вещи тупо скучно изучать просто так) и возможность это делать продолжительное время.