Recently I was working with a group of professors who were rethinking the programming curriculum for Japanese computer science students. They knew what they wanted their students to learn, but they struggled in knowing just how to accomplish the skill instruction. I understood their problem, but only minimally. They should have recommended Weinberg's book because it really captures the tensions that are played out for teachers, students involved with programming, and it would have helped me make more informed colleague. As one interested in education and designing learning environments, I learned a whole lot about the complexity of studying/developing programming and programmers, and Weinberg increased my empathy for my computer science colleagues and their students. This book gives a view from a experienced programmer and instructor and depicts the challenges that programmers face. Chapter 12 on the principles for programming language design would have been helpful for our group; and this book covers many other related areas like group work, the variation of challenges, problem solving, instruction and more. Weinberg's great contribution however, is to highlight how the human factors such as personality and intelligence influence how programmers go about their tasks. I was turned on to this book through Gause and Weinberg's other book, "Are you lights on!" Both books are highly recommended. I have come to understand my programming friends a whole lot more because of reading this book, and am able to be more sensitive to my colleagues and engineering students are struggling with master this skill. When programming instructors, friends or students have bad days writing code, or keeping their sanity, I can suspend judgment, knowing a bit more of the problems he/she is working with. I recommend it for these reasons.