Reebok, baby, you need to try some new things
Have you ever had shoes without shoe strings? - Kanye West
About a year ago a friend of mine had an idea for an app. I eventually got sold on the idea and we jumped into it. "So what language are we gonna use?" I thought for a while "Give me sometime to research and I will get back to you" I said. I was in strong debate with myself, I was thinking of using Phonegap, because I know my web development inside out but I had read about situations where the experience using the app was not as fluid as a natively built one, I thought about Ruby Motion. I know Ruby so how hard can this be, I looked into that and realized I knew nothing about the iOS development environment and even if it was in Ruby I did not know why I needed a LayerController here and a UIController there and everyone I asked said, go understand the architecture of iOS app first before you jump into this. I hated objective-C, not because I have ever used it but the syntax was just alien, I needed to change my mindset to understand it. I did not want to change my mindset of how a variable should be assigned or how a loop should be written.
Why do I have to start from the beginning? I did not want to learn something new and was looking for ways to use what I already knew to solve a new problem. A classic case of "Law of the instrument".
"I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail." - Abraham Maslow
In the midst of my procrastination Swift was released, this was an opportunity, the syntax seemed recognizable, people were hailing it as a modern language, it was backed by Apple and it looked like their future. I read the manual of the language in 2 days, but it still felt like Greek. So how do I make a button? how do I make transitions in the app? In the midst of all the unfamiliarity something felt familiar. I was a newbie again!
As soon as I realized this, things stopped spinning as fast. My realization allowed me to calm down and look at things with fresh eyes, with no expectation or judgment. I was ready to be a pupil again. At this point I got excited and then I got overwhelmed with possibilities. Every new thing I learned opened my eyes to all the potential things I could build, it felt just like when I first learned PHP. Every line of progress opened up a new level of potential. The paradigm for coding UI and logic in Swift reminded me of creating desktop apps with Java in college. It was quite different from what I have been doing on the web for quite sometime... it felt weird.
As I read this very insightful article from a 57 year old programmer called Five Things Old Programmers Should Remember. It reminded me about my initial hesitation to learn Swift last year. In my process of learning Swift I realized that sometimes my rejection of a technology is from fear of failing, at the end of the process I learned that like my first time programming, approaching new things with an open mind and no pre judgment opens me up for the opportunity for success. In the article the author wrote:
Most of the time, tried-and-true is the enemy of innovation. The only real way to move forward is to hold everything you know in suspicion. Only once you try a new way, and test it to know if it is better or worse, should you then decide to do it your way. This creates a filter which favors understanding-by-doing rather than understanding-by-inspection.
Once I was willing to admit I know nothing and push aside the fear of failure. Starting from scratch in something became exciting and every time I learned something new all I saw was another door of possibilities open. Unknowingly I discovered how to reproduce the thrill I experienced learning to code the very first time over and over again.