1) Programmers, who have solid coding skills that primarily work on building systems using existing modules and libraries. 2) Software engineers, who have algorithmic and systems level expertise along with advanced coding skills, and are capable of working on complex software such as operating systems, compilers, and other libraries / components used by others.
Let me hasten to add that that isn't to say one is better than the other. Both are needed, just like both regular doctors (in greater quantity) and neurosurgeons are needed (in lesser quantity) are also needed and all are highly skilled professionals.