I’ve been developing mobile apps for the Android and iOS platforms for several years now. I have used both Telerik Platform (now retired) and Xamarin Forms. Both of these are excellent development platforms. Most recently, I have been developing apps using Xamarin Forms. Most of the code for the app in a Xamarin Forms app is contained within a single, shared project. This code is shared between both the Android and iOS apps. When you require platform specific behaviour, you place this code in the Android or iOS specific project as required.
During the development of the latest app, we have hit several issues as you would expect. Some small, some not so small. Androiddevelopment is pretty painless, intuitive, conforms to well defined best practices and standards. We have hit a few snags with Android, but these have been relatively small and easy to fix.
Apple however is a whole different can of worms. Nothing they do seems to conform to any well defined standard or best practice. They have this habit of almost deliberately ignoring the well defined and understood patterns and practices from other development platforms, and doing it “their way”. It’s fair to say that the “Apple way” is usually vastly more time consuming, complicated and error prone. The Apple motto seems to be the total inverse of Occam’s razor.
When given two or more ways of solving a problem, always choose the worst option.
From provisioning profiles and certificates to asset catalogues (I have never encountered a worse way of storing images than this), the “Apple way” is never simple, straight-forward or intuitive.
Nearly every issue or bug we have encounterted has been with the iOS version of the app (on both Telerik Platform and Xamarin Forms). The Apple platform just doesn’t seem as robust as Android (which just works).
I am assuming that the majority of Apple developers don’t get much exposure to other development environments, and probably build mainly Apple apps. They therefore never get to experience how things “should” be. If you only know the “Apple way” of doing things, then you have nothing else for comparison.
I have worked within development for approaching 20 years now, and in that time have used pretty much every platform, tool and technology at some point. I therefore have a broad knowledge of what is considered “best practice” by my exposure to the huge number of technologies over the years. I know what works, and how things ought to work. I can spot efficiency, good design, simplicity and elegance from afar.
This is why I am of the opinion that the Apple way just sucks. Doing something differently merely for the sake of it is not innovative. There are very good reasons why certain ideas become best practice within the development field. It’s because they work. And not just work, but are well understood and accepted by those working within the industry. They have been put to the test, and been successful.
In all my years as a professional software developer, engineer and architect, I can honestly say that I have never come across a development platform as poor as that provided by Apple. If you genuinely think Apple make great development products, then I’d suggest having a look at how everyone else builds their development tools. Microsoft and Google for example build excellent development tools, and they employ industry best practices and standards in their processes and workflows.
Unfortunately, while Apple remains a player in the mobile app space, developers such as myself will just have to put up with the “Apple way” of doing things. I think Apple would do well to take a look around at the other players in their industry and take some inspiration from them. Until they do, they will continue to frustrate developers who find the “Apple way” cumbersome, time consuming and inefficient.