Producing clean, efficient code based on specifications · Testing and deploying programs and systems.Software programming, testing software at various phases of completion, laying out software design, building models or diagrams to communicate the end goal and mapping out future software upgrades.