A programmer must create ne idea of science in the solution of the problem.Also all the solution of program is related to the science. So a programmer is a scientist.
A engineering is concerned with all aspects of software production. So, a programmer is an engineer as he applies special as well as engineering methods.
A programmer is also as artist, as he should know the artistic representation of program's output.