When I first started developing for iOS, I often asked myself, “How can I quickly become an efficient iOS developer?” I did some research online and asked several engineers I met in school. Yet, I never received or found an answer I was satisfied with. Now I know this is a hard question to answer because each person has his or her own way of learning code. However, I do believe there are some common ways for beginners to learn iOS development.
iOS Developer Library + Stack Overflow This combination of tools and community is fast and reasonable. For example, let’s say I want to set a click action for each row in UITableview. First I would search Stack Overflow and would find that several people mention the method didSelectRowAtIndexPath. To make sure this is the right method, I would then go to the iOS Developer Library to verify the information from Stack Overflow or to see if there’s another method. Stack Overflow offers most of the answers you need when starting out, but as all answers are offered by other users, the solution may not be the best option or it’s just raw material which needs more work. The iOS Developer Library plays its role by validating that the solution is correct. In the official documents that Apple provides, you can get all the details and may find a better solution based on what you want your detailed action to do.
Useful Tools for Combining The iOS Developer Library and Stack Overflow
Alfred is a tool that allows you to open any application on a Mac.
Dash is a useful documentation browser. Dash also saves time by eliminating the need to go to websites to look for APIs.
GitHub is the mother of all tools. Before I came to ChaiOne, I didn’t know how powerful GitHub was. After spending some time with the tool, I started finding new ways to use all of the code stored there. GitHub has a ton of information that everyone can access and use. You can look up other developers’ code, which is a good way for beginners to learn and think about coding. GitHub broadens your ideas and helps correct some bad habits you may have developed in your code.
Moreover, you can use several GitHub projects within your actual project. This may save time because you may find that an open source solution is better than your current solution. GitHub also gives you the opportunity to show your code to others and gain feedback. Overall, GitHub can help you find lots of things you may want or use, and I am still discovering all the different feature and possibilities.
Here are some useful GitHub projects I’ve found:
- AFNetwork A tool that helps you communicate between a server and client.
- CocoaPods The Objective-C library dependency manager.
- MMDrawerController A lightweight, easy to use, Side Drawer Navigation Controller.
- SVProgressHUD A fancy and useful customized progress view.
- PKRevealController A delightful view controller container for iOS, enabling you to present multiple controllers on top of one another. It is easy to setup and highly flexible.
- Appirator A utility that reminds your iPhone app users to review the app.
- QuickDialog A quick way to build a complicated table.
- DCIntrospect A small library of visual debugging tools for iOS.Working on Real Projects with Experienced Engineers If you want to learn quickly, learn the basics then find an internship similar to mine. Working with experienced engineers will accelerate your learning exponentially.
You can observe:
- How they accomplish tasks.
- What tools they use for development.
- How they analyze the problem and find a solution.
- How they improve their code.
- How they make themselves more efficient.
I learned a lot from my mentor and the other engineers during my internship. When I had a question, ChaiOne’s engineers would help me find the answer by taking into account different scenarios. Initially, my answer would probably just solve the problem without taking into account other considerations. Because of their experience, the thought process is more comprehensive, and they consider some issues that might come back to bite me in the butt. During development, I now recognize how important it is for developers to consider future use. Thinking about things this way makes the work easier. But it is hard to describe how to get to that point because you need experience and need to learn from mistakes. The fail fast becomes very useful in learning.
Book & Online Courses on iOS
Books and courses usually take time. They are, however, quite good because they tell you the whole story about one thing and make sure you understand everything. Stanford University publishes a online course called CS 193P iPhone Application Development. You can find all the class videos and documents on iTunes U. I watched several videos and they are clear and easy to learn from. Plan to spend 1.5 hours for one class, so if you don’t have that much time, it is not a efficient way. Books work the same way, as they will tell you how the story comes up, how it develops and how it ends.
In the end though the best way to learn iOS development, like anything else, is to get your hands dirty. You’ll make mistakes early on (I did) but you’ll accelerate your learning. So go grab one of the tools I mentioned, dive in headfirst and get dirty.
This Post is by Jerry Wang, a Summer 2013 development intern at the Enterprise Mobility Agency, ChaiOne.