Specific assignments may require knowledge and proficiency in specialized areas such as graphical user interface design, distributed network programming, three-tiered system architecture, database interaction, software and hardware selection implementation and testing methodology; client/server application development; systems or network architecture; database-connectivity and database design methodology. Ensures project will meet customer requirements by determining development tools, modeling tools, programming language, system structure and hierarchy, third party libraries, operating system, hardware platform, user interface, and communication protocols.