I first learned the basics of programming via the Stanford CS106A course, all in Java. I knew I wanted to learn more practical languages like Ruby on Rails or iOS in the long run, but the Stanford CS106A course resonated most with my learning style, so I just kept going with it, even though, until this date, I’ve never professionally programmed in Java.
After I completed the CS106A, I started the Stanford CS106B course for a day, which is in C++. I remember in the very first lecture, the professor mentioned that when you first start learning to program, it’s important to be exposed to many languages. That is why Stanford students in the CS track had to switch from Java, which they learned in the first semester, to C++ in the second semester.
Now, I feel like I’m back in the beginning again. I’m going all in on learning iPhone Application Development, but this time with the help of Mobile Makers and almost two years of programming experience (wow, time flies fast!). However, as I’ve been preparing for Mobile Makers in the past few weeks by learning Objective-C and iOS development on my own, I’ve noticed something pleasantly surprising: a lot of concepts that I’ve learned and didn’t understand at the time now make complete sense and are helping me learn new material!
Somehow, even though I didn’t think I understood some of these concepts at the time and was frustrated enough over it to quit, my mind has kept them and at some point, as I’ve been learning other languages and talking to other developers and reading developer articles, it got worked out without me noticing.
When I was learning Python for a few weeks, I tried out Zed Shaw’s Learn Python The Hard Way and absolutely hated it! I’m really not a fan of re-typing whatever he says without understanding much about why I’m typing it. However, as I’m now realizing, there is definitely value in going through the mechanical movements of re-typing something you don’t understand at the time. You will later.
So now, if I don’t understand something completely as I’m going through the iOS Big Nerd Ranch Book, I just keep reading and typing out the code. I know my brain will use that information later to make me understand.