Чем отличается программист от системного программиста?
Это довольно условное деление.. . Системными обычно называют программистов которые пишут программы уровня ядра операционных систем. В отличие от прикладных программистов (как Вы их назвали - "обычные"), у системных работа требует очень четкого знания архитектур операционки и "железа", поскольку системный код способен обрушить операционку, в отличие от прикладного.
Согласен со всем вышесказанным еще хочу добавить, что по данным Американского национального института стандартов (ANSI) всех кто пользуется компьютером можно разделить на 3 группы.
1. никогда не программируют таких примерно 90%
2. програмирут только на языках высокого уровня СИ Паскаль Делфи практически все современные языки програмирования
таких примерно 8-9 процентов
3. програмируют на аппаратном уровне драйверы операционные системы и т. д. 1-2 процента
Так вот 2 это програмисты 3 системные програмисты
Причем я не стал бы выделять кто круче. Все зависит от количества задач. Очевидно, что задач не требующих навыков програмирования значительно больше чем задач требующих знания архитектуры системы компьютер ОС человек
Программист решает конкретную задачу переложения работы с больной головы пользователя на здоровуб компьютера.
А системный программист решает, стоит ли решать такую задачу.