makes a huge difference. My first comp sci teacher in high school was great. Even as he was teaching us the basics, he gave us very open-ended assignments that encouraged creativity. We were programming Pascal in DOS (and I've dated myself). The last topic he introduced in the first year was the Turbo Pascal graphics unit. Our last major project was to "write a program using the graphics unit." We could literally do anything. Some of the less advanced people just drew pictures on the screen. Others did a choose your adventure-style game. One other kid in the class and I had a friendly competition going to see who could make the better project and we were constantly eyeing the progress of the other and trying to one-up each other. I ended up making a game with some rudimentary physics where you could jump around and shoot at a bad guy. It was a blast, to say the least and I have been hooked on programming ever since.
Unfortunately, my teacher retired at the end of that year, and we brought in a new comp sci teacher. This new guy was very much into teaching to the AP test and took off points if our output deviated slightly from what each each assignment prescribed. I can't imagine that there were many enthusiastic programmers that came out of that environment.