You’ve Learned More Than You Think

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.

Being impatient, and after finding iOS too difficult for me at the time, I dove straight into Ruby, then into Web Development with Ruby on Rails. I also learned HTML / HAML, CSS / SASS, JavaScript / CoffeeScript, and some Backbone.js along the way. But I haven’t really thought much about Java or even some Objective-C concepts I already learned when I tried out the first lecture of Stanford’s CS193P course for iPhone Application Development and quit because I didn’t think I could do it.

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.

Enjoy the article? Join over 20,000+ Swift developers and enthusiasts who get my weekly updates.

  • markphd

    In job interviews, when asked about education background, do you tell them you finished an open course (StanfordCS106A/B)? Are there any pros/cons? Also, how about in writing CV, is it safe to include it as well?

    Huge thanks for your blog. I am learning a lot! 😀

    • To be honest, I haven’t really been asked about my education background. That’s the nice thing about being a programmer, it’s about what you can do, not where / if you went to school. Programming interviews usually consist of take-home or in-office programming sessions. They want to see you write and explain your code.

      I don’t have the Stanford CS106A course on my resume, but I do have the answers on my Github. Resume’s are not as big in programming either. Some companies require them, but most just look at your LinkedIn and especially Github pages. Again, you can put it on your resume, but the most important thing is to be able to write code well and show it off on your Github.

      • Saamir

        Hey Natasha

        I have read your book and would definitely recommend it to other beginners like me. Following your footsteps, I have also started the stanford course. However, my main focus is on learning ruby as I plan to join dev Bootcamp or a similar code school in future. Will it help me if I just do the course not mainly to learn java but grasp the programming fundamentals? The stanford course instructor is legendary !
        Also, please do let us know how did you deal with learning database concepts ? Should I learn SQL on the side ?


        • Hi Saamir,

          Yes, I did CS106A to learn basic programming concepts, and it really helped. Ruby will be super easy after Java! I’m also really happy I took the course, because it made Objective-C (for iPhone development) a lot easier to learn. Now, I’m considering going back to learn some C (CS106A) so I can be even better at iPhone programming.

          Fro databases, don’t worry about it too much. It’s going to be super easy compared to everything else you need to learn, so you’ll be able to pick it up easily at Dev Bootcamp. Rails also abstracts a lot of the database stuff for you, so you don’t even need to use SQL most of the time (you use a much easier human-readable language).

          If you need more things to learn in addition to CS106A, Ruby and Rails, learn the front-end => HTML / CSS / JavaScript.