En el mundo real, hay algo así como tres cubos en los que puede colocar proyectos web. (Descargo de responsabilidad: probablemente hay más cubos, pero esto hace una mejor explicación)
Primero, tiene pequeños sitios web y pequeños proyectos que nunca reciben tráfico o tracción más allá de unos pocos cientos o miles de usuarios. Por lo general, se pueden manejar con una sola instancia de Heroku, un pequeño servidor que se ejecuta en Digital Ocean, o incluso algo de alojamiento compartido como BlueHost o algo así si es algo pequeño como un pequeño blog de WordPress o sitio web de negocios.
Los sitios pequeños generalmente necesitan un desarrollador y no siempre a tiempo completo. En algunos casos, se necesita un pequeño equipo de tres o cuatro desarrolladores, pero en esos casos es porque hay mucha más funcionalidad y dinero detrás del proyecto que los usuarios.
- ¿Pueden los ingenieros de software tener un cuerpo sano dado que trabajan en una silla la mayor parte del día?
- ¿Cuáles son las verdaderas virtudes de un gran programador? ¿Cómo me convierto en uno?
- ¿Es una buena práctica si un cliente se niega a escribir especificaciones y quiere que los ingenieros de software investiguen el área de negocios por sí mismo?
- Cómo elegir un lugar de trabajo como desarrollador junior de software
- Cómo prepararse para una entrevista práctica de ingeniero de software
En segundo lugar, tiene sitios web de medianos a grandes con mucho uso, pero crucialmente, sin mucho crecimiento. En este escenario, podría ser necesario un equipo de cinco o diez desarrolladores, y lo más importante, se necesita una cantidad relativamente pequeña y estable de infraestructura. Como en el caso, tal vez necesite cinco o diez servidores, pero el crecimiento es pequeño y lo suficientemente predecible como para planificar las necesidades de infraestructura en un ciclo de 1 a 3 años.
El crecimiento lento y predecible significa que es fácil de administrar con recursos relativamente pequeños y predecibles.
En tercer lugar, tienes sitios web que crecen y crecen y crecen. Pueden comenzar de a poco, pero se duplican (o más) cada año. Esto crea la necesidad de cientos de desarrolladores por una razón muy simple …
El crecimiento exponencial abruma a los equipos pequeños.
Puede ser muy difícil escalar a suficientes servidores lo suficientemente rápido y de manera rentable, incluso con herramientas como AWS o Azure a sus espaldas. No es tan simple como simplemente agregar más instancias de servidores web o almacenamiento en caché.
En términos prácticos, no se trata de tráfico que crece con el tiempo, las características crecen a un ritmo similar y las personas de ventas / marketing exigirán nuevas cosas para vender de forma continua.
Se llama Software Gravity y The Katamari Damacy Effect.
Por ejemplo, Netflix solía ser un servicio de alquiler de DVD. Tenían una infraestructura de software completa construida alrededor de una biblioteca de alquiler de DVD que se conectaba a algún tipo de centros de distribución que enviaban sobres de DVD. Hay una base de código completa en Netflix de probablemente un millón de líneas de código (me imagino) solo para asegurar que todo el proceso de envío y recepción de DVD funcionó de manera confiable y manejó todos los casos de esquina.
En un momento, Netflix entró en el juego de transmisión web y creó una base de código completamente nueva en torno a la transmisión web. Creo que se creó en Microsoft Silverlight en los primeros días, por lo que creo que es un montón de código C #. Solo tenía que funcionar en la web y solo unos pocos navegadores.
Luego, Netflix construyó Roku (aunque se llamaba de otra manera). Y tuvieron que construir el código para hacer funcionar un decodificador de streaming. Y luego Netflix desechó la idea de tener sus propias cajas de transmisión y, en cambio, estaría EN TODAS PARTES.
Así que ahora, Netflix está disponible en reproductores Blu-ray, cajas de roku, decodificadores de Android como Fire TV, Chromecast streaming, iOS, Apple TV, Android, la web, transmisión en realidad virtual, y Dios mío, ni siquiera estoy seguro de qué de lo contrario, pero apuesto a que una vez que lleguemos a Marte, Netflix estará allí.
Por lo tanto, Netflix tiene necesidades de crecimiento compuesto tanto en el lado de la infraestructura como en el lado de las características. Incluso equipos relativamente eficientes de 10-20 por proyecto podrían consumir fácilmente unos pocos cientos de desarrolladores.
Ni siquiera mencionemos el hecho de que algo como Salesforce se está ejecutando en Netflix, por lo que probablemente haya equipos para modificar y generar informes sobre los sistemas internos, equipos que crean cosas para administrar análisis, big data, otros informes, herramientas para soporte al cliente, y probablemente software para respaldar los diversos esfuerzos de ventas y marketing en curso.
Ah, y probablemente haya un personal separado de I + D dedicado a “lo siguiente”, como transmisión 4k, realidad virtual, realidad aumentada y más. Ah, y una cierta cantidad de desarrollo de software para cualquier empresa conjunta o asociación que hagan.
Además, Netflix incluso tiene su propio hardware de servidor para que lo instalen las compañías de banda ancha, de modo que reduce los costos de transmisión.
A la escala de Netflix, se necesita un pequeño ejército para mantener los trenes funcionando a tiempo para hablar así.
¿Mencioné que todavía tienen un negocio de alquiler de DVD?
Entonces, así es como las empresas como Netflix logran tener cientos de desarrolladores.
-Brian
PD: También podrías disfrutar de mi otro escrito …