Yesterday I went to a Introduction to iOS/Objective-C class. I was one of maybe two or three girls in a room full of male developers, male college students, and a few slightly confused male startup founders. Oh and an amazing older taxi driver uncle sitting next to me who managed to follow most of what the guy was saying, probably better than me. Mostly. Well, some of it. Or actually I'm not sure how much of it, actually he was tiling the background of his app with a picture of a shiny sports car. It was awesome! But hang on, what were we supposed to be doing again?
I myself could scarcely follow what on earth the instructor was saying, despite actually having a go at documenting the steps taught to us during the class. I guess the problem was that, having taught Actionscript before, as I sat through the class, I found myself thinking of all the ways I felt he was telling his students about small, irrelevant things that would raise many more questions rather than allowing the students to follow through the delivered lesson with a broader and more meaningful understanding. I don't think I like programming lectures - I didn't learn Actionscript by listening to a lecture, I learnt it by having a desire to build very specific projects and to acquire the practical skills to build them on my own, and then trying and failing and trying until it got built. I would never say that I'm particularly strong at programming, but on the other hand, being a great, experienced programmer also does not necessarily translate to being able to teach or explain programming to other people...
I often wonder, why aren't there more approachable and accessible programming classes in schools? How do we get people here to spend a bit more effort and time thinking about what constitutes good programming pedagogy? I think learning programming is a practical and essential skill. Its like how if one has to eat meat, then one needs to face up to the fact that an animal has to be killed in order for you to eat it, and maybe the next logical step is to actually get involved with seeing how animals are slaughtered for meat. Similarly, if one has to use mobile devices or computers or the Internet on a daily basis, then one should at least have some idea of how all these things are put together!
So I went home and had a far better time following these excellent online guides from Apple's Developer site on my own (I highly recommend them and they're free):
Start Developing iOS Apps Today: A road map
Creating your first iOS app (Introduction to Xcode and iOS design pattern fundamentals)
Creating your second iOS app (How to use Storyboards)
Creating your third iOS app (iCloud document storage APIs)