Programming skills are an increasingly desirable asset across disciplines; however, learning to program continues to be dicult for many students. To improve pedagogy, we need to beer understand the concepts that students nd dicult and which have the biggest impact on their learning. reshold-concept theory provides a potential lens on student learning, focusing on concepts that are troublesome and transformative. However, there is still a lack of consensus as to what the most relevant threshold concepts in programming are. e challenges involved are related to concept granularity and to evidencing some of the properties expected of threshold concepts. In this paper, we report on a qualitative study aiming to address some of these concerns. e study involved focus groups with undergraduate students of dierent year groups as well as professional soware developers so as to gain insights into how perspectives on concepts change over time. Four concepts emerged from the data, where the majority of participants agreed on their troublesome nature-including abstract classes and data structures. Some of these concepts are considered transformative, too, but the evidence base is weaker. However, even though these concepts may not be considered transformative in the 'big' sense of threshold concept theory, we argue the 'so' transformative eect of such concepts means they can provide important guidance for pedagogy and the design of programming courses. Further analysis of the data identied additional concepts that may hinder rather than help the learning of these threshold concepts, which we have called 'accidental complexities'. We conclude the paper with a critique of the use of threshold concepts as a lens for studying students' learning of programming.