Analyse user requirements
Write and test code, refining and rewriting it as necessary and communicate with any programmers involved in the project
research, design and write new software programs (e.g. business applications or computer games) and computer operating systems
Evaluate the software and systems that make computers and hardware work
Develop existing programs by analysing and identifying areas for modification
Integrate existing software products and get incompatible platforms to work together
Create technical specifications
Write systems to control the scheduling of jobs or to control the access allowed to users or remote systems
Write operational documentation with technical authors
Maintain systems by monitoring and correcting software defects
Work closely with other staff, such as project managers, graphic artists, UX designers, other developers, systems analysts and sales and marketing professionals
Consult clients and colleagues concerning the maintenance and performance of software systems, with a view to writing or modifying current operating systems
Investigate new technologies
Continually update technical knowledge and skills by attending in-house and external courses, reading manuals and accessing new applications.
Developing and directing software system validation and testing methods.