¿Cuánto tiempo llevaría construir Facebook desde cero a partir de julio de 2012?

Suponiendo que solo está hablando de crear el software y los sistemas para manejar la escala, no obtener la base de usuarios real: creo que Facebook tiene alrededor de 700 personas en el desarrollo de productos en este momento, y tenía 500, 300 y 200 en los tres años anteriores ese. Alguien puede corregirme si estos números están apagados.

Creo que es una estimación razonable suponer que ningún código escrito hace más de 4 años es relevante (obviamente, algunos lo son, pero el equipo era mucho más pequeño en ese entonces, y la mayor parte ya habría sido reemplazado por ahora, así que redondeándolo a cero es razonable).

Entonces, podría comenzar diciendo que esto es aproximadamente 1000 años de personas que se desarrollaron (sumando las personas de los años anteriores, pero no este año, porque los 700 no han existido durante un año todavía, y gran parte de su trabajo es entrar en lo que será Facebook, no lo que es actualmente).

Es una sobreestimación porque hay mucha rotación: la compañía tiene que probar muchas cosas para saber qué es lo correcto, pero luego solo necesita la implementación del producto “correcto” al final. Si está construyendo un clon completo, puede evitar la rotación, que yo estimaría que representa entre dos tercios y la mitad del trabajo.

Entonces, mi estimación es que un equipo de aproximadamente 175-250 personas podría hacerlo en el transcurso de dos años.

Hay otras razones teóricas por las que podría hacerlo más rápido ahora que antes, como una mejor tecnología, una mejor administración, mejores personas, pero no creo que, en promedio, en realidad terminen significativamente mejor en la práctica si estuviera tratando de ejecutar esto proyecto.

Algunas advertencias importantes:

Es imposible que de repente 250 personas trabajen en algo. La mayoría de las personas no querrían trabajar en esto porque podrían simplemente trabajar en Facebook. Google puede hacer grandes reasignaciones internas de personas, pero muy pocas otras compañías tendrían una oportunidad, lo que significaría que tendrían que construir el equipo con el tiempo, lo que llevaría más tiempo.

Esto no importa demasiado, porque en el transcurso de los próximos dos años, Facebook (con suerte) estará muy avanzado sobre el estado actual del producto, por lo que si este clon alguna vez se lanzara, tendría que competir contra eso.

Hay muchas cosas ocultas que no podrías clonar de esta manera en la práctica porque no hay forma de obtener acceso a la información que necesitarías para hacerlo.

Los efectos de red harían imposible que un clon directo gane tanta tracción, por lo que esta es una pregunta puramente teórica.

No puede simplemente crear el software para un sitio como este y luego dejarlo ejecutar: necesita una empresa completa con procesos y soporte en torno al producto para que funcione. Esos también toman tiempo para construir.

La respuesta de Adam D’Angelo da una estimación aproximada razonable. Solo quería expandirme en algunos puntos. De hecho, creo que tomará menos de 250 personas trabajando dos años para clonar Facebook hoy, en parte debido a la rotación que menciona Adam, pero también debido a los diversos proyectos de código abierto.

Hacemos muchos de nuestros proyectos de código abierto, y hacemos contribuciones muy significativas a los proyectos de código abierto. Por ejemplo, no necesita ajustar Memcached usted mismo ni preocuparse de ejecutar comandos similares a SQL en Hadoop (tenemos Hive). No necesita implementar su propia tienda Key-Value (como Cassandra), o su propio marco de serialización / RPC (Thrift). Puede usar HBase y saber que fue probado en batalla y ajustado para trabajar a gran escala.

Si desea escribir en PHP, no necesita preocuparse por hacerlo un poco más eficiente (HPHP, nuestro compilador de PHP). O si desea una biblioteca JavaScript escalable y eficiente, tenemos Javelin (aunque no la usamos tanto). O si desea una herramienta de revisión / tareas de código limpio, está Phabricator, entre otros proyectos de Evan Priestley.

Hay muchos otros proyectos de código abierto que puede encontrar en nuestra página de github ( https://github.com/facebook ), como Scribe (sistema de registro).

Internamente tenemos equipos muy pequeños trabajando en proyectos. Cada ingeniero tiene un gran impacto. Si comenzáramos de nuevo, por ejemplo, utilizando nuestras herramientas disponibles, creo que sería posible reconstruir Facebook en su estado público actual utilizando a esas 250 personas durante un poco más de un año. Obviamente, esto depende en gran medida de quiénes son esas 250 personas.

Pero, en última instancia, ninguna empresa quiere quedarse quieta o llegar a la posición de un competidor dos años tarde, por eso seguimos invirtiendo y mejorando nuestras herramientas y productos.

Si está pensando específicamente en Google, mi respuesta también se aplica a ellos. Tienen experiencia en infraestructura, sistemas y herramientas. Se ha invertido mucho trabajo en la construcción de Facebook que Google puede evitar rehacer.