I’ve mentioned Scratch as a way to introduce children to programming, but it works just as well, maybe even more so, as a way of introducing teenagers and adults to programming! Don’t take it from me though, take it from Harvard’s CS50, by David J. Malan (who is fantastic in these lectures btw), which has adopted Scratch (it moves on to C and other languages and tools), to help students make some connections early on.
YouTube: “CS50 / Week 0: Friday”:
Harvard: CS50.tv
Academic Earth: “Introduction to Computer Science I”