Design and develop software.
Test software applications and systems.
Develop different types of software, including computer games, business applications, operating systems, network control systems, and middleware.
Apply knowledge of computing systems and software structure.
Analyze users' needs.
Create flowcharts, diagrams, and other documentation.
Create manuals and detailed sets of instructions including algorithms that tell computers what to do.