La respuesta corta es sí, dados los dominios correctos. Y en ninguna parte cerca, dados otros dominios.
La proporción puede ser infinita, dependiendo de qué programadores esté comparando y la complejidad de la tarea. Hay algunas tareas que un desarrollador promedio, literalmente, nunca podrá completar.
Pero para los mismos dos programadores en una tarea diferente, la relación de rendimiento puede ser inferior a 10, o incluso inferior a uno.
- ¿Qué tecnologías necesito saber para DevOps?
- ¿Cuáles son los toques finales para proyectos de software de un solo hombre?
- ¿Los ingenieros de software de Silicon Valley a menudo tienen una visión inflada de su propia inteligencia?
- ¿Aprender nuevos idiomas realmente ayuda a los programadores a crecer? ¿O es solo otro mito?
- ¿Se incorporan las mejores prácticas modernas de desarrollo (TDD, patrones de diseño, separación de preocupaciones, etc.) en los cursos universitarios de desarrollo de software?
El rendimiento relativo puede variar según la experiencia en el dominio, la experiencia en el idioma y la naturaleza de la complejidad del problema.
Para un problema que es amplio pero superficial, es posible que no vea una gran diferencia en el rendimiento entre los mejores y los peores desarrolladores. Este tipo de problema es común e incluye la mayoría de las aplicaciones CRUD, incluso si hay cientos de reglas en la lógica de negocios (piense en el código fiscal). En este dominio, probablemente veas como máximo un rango de 10x entre desarrolladores promedio y superiores.
Creo que CSS también es un ecualizador: puedo ser muy productivo, pero me arroja al problema de CSS y soy tan lento como un desarrollador promedio. Fantaseo con crear un lenguaje que pueda crear CSS que satisfaga restricciones específicas.
Pero cuando la complejidad algorítmica supera una cierta profundidad , hay problemas que algunos desarrolladores simplemente podrían bloquear. Piense en términos de múltiples hilos y muchos servicios interactuando, posibles puntos muertos, serias limitaciones de rendimiento y otras capas similares de complejidad.
Algunos desarrolladores pueden manejar esto con facilidad. Otros nunca crearán una solución robusta y de alto rendimiento, o pueden tardar 100 veces más en lograr una solución menos elegante.
Hay otra dimensión del problema que muchas personas no consideran: dos desarrolladores pueden resolver el mismo problema aproximadamente al mismo tiempo, pero uno puede crear una solución que funcione con 100 veces el rendimiento de la otra solución. En algunos casos, eso puede no importar, pero si se trata de un proceso de servidor y necesita escalar, ¿preferiría tener un conjunto de 10 servidores o más de 1000 para manejar la misma carga? El desarrollador “100x” también puede resolver el problema en 1/3 del tiempo, pero probablemente no en 1/100 del tiempo , e incluso puede tardar un poco más, especialmente si el desarrollador 1x está utilizando un entorno que requiere menos trabajo inicial (pensando Carriles aquí).
Hay muchas variables y no hay una relación simple de rendimiento entre varios desarrolladores.
Entonces, como siempre, la respuesta es “depende”.