Understanding client requirements and how they translate to new application features Collaborating with the development team and other IT staff to set specifications for new applications Writing high-quality code to program complete applications on schedule