Agent-Based Assistance and Collaboration for Remote Software Programming Activities