Estábamos seguros de que no queríamos usar PHP. Facebook está estancado en eso por razones heredadas, no porque sea la mejor opción en este momento. [1] Nuestra conclusión principal de esa experiencia es que la elección del lenguaje de programación es muy importante y su cambio es extremadamente costoso.
Python era un lenguaje que Charlie y yo conocíamos razonablemente bien (aunque ahora lo sé mucho mejor que cuando empezamos). También consideramos brevemente C #, Java y Scala. Los mayores problemas con Python son la velocidad y la falta de verificación de tipos.
C # parecía bastante prometedor. Como lenguaje de programación, es genial, pero:
- Cómo hacer una autenticación entre la API REST en una aplicación dividida en muchos microservicios
- ¿Qué es una ventana del navegador?
- ¿Cuáles son algunos buenos proyectos de JavaScript que usan solo JavaScript de vainilla?
- ¿Necesito saber cómo codificar ampliamente para desarrollar un sitio web?
- ¿Qué es mejor JSP o Javascript?
- No queríamos estar en la pila de Microsoft. Estábamos listos para aprender algo nuevo, y MS SQL Server en realidad parecía bastante bueno, pero sabíamos que necesitaríamos integrarnos con un montón de código fuente abierto que solo tiene soporte de segunda clase para .NET, si es que lo admite. Además, la mayoría de los mejores ingenieros de estos días están acostumbrados a cosas de código abierto.
- No queríamos correr el riesgo de estar en Mono (una implementación de código abierto de C # /. NET). No está claro cuánto tiempo durarán los fondos para ese proyecto, y había oído hablar de varios problemas de rendimiento. Además, parecía que todo lo demás en el ecosistema de C # supondría que estábamos en la pila de Microsoft.
Por muchas pequeñas razones, los programas Java terminan siendo más largos y más dolorosos de escribir que los programas Python equivalentes. También es más difícil interactuar con cosas que no son de Java. Scala tenía muchas desventajas de Java y JVM, aunque no era tan malo. El lenguaje parecía un poco nuevo y parecía que traería algunos riesgos innecesarios (por ejemplo, quién sabe qué tan bueno será el apoyo en 10 años).
Otros dos idiomas en los que pensamos muy brevemente fueron OCaml y Haskell (ninguno tenía ecosistemas lo suficientemente grandes ni bibliotecas estándar lo suficientemente buenas, y ambos eran potencialmente demasiado difíciles para algunos diseñadores / analistas de datos / no ingenieros que podrían necesitar escribir código).
Decidimos que Python era lo suficientemente rápido para la mayoría de lo que teníamos que hacer (ya que empujamos nuestro código crítico para el rendimiento a servidores backend escritos en C ++ siempre que sea posible). En cuanto a la verificación de tipos, terminamos escribiendo pruebas unitarias muy completas que vale la pena escribir de todos modos, y alcanzamos la mayoría de los mismos objetivos. También teníamos mucha confianza en que Python continuaría evolucionando en una dirección que sería buena para la vida de nuestra base de código, después de haberla visto evolucionar en los últimos 5 años.
Hasta ahora, hemos estado muy contentos con la elección. Hay un pequeño sesgo de selección, pero todos los primeros empleados que habían estado trabajando con otros idiomas en el pasado estaban contentos de hacer la transición a Python, especialmente aquellos que vienen de PHP. Desde que comenzó, sucedieron las siguientes cosas:
- Python 2.6 llegó al punto en el que una cantidad suficiente de las bibliotecas que utilizamos eran compatibles, e hicimos una transición muy fácil.
- Tornado (marco web) se lanzó como código abierto, y trasladamos nuestro servicio web de actualización en vivo a eso.
- PyPy llegó al punto donde parece que eventualmente será utilizable y nos dará una aceleración significativa.
Todos juntos, nos dan la confianza de que el lenguaje y el ecosistema se están moviendo en una buena dirección.
[1] ¿Cuáles son los horrores de PHP? ¿Y disfrutan los ingenieros de Facebook la programación en PHP? y ¿Por qué Facebook no ha migrado fuera de PHP? y ¿Cuáles son algunas de las ventajas de PHP sobre otros lenguajes de programación? para más sobre eso.