1. Work with developers to design algorithms and flowcharts
2. Produce clean, efficient code based on specifications
3. Integrate software components and third-party programs
4. Verify and deploy programs and systems
5. Troubleshoot, debug and upgrade existing software
6. Gather and evaluate user feedback
7. Recommend and execute improvements
8. Create technical documentation for reference and reporting