Developing new software applications in partnership with business analysts and technical architects. Upgrading existing software as the user organization needs change. Localizing software products for different international markets. Testing software to ensure the code is correct, fixing ('debugging') errors where they occur, and rerunning and rechecking the programmer until it produces the correct results. Working with trainers and technical writers to develop user support materials.