How is your teaching affected by how you learned?
Basically, you have to throw away your preconceptions and develop and refine new intuitions based on your teaching experience and your students' backgrounds.

When I started off teaching I was severely limited by an expectation that I'd be teaching students much like myself - students who enjoyed math and abstract problem-solving, and who had some kind of background or at least prior interest in programming (I started off at age 10 in BASIC on my Commodore 64).  When that wasn't the case I found myself in a bit of trouble.

The way I teach now involves collecting and analyzing student data to find out what their challenges are and experimenting with different ways to help them overcome those challenges, and also what their interests are and how I can change the course to cater more to those interests.  I collect feedback in the form of quizzes and projects but also I just ask the students what was easy for them and what was difficult, what they liked and what they didn't like, and then the next year I modify the course slightly to take all of this feedback into account.

Over time, the course gets better.  I find ways to work around the most difficult material until the students are both conceptually ready for it and confident enough in their programming abilities to actually attempt it and not give up right away when they hit their first bump.  I find ways to include more things of the type that students like and find fun and interesting, even if I personally don't find those things fun or interesting at all.  Programming is so big and flexible that there are usually numerous ways into a problem, and luckily I get to make my own curriculum so I am free to explore all of those ways.

For one example, I've found that my students find variable manipulation and iteration monstrously difficult but have no problem with event-driven programming.  I've therefore had more success when starting students off with simple event-driven projects (like, make a browser-based multiple choice quiz in JavaScript) than with the kinds of math challenges (calculate the nth Fibonacci number) that I enjoyed as a student.  I personally find math problems easier and more rewarding than messy UI stuff and JS DOM manipulation, but the kids seem to really enjoy making a nicely decorated quiz to show off to their friends.  Also, most of my kids hate and fear math, which I find sad but have very little influence over.  I later try to work in simple variable manipulation and iteration by building on students' already successful projects once I have their interest and confidence.

So as a general strategy: Try to vary the order in which concepts are introduced and see if one order works better than another.  Try to identify the conceptual building blocks that students who fail to learn the concepts are lacking, and try to find ways to teach those building blocks - or put off teaching more difficult concepts until students have more confidence and problem-solving experience.  Try to give students projects that both motivate them and teach concepts and skills that you want them to learn.  When in doubt, simpler but more feasible and authentic projects are often better than more rigorous/complex projects that students may not even complete or will complete and then never look at again.  You'll know you're successful when students tell you something like "I made a quiz to teach my little sister the 50 state capitals".