I was in middle school in the mid-80’s when I got my first taste of computer programming. Although we were only tasked with writing small programs in BASIC, I was intrigued. Programming satiated both the logical side of my brain and the creative. Despite a strong desire to continue learning, it was the 80’s and I wouldn’t have a personal computer for another 10 years. By then I was fully immersed in another career. As time went on and the decades passed I found myself still longing to write code. I have a passion for learning and after 13 years working in the film/television industry I was bored and unfulfilled, so I started learning web development. Web development was great and all but I still wanted to write programs, so when Apple opened the App Store to give developers a marketplace, I knew this was my time.
When I left my web development job and started studying Objective-C, I discovered that my background in web development was of no help. Somehow I managed to build my first app and get it on the App Store but I didn’t feel I was any closer to truly knowing the language. The syntax and semantics just weren’t clicking for me. In a twist of fate, Apple announced Swift. My first thought was “oh no, I haven’t even mastered Objective-C and now you are coming out with a new language!” In hindsight the shift was a blessing in disguise.
For a while, my Swift journey was anything but swift. Shortly after it was launched I had to go back to work, and finding time to study was hit or miss. I would study in spurts and just when I thought I was making good progress life would pull me away, so when I did manage to get back to it I felt like my knowledge had regressed.
Now that the world has slowed down for the foreseeable future I’m making the most of my unexpected free time and fully committing to mastering iOS development. It’s been a long journey of stops and starts and I’ve learned a few things along the way about what works and what doesn’t.
I began by watching tutorial after tutorial and writing code as the instructor did. After dozens of tutorials I tried my hand at coding my own app idea. Everything was moving along nicely as I built the interface in storyboard and connected the IBOutlets and IBActions to the view controller. But when it came to actually write my own code, I hit an impasse and was like a deer in headlights. Now what? Why could I not remember how to do this? It seemed to make sense when I was following along in the tutorials.
When I came to realize that just following along wasn’t doing the trick to make it stick, I decided that after doing a tutorial I would attempt to recreate the app on my own. When I got stuck I would look to see how it was done and keep building until I could do it fully on my own. Sadly, this trick really didn’t work either because I wound up memorizing what needed to be done for that particular app, but never truly understood WHY it was done that way.
This time around I am taking a different approach. I’m now on my 3rd week of a coding academy and what it has really taught me is the value of follow-through. Because this is a class, I have held myself more accountable to dig in and not give up when I don’t know how to do something. Instead of looking for the answer, I work to figure out why what I’m doing isn’t working. I read through the Apple documentation and Stack Overflow and actually determine what is needed and most importantly why it needs to be done a certain way.
I now realize that understanding the WHY is key. Memorizing how certain things are done is not much help when the scenario changes. If I understand the why, then I can figure out the how. I’ve learned more in the hours (and I mean hours!) spent stuck on a problem than I ever did just following along in a tutorial. I resist the urge to just look up the answer, even after I’ve spent what seems like forever staring blindly at the code. Now, I take a step back and ask myself what am I trying to do, then research how to do that one piece. Instead of being overwhelmed by the whole problem, I break it up in pieces and only when I figure out and truly understand that step, do I move on to the next. I now make sure to understand the WHY.
The best thing you can do is to NOT take the easy way out. You will gain so much more true knowledge and speed up your learning process by taking the time to work through the struggle to figure it out for yourself.