Кодер (техник-программист в терминах современных ПТУ) может собрать программу из работающих блоков-библиотек - не понимая, как эти библиотеки работают и не умея оценивать применимость данной библиотеки в данном конкретном случае. Он не в состоянии оценить эффективность собственного кода. Но т.к. 90% современных задач - это типовая конвейерная рутина, не требующая высококачественного кода, то спрос на дешёвых кодеров стабильно высок. Выпускники ПТУ (политкорректно - колледжей) и курсов, большинство самоучек - это именно кодеры.
Программист (инженер-программист) - это объём теоретических знаний (прежде всего, математических), даваемых в ВУЗе, позволяющих из десятков разных способов решения задачи выбрать оптимальный для заданных условий. Если кодер может только использовать сторонние библиотеки, то программист может написать качественную библиотеку. Если требуется высокоэффективный код - это только к программисту.
P.S. Если человек заявляет: "математика программисту не нужна" - это 100% кодер.
P.P.S. Проблема самоучек в том, что они не знают и не понимают, что именно необходимо учить для того, чтобы стать программистом. Например, большинство спрашивающих здесь об обучении программированию искреннее веруют в то, что главное - выучить язык программирования.
По-английски coder -это, наверное, всё таки образцовый программист, а то и лучший из программистов. По-русски кодировщик -это просто набивщик программ и не более того, в лучшем случае разрабатывающий простые вещи, то есть простой техник, а не, например, инженер по программному обеспечению, конструктор или проектант. А слово "кодер" вообще имеет не вполне определённый смысл, но если проследить всю его этимологию, то это всё таки, наверное, супер-программист. Только вот есть инженеры-программисты, а про инженеров-кодеров что-то как-то не слышно..
Это всё условности. Условно можно сказать, что кодер может "дерьмокодить", писать какой-то код, но не владеет пониманием эффективности алгоритмов, программной инженерии, плохо знает теорию и пишет малограмотный код.