Software developers research, design, and develop computer and network software or specialized utility programs. They analyze user needs and develop software solutions, applying principles and techniques of computer science, engineering, and mathematical analysis. They update software or enhance existing software capabilities. Software developers may work with computer hardware engineers to integrate hardware and software systems and develop specifications and performance requirements. They may maintain databases within an application area, working individually or coordinating database development as part of a team.