Essential job duties include:  Design, code, test and debug complex software while developing new functionality, and enhancing existing functionality, in order to satisfy customer requirements, both internal and external