The iOS Development Learning Curve

The iOS development learning curve

A learning curve will exist for iOS development irrespective of your background. Even if you're a seasoned developer, getting acclimated to XCode and the "Apple way" of doing things takes time and can be frustrating.

Here are a few key factors in determining the learning curve for iOS development...

1) XCode

XCode is the preferred interactive development environment (IDE) for iOS. You will have a tough time developing iOS apps without XCode.

Xcode is both a blessing and a curse. It is a robust IDE with lots of helpful self correcting features but takes YEARS to become fully familiarized with.

2) Apple Developer Program

The Apple developer program requires a lot of "administrative" work on your end. You'll have to familiarize yourself with developer accounts, provisioning profiles, the app approval process, etc.

The Apple Developer program is a necessary evil to iOS development. If you want to publish your apps on the app store you'll need to go through this learning curve on top of learning Swift.

3) Swift

Swift is the new way to develop iOS apps. While you can still use Objective C in todays world, the landscape is quickly shifting towards a Swift world.

Newer versions of Swift support SwiftUI. SwiftUI takes a simplified approach to building user interfaces and has greatly simplified the UI part of iOS development.

Swift (and SwiftUI) is a blessing and a curse. While it can really reduce the amount of time you spend on UI related tasks, it's yet another thing to familiarize yourself with.

How long does it take to learn iOS development?

If you're new to software development, it can take 3-5 years to get to an intermediary level. Starting your programming journey with iOS development isn't the worst place to begin.

If you have experience with other programming languages like Java then you'll already understand things like unit testing, compile steps, build tools, and other things you need to know for software development.

Of course it's always difficult to answer the question of "how long" something will take. It's a combination of your previous experience and thirst for knowledge. Having a background in software engineering will save you at least 2-3 years of headache.

iOS developer vs android developer

Mobile app development is one of the most lucrative fields for developers today. With Android and iOS accounting for over 95% of the mobile market, virtually all mobile developers find themselves choosing between the two platforms for their projects. This article discusses the key comparisons when choosing Android/iOS for your project.

Learning Curve

If you've never done mobile app development, then you'll experience a similar learning curve with both platforms. While iOS has a more established IDE (XCode) than Android (Android Studio), it's still written in Objective C and has an interface builder that takes some getting used to.

Objective C is essentially Apple's version of Java. Both are verbose and object oriented. Like Java, Objective C also relies heavily on boilerplate code and is strongly typed.

If you're coming to mobile app development with a JavaScript background, then it may take some time getting used to the more verbose syntax of both Java and Objective C.

What About Swift?

iOS has introduced Swift, a language written to address the pitfalls of Objective C. It's syntax is much more similar to a dynamically typed language (like JavaScript) and may be easier to start with if you've never written Java, Objective C etc.

Similarities

Even with Swift's less verbose syntax, iOS still shares a similar learning curve with Android. Both share a similar project structure and are MVC like in nature.

This means once you understand the relationships between the views and business logic you'll more easily transition between the two platforms. Similarly, once you get familiar with either Java/Objective C you will have an easier time exploring the other side.

Differences

Swift/Objective C handle null pointer exceptions more elegantly than Java. This means your app won't crash if your code produces a null value. With Java, null pointers will crash your project without clearly revealing their roots. This can slow down development time considerably as errors are harder to track with Java.

Conversely, you are able to catch things like memory leaks earlier with Java's stricter debugging.

View rendering is another key difference. While XCode has a robust interface builder with drag and drop capabilities, Android relies more on XML for layouts and rendering.

If you're familiar with CSS, then this actually isn't too bad. It's just a matter of learning Android's version of things like padding/margin and applying them to your layout 'components'. However once you've experienced the ease of dragging a UI element onto a screen canvas and having all the code prepopulate, it will be tough for you to appreciate Android's XML approach.

.

Revenue Opportunities

Research has shown that, while more people have Android devices than iOS devices, the iOS App store generates around 75% more revenue that Android's Google Play store! This means that iOS users are more willing to pay for apps than Android users.

If you're an independent app developer looking to make good money, iOS may be the platform to hone in on.

Fragmentation

Cross platform development is always important to developers who want their app running on as many devices as possible. With iOs development, your developing for considerably fewer devices than Android.

XCode's interface builder also makes views inherently more responsive than Android. This means it can take more time to make your app responsive for Android than iOS because you have more potential devices running on more potential versions.

App Capabilities

A bi-product of Android's more fragmented environment is it's ability to control the device it's running on. With Android, you can tap into app sharing, launchers etc. While iOS does give you a more performant 'sandboxed' environment, it severely limits your ability to interact with the native technologies of the device.

Sure you can interact with the camera feature etc., but your interaction with other apps / functionality running on the device are severely limited with iOS.

Approval Process

Getting your app into the store is much more painstaking with iOS. First you have to register as a developer which costs $100 annually. This contrasts greatly with Android which only requires an initial $25 fee. Additionally, you have to download certificates and link them with your account to become an 'approved vendor' with iOS.

You submit your builds and they are reviewed between 2-7 days. Sometimes your apps can get rejected with vague reasons and this gets frustrating as you have to repeat the approval process each time you submit a build.

Android is cheaper and less strict in terms of publishing. You submit a few screen shots, pay the fee and your app will appear live in the store a few hours later. It's not the most enjoyable process, but when compared to iOS will seem like a breeze!

Conclusion

Both iOS and Android share similar learning curves but for different reasons. If you've worked with Java before, then getting started with Android will be easier than iOS. If you have more front end experience, then Swift may make iOS a better place to start.

In general, iOS app development is more lucrative from a revenue standpoint but Android allows you to reach a larger audience and faster.

Your thoughts?