Researching, designing, implementing and managing software programs
Testing and evaluating new programs
Identifying areas for modification in existing programs and subsequently developing these modifications
Writing and implementing efficient code
Determining operational practicality
Developing quality assurance procedures
Deploying software tools, processes and metrics
Maintaining and upgrading existing systems
Training users
Working closely with other developers, UX designers, business and systems analysts