I am a big fan of live coding as a pedagogical technique to teach programming. As I note in my book (HTTCS available here) the evidence for effectiveness of live coding is clear:
Live-coding is an approach to teaching programming by writing actual code during class as part of the lectures. In a live-coding session, the instructor thinks aloud while writing code and the students are able to understand the process of programming by observing the thought processes of the instructor. […] We found that live-coding (1) makes the process of programming easy to understand for novice programmers, (2) helps students learn the process of debugging, and (3) exposes students to good programming practices.
Raj, Patel et al, Role of Live-coding in Learning Introductory Programming: link
On my YouTube channel I have now uploaded a live coding lesson I recorded recently. I talk through my thought processes as I solve a programming problem I composed. The problem itself and many others are available in a booklet I created for teaching skills needed to tackle the Non-Examined Assessment (NEA) in the 2016 GCSE spec. Although the NEA is no longer required, practical programming experience is still vital, so I still use these exercises with my classes.
In the video you can see and hear me narrate my thought processes as I solve the problem. I also demonstrate “call before write” coding, where I write a call to a subroutine, before later writing the actual subroutine. This matches my thought processes, and fits with the idea of decomposition, and solving a problem from the top down, focusing on the highest level of abstraction first, and filling in details later.