When I was in high school I didn't really know what I wanted to do. I just knew that I enjoyed math and science quite a bit more than the average Joe. That is until I went to a Summer Ventures in Math and Science (SVMS). There I took a rudimentary programming course that used python. That class was really the first time I was introduced to programming and while I wasn't exactly the rock star student of the class I definitely found something I enjoyed. From then on I knew I wanted to spend my life trying to improve the world one bit at a time.
As far as changing the perception of computer science being an unlearnable subject I think a key is to expose people to it before its too late. For me at least, as soon as I had that experience I knew that I liked it. If I had never experience programming until college I would probably be a mechanical engineer or something similar and we all know Fortran probably wouldn't have sold me on the whole computer science gig. All that is to say that just like most things the first step towards tearing down a wall is to first realize that its just a wall not an immovable, insurmountable obstacle. By utilizing our outreach to show students that they can do the basics of computer science the ones that enjoy what they have been shown will go on by themselves to become a member of the next generation of computer scientists. That is what is most important, quality is not the most important factor in evaluating the successfulness of an outreach but the quality of individuals that the outreach brings in. 1000s programmers are not as good as 1 that can do the work of 1000.