You may ask yourself “How can I start developing apps?” and I can answer.
When people find out that I’m a programmer and that I have an academic background in a completely different area, the most frequent questions they ask me are:
“No way! You went from Pharmacy & Biochemistry to Computer Science?”
“Wow, how did you become a programmer? Where did you get your motivation to learn it from zero?”
“As someone that made a big shift professionally, what are your tips for someone who want to become a software developer?”
Due to the amount of times I have heard questions like these recently, I decided to come back here (after a few months) and answer all of them. After all, maybe I can help, encourage and inspire more people to try learning new stuff as I did.
How it all began
In January 2007 Apple announced the original iPhone. Officially, it was sold and supposed to work only in the United States with AT&T - but people found creative ways to use it in the rest of the World. As a recent Apple fan from the iPod Photo, I was blown away by the revolutionary User Interface the iPhone had back then. Can you remember how smart phones weren’t really smart, difficult to use? With that new almost magical device, browsing the internet with your fingers, the rubber-band effect when scrolling content, multi-touch and other gestures fascinated me.
A year and a half after that, in September 2008, the second generation was launched internationally and arrived to Brazil- I bought the iPhone 3G on the day it was available for sale. It’s very appropriate to say that the first mobile applications store that really worked, the iOS App Store, was launched at the same time. And the revolution of mobile started: there’s an app for that.
Back in the day, there were only a few apps with Jewish content in the App Store - and with very low usability and bad design compared to the platform. So I wanted not only to do something for this relatively small niche, the Jewish world, but also to this even smaller niche - the Jewish community in Brazil. I decided that I would take one of the main books about the core values of Judaism, and make it available in Portuguese in the App Store.
The internet of people
On the first few tries, it was a disaster. First of all, opening an IDE (Integrated Development Environment - for iOS the main one is called Xcode) and seeing all the lines of codes, that didn’t make sense to me, was frightening. I tried changing words here, a few numbers there, and with the help of a very basic tutorial on YouTube, if I had luck the project would compile and I would get the expected result.
I started searching for more professional video tutorials, and I’m so lucky to have discovered Lynda.com - where I learned more basic concepts of programming - both general and specific to iOS. Most of the courses on Objective-C (and now Swift) are done by Simon Allardice - he is extremely didactic, and the price you pay to access the content is really nothing in comparison to what you get. (I’m happy I had the opportunity to meet him and thank him personally for everything I learned from him).
Other alternatives to Lynda.com are Treehouse, RayWenderlich, and CodeSchool.
I can’t ignore the importance of the questions and answers website StackOverflow, where programmers help each other, from the most simple to the most complex questions. I use it extensively up until today - more for learning and understanding things, not for copying and pasting code. (It’s not a surprise you see developers linking to their StackOverflow profile in their CVs, so that even before interviews, people can see how easily they are able to share knowledge with others).
The power of crowd sourcing is amazing. The internet enables new kinds of interactions between people, no matter where they are located and who they are. The distribution of high quality video tutorials for a reasonable price, getting help from experts from another continent for free, amongst other advantages, are a few of the reasons why I love the internet (even though all of us share reasons why we hate the internet - but I’ll leave this for a separate post).
I also did a 2 week programming course (focused on iOS) at iAi in Brazil - and I’m sure you can find a good place wherever you are. If you are in the U.S., I recommend The Big Nerd Ranch - their founder worked at NeXT, the company that was founded by Steve Jobs after he was fired from Apple, and a few years later was acquired by Apple.
Keep the stride
Obviously, the sources I mentioned above are not enough if you want to build professional and industry level apps. The more complicated the products you need to build, the deeper you need to dive in - and that’s where multithreading, networking, data persistency and more areas can get tricky.
Besides experience and getting your hands to build real things, and going to conferences (WWDC, UIKonf, and check here for more), here are a few sources that are part of my everyday learning, that covers more advanced topics:
- NSHipster - Weekly articles of excellent quality (initially by the great Mattt Thompson) written by Nate Cook.
- objc.io - A monthly magazine coordinated by Chris Eidhof, Florian Kugler and Daniel Eggert, from Berlin, covering best practices and advanced techniques for iOS and OS X.
- iOSDevWeekly - a weekly curated list by Dave Werver containing the best content in the iOS community you should be aware of.
Connecting the dots
Who would guess that after studying 5 years of Fisiology, Organic Chemistry, Anatomy, Calculus, Pathology, Analytical Chemistry, I would end up building software. I’m sure that all these disciplines affect positively in my routine and the way I think today. As someone once said:
You can’t connect the dots looking forward; you can only connect them looking backwards.