The Best Way to Learn

January 4, 2013

I learned a lot of new things in 2012 and I wanted to share some of the methods I use whenever I come across something new to me. I’m going to use learning a new programming language as an example, but this applicable to anything really, like learning to speak a new language or learning how to cook.

Last year one of the new things that I learned how to do was learn how to make iOS applications. This is something that I wanted to do for a long time, but have put it off for years. One of my hiccups for awhile is that I didn’t have a mac that I could develop on. That changed last January, but I still put off learning ios Apps for 9 months.

I started off watching videos from Team Treehouse. I got off to a quick start, but I quickly became overwhelmed. I got a point where I was only watching the videos and not working through the examples and this just made me feel even more overwhelmed. There was a lot of new vocabulary to take in and just watching the videos wasn’t cutting it.

After stopping for a few days so that I could continue to sulk and doubt my ability, I finally decided to purchase a book that I heard about awhile ago. It’s called iOS Programming: The Big Nerd Ranch Guide. They also have a book for learning just objective-c that has almost nothing to do with iOS programming and the iOS programming book contains a chapter introducing the objective-c programming language which I found it covered more than enough to start out making most apps. This book helped me out tremendously and filled in a lot of gaps left open from the team treehouse videos. I definitely think having two solid resources to learn from sped up the learning process greatly.

I worked through more than half of the nerd ranch book, but I got to a point where I was getting sick of working through their examples and I was building up enough confidence where I thought could tackle a project of my own. You are definitely going to have to work through a lot of examples to get over the initial learning curve and start putting all the pieces of the puzzle together. There comes a point that is very critical, but I think few people reach, it is when you get just enough pieces of the puzzle that you can venture out on your own and not clench to the examples any more.

This point came to me about half way through reading the Big Nerd Ranch book and I decided to start building my own app. It was just a simple app that would have two UITableViews and a UIWebView for displaying some html documents. Even though this app was super simple, I struggled a lot. I think I started it over 4 or 5 times. It got to a point where the examples I was reading from didn’t help me anymore because I was trying to do something that wasn’t in my book. This is where you want to be. Even though its super frustrating and you want to throw your computer across the room because you’ve tried everything, but still can’t get it to work. I know it sounds crazy that is is a point in the learning process that you want to be, but trust me, in this phase all the little pieces just start stitching themselves together and as soon as you finally figure out what you’ve been struggling with you get that “ah ha” moment and then truly understand everything you’ve been doing up to this point.

My first app is called LDS Archive and you can see a video demo of it below:

Even though I still continued to struggle as I finished my first app the rest of it was much easier to figure out now that I finally “got it”. Once I finished my app, I went back to my trusty book and started slogging through more examples. I’ll admit this isn’t always fun, but it does help. Maybe out of my boredom copying examples out of a book I got the idea to work on my second iOS app. This time I was going to make a game! This game uses only a single view, so this was a great app to cut my teeth on really learning objective-c and not just the cocoa touch framework.

And here is a video demo of my 2nd app: Brick Smasher

By the time I finished my 2nd app I was feeling pretty confident, and breezed through the rest of my book. And once you finished your book you come to a critical point where it’s time to let go of your crutch and start charting off on your own. This is when the idea for Toast came in to play. Toast would quickly become my third iOS application and was created to make “before and after” photos look amazing. There are a ton of before and after photos floating around the internet, but most of them look horrible and I can tell that people just need some help and a simple solution to merge two photos together and add some text. This is what Toast does very well. You can either choose to a picture from your photo library or take a picture right from the app, do this again with your after photo, add some custom text to describe you photo and press save to have it go directly into your photo library on your phone. It’s really that simple.

Toast still isn’t finished, but the basic functionality is there. I’ll be honest, I’m still struggling to figure some things out, but I know this is a natural part of the learning process and necessary for me to continue to progress as a programmer. I hope to submit it to the app store soon and hopefully it will help cover my $99 a year apple developer fee.

I just wanted to write this post to let you know it’s very important to let go of your trusted books and tutorials and try to make something you can call your own. It’s going to be very painful, and you are going to feel like you aren’t making any progress, but going through this struggling stage will help you take leaps and bounds and make everything you’ve done seem so easy once you get to that “ah ha” moment.

Go build something. And stay with it.