Welcome to my blog about coding! My name is Justin Gazlay. I have found that programming is like a never ending journey. There is always more to learn and try. The technology we use is constantly changing, as are the expectations of those who will be using the programs we write. In order to be successful you need the drive to always want to learn and improve. Failure is a given. But each failure is an opportunity to learn, improve and continue on our journey. Here is the story of how my journey began…
In 2011 I turned my aspirations toward making an app for my iPhone. I had picked up the syntax for laying out websites fairly quickly and thought it would be a similar experience writing apps. For my first project I wanted to create a Poker Tournament Timer. In hindsight, surprisingly, I made a smart realization that I couldn’t just jump into a full-scale application. So, I decided the first thing I would do is figure out how to create a countdown timer.
Hello Objective-C & Object Oriented Programming. I started my learning by reading some of Apple’s Objective-C documentation. I can’t begin to tell you how much of this was over my head and out of my league. All of a sudden I am supposed to be creating Classes that are the blueprints of objects who have properties and methods; some of which are public, some of which are private. I have to properly make sure I am allocating memory for these Classes when they are created and deallocate memory when I no longer need them. WTF! How could anyone possibly ever understand and correctly do all of these things? Not only that, but I have to make sure that my model is separate from my view; both of which are linked together with a controller.
I was very confused and bit off way more than I could chew. Take a look at this forum post for some frightening insight into my confusion. Clearly, I didn’t understand what I was doing. I honestly can’t remember if I ever got that “decoupled” timer working correctly, but I do remember working on it for hours and hours and trying all different sorts of things /*to add to my confusion, my first daughter was born in September 2011 so sleep deprivation may have been a contributing factor*/ Of course the problem is, I had no grasp of the basics of how Objected Oriented Programming works. Everything I was reading had no foundation to be built upon. Apple has some good documentation but it is not written to teach you how to program; it is written to document their API. Not only that, but at this time Apple was introducing ARC. I had no grasp of memory management concepts and trying to learn during this transition only amplified my confusion.
But, this is not a story about how programming was too hard and confusing and changing too quickly while I was trying to learn that I just gave up. The challenge actually energized me. I love to learn; the more I learned, the more I realized I didn’t understand, which invigorated me all the more. Learning the basics of programming through creating an iPhone app may not have been the best idea- there was simply too much input for me to parse.
So I looked for some basic computer programming resources online. One of the most helpful ones was Stanford’s free courses on iTunes U. Yes, the video quality is horrendous and even in 2012 they were already several years old, but the content is fantastic! If you have little to no experience and are looking to learn I cannot recommend them enough.
Learning in an organized, sequential way is so much more efficient than random Google searches and reading framework documentation. At first I was resistant to having to “learn” another language (Stanford’s introductory courses are taught in Java). /*As if I had some mastery of Objective-C already*/ But I quickly realized the concepts transcend any particular language. The understanding of primitives, data structures and design patterns can be applied in any language.
Fast forward to today. Hundreds of hours of study and 2 kids wealthier /*or 2 kids more sleep deprived */. My focus is still developing iOS applications and my circuitous route has been a fun journey. This weekend my first app was accepted to the App Store and it is written entirely in Swift /* a great example of why it is important to not be too attached to any particular language */. Not a Poker Tournament App, although I still have ambitions of building one–maybe my next project. Quoties is an app built especially for my wife and other moms like her. She wanted an app where she could easily collect, search and find all of the strange, hilarious, quippy, and heartbreaking things our kids say everyday. It is a simple app, but it meets a real need we have heard from numerous parents over the years. “My notes is overflowing with the things they say and it is so hard to organize them.” I hope it is a useful tool for them.
After almost 5 years of working on this programming thing, I have learned so much and have come so far; yet I know there is so much more to learn and discover. Still, today, I think it is so cool that I can start with a “blank” file in Xcode and by simply writing, create a useful program. This blog is the place I will be documenting my future programming journey and probably continuing to revisit some of my journey so far. For me it will be a useful repository of things I have learned and am still learning. I hope it can also help you in your journey- or at least provide you with encouragement to continue to push yourself and learn new things when it gets difficult. Please let me know what you think and if you find any errors I am making, so we can all get better together. And share your journey – I would love to hear about it!