Correct errors by making appropriate changes and rechecking the program to ensure that the desired results are produced. Conduct trial runs of programs and software applications to be sure they will produce the desired information and that the instructions are correct. Write, update, and maintain computer programs or software packages to handle specific jobs such as tracking inventory, storing or retrieving data, or controlling other equipment. Write, analyze, review, and rewrite programs, using workflow chart and diagram, and applying knowledge of computer capabilities, subject matter, and symbolic logic. Perform or direct revision, repair, or expansion of existing programs to increase operating efficiency or adapt to new requirements. Consult with managerial, engineering, and technical personnel to clarify program intent, identify problems, and suggest changes. Perform systems analysis and programming tasks to maintain and control the use of computer systems software as a systems programmer. Compile and write documentation of program development and subsequent revisions, inserting comments in the coded instructions so others can understand the program. Prepare detailed workflow charts and diagrams that describe input, output, and logical operation, and convert them into a series of instructions coded in a computer language. Consult with and assist computer operators or system analysts to define and resolve problems in running computer programs. Investigate whether networks, workstations, the central processing unit of the system, or peripheral equipment are responding to a program's instructions.