I am starting iOS dev. And so are you.


Enough of Samsung Galaxy S4 padding problems, special LG menu inflating errors. Enough of this.

After almost 4 years of daily Android development I decided to switch over to iOS platform. Obviously, there are couple of good reasons for that. Let me list it for you:

  • Android freezes. A lot. (not all distributions on all devices, but mostly.. it freezes. A lot.) Experience with system and with your app is generally speaking better on iOS devices these days. You don’t want to spend your time creating cho — oop-y things, do you?
  • Development for Android powered devices usually ends up linking bazillion support libraries that ports this so-called “user experience” of new system over old and slower devices. Which reminds me one of these— it should look good, but usually it even doesn’t work at all (not mentioning DEX and 64k method calls restriction). You have to support history, because this platform moves forward just damn too slow.
  • Android has back button that no one can use properly (you think I am crazy, but trust me, there are 57 million confused users that don’t know how to navigate in back-stack of app the right way)
  • You can do too much. And too much is equally bad as too little. You can/have to manage almost everything (a.k.a you can make a mess of almost everything — loading data on background as a mad man, getting expensive system and process operation user won’t probably need, but your state-of-art code needs for some (also mad) reason). App is getting more complex, customer is getting wild and user ends up configuring more. No.
  • Java — frankly speaking, I’m no big language nerd, but many times when sorting (ex. Java / Swift) or searching things in array, I’m just wondering why there is so much code around so simple thing (and yes, you might add Guava with 30k of method callings or switch to Kotlin — my colleague Tomáš will be giving a nice speach about it at mDevCamp next weekend). Java is old. Time to move on.
  • Plus I use iPhone as my personal phone (maybe that’s the main reason for me)

Typical face of overconfigured user.

In other words, starting this week I will dive into iOS projects (thanks to support of my colleagues and company). This obviously means a lot of WTF moments, so I decided to collect them and write down things you will be facing as well when.

Expectations? Not THAT high

The one and only thing I really expect from transition is making development more specific and easy — solving problems directly without having to write a lot of boilerplate code (bye fragments, device rotation madness, custom font in system etc.).
That is pretty much it.

There will be blood

There are some tools on Android, you just can’t find these days working on Apple. For example building system like Gradle allowing you manage project dependencies and build profiles from one json file, or Android Studio IDE that is miles (or light years? not sure) ahead of XCode (psst, I will try to pass this one with AppCode that is based on same intelligent engine of all JetBrains’ products). Also many emotions will be sacrificed to designing project with autolayout and size-classes, but at the end of the day:

More reality coming soon!