Hola, soy desarrollador de iOS con 3 años de experiencia y muchas aplicaciones enviadas. Consulte http://www.sigmapoint.pl para conocer nuestros proyectos. Fui responsable de cada versión de iOS enviada por mi empresa.
Ahora volviendo a sus preguntas.
Rápido
En mi opinión, Swift aún no está listo para la producción para un gran proyecto o una gran empresa. Actualmente estoy desarrollando un proyecto en Swift y tiene algunos inconvenientes:
– Xcode aún no es perfecto: la finalización del código a veces falla (alerta famosa “SourceKit se estrelló”), Xcode con un proyecto grande con ~ 40 archivos abiertos parece reaccionar más lentamente que con un proyecto similar en Objective-C, no puede desarrollar sus herramientas Swift y distribúyalos como CocoaPods, el depurador se bloquea a veces si coloca un punto de interrupción en un bloque asincrónico, etc.
– La mayoría de los ejemplos de funciones iOS más complicadas todavía se encuentran en Objective-C (StackOverflow, blogs, tutoriales). Al menos debe comprender la sintaxis de Objective-C y algunas ideas de diseño de lenguaje para poder traducirla en vivo a Swift y adaptarse a su proyecto.
– En equipos más grandes se requerirá cierta disciplina para desarrollar y mantener buenos estándares de codificación porque Swift es diferente a Objective-C y algunas cosas deben resolverse de manera diferente.
- ¿Hay compañías que patrocinan visas para desarrolladores de aplicaciones móviles a tiempo completo en Singapur / Malasia / Canadá / Australia?
- ¿Quiénes son los mayores desarrolladores de aplicaciones móviles (en términos de ingresos, tamaño, base de clientes, presencia global, etc.)?
- ¿Cuál es el mejor marco para crear aplicaciones móviles multiplataforma completamente nativas?
- Cómo recibir datos de un sitio web y ponerlos en una aplicación móvil
- ¿Cuál es la mejor plataforma de prueba de carga y rendimiento habilitada para la nube en cuanto a costo, tiempo de respuesta, facilidad de uso y análisis / resultados en la web y los dispositivos móviles?
Por otro lado, Swift es un lenguaje muy agradable, de hecho, mi favorito. Creo que, según los idiomas que conozco, solo Python ofrece el mismo nivel de flexibilidad y código de escritura divertido ( clojure , haskel , etc.son demasiado nicho en mi opinión y JS tiene muchas decisiones de diseño extrañas y requiere un poco más de tiempo para enviar código confiable).
Pero si eres un ejército de un solo hombre, te gustan los nuevos desafíos y quieres divertirte escribiendo código, ¡puedes intentarlo! 🙂
WhatsApp
No conozco los detalles técnicos de WhatsApp pero creo que se basan en:
– Comunicación WebSocket: HTTP típico puede ser demasiado lento y no responde para hacer una comunicación en tiempo real,
– Algún servicio de pub-sub donde te registras en la habitación y esperas un nuevo mensaje, como PubNub o muchos otros: http://www.pubnub.com
– Alguna base de datos rápida, puede ser una base de datos de objetos porque podemos renunciar a algunos elementos de ACID, pero debería replicarse con bastante facilidad.
En cuanto al desarrollo, el backend de WhatsApp es de aproximadamente el 80% y la aplicación es de aproximadamente el 20%. Para hacer un clon simple de WhatsApp para, por ejemplo, iOS, tomaría alrededor de 4 a 5 meses dependiendo de cuántas funciones adicionales tenga (envío de imágenes, captura de video, ubicación, etc.) pero solo suponiendo que todo el trabajo duro se pondrá en el backend. El backend más simple se puede hacer usando, por ejemplo, PubNub vinculado, pero cuanta más gente use su aplicación, más sofisticada es la arquitectura que necesita, por lo que puede llevar años construir un servicio tan escalable y confiable como WhatsApp.