ну есть небольшие различия, т. к программист может просто программировать устройсвта, а разработчик системы или их еще называют разработчик ПО, это другое немного, но обеим надо знать языки программирования.
Если работа организована правильно и в проекте участвуют более одного человека, то эти функции выполняются разными людьми, но если человек у проекта один то это одно и то же.
Эти слова зачастую употребляют как синонимы, если слово "разработчик" употребляется не в контексте конкретной системы (в этом случае в качестве разработчика выступает коллектив, либо компания, которая реализовывала систему) , а применительно к человеку. В интернете есть бурные обсуждения на эту тему, однако я лично склоняюсь к следующему.
В утопическом мире, когда все требования расписаны настолько точно, что программисту просто не нужно думать и просто писать строчку за строчкой, то разработчиком является компания, которая предоставила эти требования.
Однако в реальном мире действительно точные требования могут быть представлены только в виде программного кода. В требованиях очень много пробелов, которые может заполнить (и увидеть) только программист. Тогда он является разработчиком, но, может быть, и не всей системы.