A person who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as chips, work (source: Wikipedia).
a person who designs and writes and tests computer programs