Debe una empresa estructurar el desarrollo móvil con un equipo móvil o con equipos separados de iOS y Android?

Es sólo caso por caso. Como desarrollador móvil que ha trabajado para empresas tecnológicas durante varios años, me gustaría compartir mi experiencia sobre cómo la industria forma el equipo móvil:

  1. Para una pequeña aplicación, o una aplicación en su etapa inicial, recomendaría un único equipo con ingenieros de Android y iOS. Esto se basa en dos razones: en primer lugar, tenemos que asegurarnos de que Android y iOS están en la misma página y comparten tanto conocimiento común como sea posible; por lo tanto, un equipo unificado sería beneficioso para la comunicación y la eficiencia del trabajo. En segundo lugar, es útil para que los ingenieros conozcan un panorama completo, y también lo es para un liderazgo de gestión. De este modo, los ingenieros de iOS podrían ser un apoyo para la parte de Android y viceversa. Esto es muy común para una startup en los valles del silicio como Coursera.
  2. Para una aplicación híbrida que utiliza tecnología de plataforma cruzada, no hay otra opción que un equipo móvil unificado. Esto se debe al hecho de que no hay diferencia entre las versiones de iOS y Android. En su lugar, cada miembro del equipo está trabajando en una sola base de código unificado (se compilará a dos productos comparten casi exactamente las mismas características en iOS / Android) con la misma tecnología. El ejemplo más clásico es el equipo de gestión de anuncios en Facebook.
  3. Para una aplicación de tamaño medio, por ejemplo Zillow, se recomienda tener equipos de iOS y Android separados. Esto se debe a que cada plataforma tiene sus propias características y requisitos; por lo tanto, dos equipos podrían centrarse en su propia parte y asegurarse de que no se distraigan con el otro equipo. Sin embargo, normalmente dos equipos trabajan estrechamente en la misma organización para asegurar la comunicación y compartir la experiencia.
  4. Para una aplicación que se jacta de su gran tamaño y funciones complicadas, los desarrolladores/PM de iOS y Android se distribuyen entre los equipos en función de las características. Veamos la aplicación Uber como ejemplo: tiene equipos responsables de los nuevos pasajeros en el embarque, las funciones de Uber X y pool, la optimización del algoritmo de la ruta, la seguridad del viaje, el pago y la transacción, etc. Todos estos equipos tienen ingenieros de iOS/Android que trabajan en partes relacionadas. Sin embargo, siempre hay un equipo de arquitectura móvil que sólo tiene desarrolladores de iOS/Android para manejar los problemas básicos de infraestructura de la aplicación.

En general, depende de qué nivel de experiencia de usuario quieres ofrecer: cuanto más nativa/complicada sea tu aplicación, más equipos separados habrá.