Researching, designing, implementing, and managing software programsTesting and evaluating new programsIdentifying areas for modification in existing programs and subsequently developing these modificationsWriting and implementing efficient codeDetermining operational practicalityDeveloping quality assurance proceduresDeploying software tools, processes, and metricsMaintaining and upgrading existing systemsTraining usersWorking closely with other developers, UX designers, business and systems analysts