Programming is a fundamental section of computer science; however, learning and teaching can have serious difficulties. In this paper, we have identified main barriers in programming learning and categorized them in six branches including the nature of programming, teacher and teaching methods, student and learning methods, training packages, Integrated Development Environments (IDEs) and emotional factors. In this essay, opinions of more than 400 computer science students were gathered by means of implementing a web-based system. This paper discusses and analyzes the survey for identifying, distinguishing, and closer consideration on programming educational problems and presents suitable solutions. The survey result is helpful for students, teachers, developing learning tools and IDEs