1. Modify existing software to correct errors, to adapt it to new hardware, or to upgrade interfaces and improve performance. 2. Develop or direct software system testing or validation procedures. 3. Direct software programming and development of documentation. 4. Consult with customers or other departments on project status, proposals, or technical issues, such as software system design or maintenance. 5. Analyze information to determine, recommend, and plan installation of a new system or modification of an existing system. 6. Consult with engineering staff to evaluate interface between hardware and software, develop specifications and performance requirements, or resolve customer problems. 7. Design or develop software systems, using scientific analysis and mathematical models to predict and measure outcome and consequences of design. 8. Prepare reports or correspondence concerning project specifications, activities, or status. 9. Confer with data processing or project managers to obtain information on limitations or capabilities for data processing projects. 10. Store, retrieve, and manipulate data for analysis of system capabilities and requirements. 11. Coordinate installation of software system. 12. Monitor functioning of equipment to ensure system operates in conformance with specifications. 13. Supervise and assign work to programmers, designers, technologists, technicians, or other engineering or scientific personnel. 14. Advise customer about or perform maintenance of software system. 15. Train users to use new or modified equipment. 16. Specify power supply requirements and configuration. 17. Modify software programs to improve performance. 18. Monitor computer system performance to ensure proper operation. 19. Manage information technology projects or system activities. 20. Provide technical support for software maintenance or use. 21. Analyze project data to determine specifications or requirements. 22. Collaborate with others to resolve information technology issues. 23. Apply mathematical principles or statistical approaches to solve problems in scientific or applied fields. 24. Collaborate with others to determine design specifications or details. 25. Design software applications. 26. Assign duties or work schedules to employees. 27. Supervise information technology personnel. 28. Communicate project information to others. 29. Assess database performance. 30. Coordinate software or hardware installation. 31. Prepare data for analysis. 32. Teach others to use computer equipment or hardware. 33. Identify information technology project resource requirements. 34. Provide recommendations to others about computer hardware.