The past few months have been very interesting. Using a variety of online tools and offline workshops, I’ve taught myself a lot of mobile programming on the iOS side. I’ve become much more comfortable with OOP (Object Orientated Programming), and all the basic concepts of programming. I’ve also dipped my toes in data structures and algorithms, and they continue to fascinate. The languages themselves have been very charming. Objective-C is not the usual beginner’s language of preference, but nevertheless, I have become much more familiar with its frameworks and nuances, including its very verbose syntax.
I have also come to appreciate Swift, which Apple continues to iterate on, creating the need to constantly be informed on framework changes. It is a language that tries to combine features of many other languages, and has also removed the infamous semicolon from its syntax. Overall, it is easier and friendly to read, and less intimidating than the square bracket notations of Objective-C.
Apart from growing as a programmer, I have also observed several glaring flaws in the pursuit of self-study. It is considerably slower. At first, that statement seems like a paradox, because there has never been a better time to pick up programming by one’s self, especially with the endless amounts of online resources at one’s disposal. However, the hard parts begin to show themselves as one is left with open holes in their knowledge. Certain concepts cannot be explained easily, and need to be experienced in a hands-on environment with other people. Pair programming and group projects are not only vital to learning code, they are mandatory if one aspires to grow rapidly in their coding abilities. I will expand on this in a later post.
Pair programming and group projects are not only vital to learning code, they are mandatory if one aspires to grow rapidly in their coding abilities.
Another problem with self-study is a lack of direction in a sea of endless learning materials. It is very easy to hit a wall, and without some kind of mentoring or direction, the learning process stalls and takes a considerable amount of time to progress. During that period of stagnation, one can become disillusioned, and ultimately give up all the hard work that had been acquired. This has happened to countless people who have attempted to code. It has happened to me as well. In fact, this period of hopelessness is probably one that every coder has experienced as they were learning. Many have quit entirely because of it.
About three months in, I hit a wall. The overwhelming syntax and frameworks of Objective-C, combined with third party Cocoa Pods and various other concepts, almost defeated me. I was trying to learn it all at once, and as a result – the syntax confusion blocked my comprehension of far more important topics such as OOP, MVC, DRY, and the manipulation of strings, arrays, and dictionaries. Sure, I could follow a video, but at the end of the day – I still didn’t know the why of the thinking process. It was painful because all I wanted to do was code. I wanted to code all day, but the loss of direction and confusion had me at the edge of the plank. I stopped blogging, and became very discouraged. In the middle of it all, I took a long hiatus from coding.
Thankfully, I decided to press on. Even though I lost a good amount of time, it was all due to a lack of direction, and I’ve chalked it up to a good learning experience. As time passed, the concepts slowly solidified in my head. Relationships between objects, properties, protocols, and methods started to make more sense – and the tutorial videos became a breeze. I found myself nodding to the instructor, fully understanding why every line of code that was written had to be written. Frameworks, both native and third party, became much easier to learn and comprehend.
It was one of those “light bulb” moments. Pure bliss. However, the journey towards this growth was very inefficient.
I wished that I had had some coding partners, and some form of structured curriculum. That is why I have decided to apply to a real bootcamp. More on this next time!