• Gathers and documents application requirements • Apply techniques of programming and data structuring to specific problems or requests • Analyze existing programs, correct errors, test the changes to ensure desired results are produced • Compile and