Text this: Identifying Key Challenges in Teaching Programming and Proposed Solutions