Android vs iOS
Nem melhor, nem pior. Apenas diferentes.
Comecei a programar para iOS lá pelos idos de 2011. Peguei o fim do iOS 4 e a transição para o iOS 5 e toda aquela moda de skeumorfismo que existia na época. De lá pra cá o iOS ficou flat e o Android ficou material. Mas não é apenas o design que diferencia as duas plataformas, mas todo um conjunto de coisas que, a meu ver, levam a duas plataformas equivalentes em termos de funcionalidades mas completamente diferentes em termos de experiência.
Na minha opinião quem desenvolve para ambas as plataformas tem de se atentar ao fato de que são duas plataformas completamente diferentes: Android nasceu de um kernel linux modificado; iOS nasceu de um kernel BSD modificado. Linux não é unix. E unix não é linux. São sistemas completamente diferentes, apesar das inúmeras semelhanças.
Outro ponto importante é a tecnologia sobre a qual ambos os sistemas são construídos: são completamente diferentes. Desde o touchscreen da Apple até o NFC dos devices Android, tudo é diferente. A Apple, por exemplo, usa bluetooth 4.0 para muito mais do que só se pendurar a devices: a tecnologia é usada para localização indoor, por exemplo.
Experiências Distintas
Outro ponto importante e que normalmente é negligenciado é a experiência do usuário. O iOS tem uma experiência completamente diferente da experiência do Android. Novamente não há aqui melhor ou pior, mas diferente. São plataformas completamente distintas e que dão experiências distintas ao usuário final.
Por exemplo, a continuidade é uma característica específica do iOS que permite que uma chamada comum seja atendida no seu iPad, ou no seu Mac. Tudo depende da proximidade que o device está um do outro. Este é um tipo de experiência exclusivo do iOS.
Portanto, ao criar um app que vai funcionar em várias plataformas é preciso ter isso em mente: seu app terá experiências diferentes em cada uma das plataformas. Tentar homogeneizar a experiência do seu app é um erro: em alguma plataforma você será obrigado a tolher o seu usuário ou a oferecer a ele uma experiência muito diferente da que ele já está acostumado, o que pode ser um fator que leve à baixa adoção do seu app naquela plataforma.
Até mesmo o design do seu app tem de ser diferente. Não adianta você tentar fazer um design único. Cada plataforma tem uma maneira diferente de fazer as coisas. Existe já uma linguagem associada à forma como as coisas são apresentadas e à forma como as ações são executadas. Tentar generalizar este conceito é um erro tremendo.
Se você tenta criar um design e uma experiência únicas para várias plataformas distintas, o efeito é, invariavelmente, este: o seu app será elogiado em uma plataforma e praguejado em outra.
Não há balas de prata
Há anos que fabricantes prometem balas de prata para matar lobisomens quando o assunto é multi-plataformas. Quando eu comecei a ver essa estória de multi-plataforma, as plataformas no mercado eram o DOS, unix, o Windows, o OS/2, BeOS e o Mac OS. Haviam uma série de produtos que prometiam ser multi-plataforma. Foi a época na qual todo mundo lançou um produto Visual qualquer coisa que prometia funcionar no DOS, no Windows e no Unix em alguns casos.
Nunca nenhum desses produtos conseguiu permanecer multi-plataforma e sempre acabaram terminando em alguma plataforma específica. Na época, todos acabaram ficando no Windows, que era a plataforma que mais crescia.
Quando a Sun criou o java, a pretensão era justamente escrever o código uma única vez e executá-lo em tudo quanto é plataforma. Isso nunca foi conseguido principalmente devido às grandes diferenças entre as diversas plataformas, o que levava o usuário a ter diferentes experiências e, por fim, enterrou esta pretensão.
A verdade é que a briga de plataformas atualmente se coloca como um grande desafio aos profissionais de UI e UX, pois cada plataforma tem suas características e seus detalhes que, se não levados em consideração, tornam a vida do usuário um pequeno inferno.