The article discusses approaches to teaching programming to primary school students. The emphasis is placed on typical difficulties that students experience while learning programming, on the reasons for these difficulties and possible methods for overcoming them. A retrospective of the development of teaching programming in Russian schools is presented, including in comparison with international experience. The place of the initial programming course in the system of educational results of primary education has been determined. Based on the analysis of the works of A. P. Ershov, A. V. Goryachev, E. K. Henner, M. Gujberova, I. Kalaš, S. Grozdev, J. Wing and other specialists, a connection has been established between teaching programming and a broad interpretation of the term "literacy", as well as computational thinking. The results of the authors' research are presented, in particular, the differences identified in the approaches to teaching programming for primary schoolchildren, implemented by primary school teachers and informatics teachers, are discussed. Based on the analysis of scientific and methodological literature, a number of problems that arise during early learning in programming are identified, in particular, such as: "Computer for the sake of the computer ", "Lack of links between the algorithm and the program", "Playing instead of learning". In the course of practical research, the causes and possible ways of overcoming these problems have been established. In addition, in the course of the study, the authors identified and described in this article several types of problems that still require further study: "Click for a click", "Not a reader", "Stupid robot", "Decomposition", "Geometry", "Many the same question