Señal a ruido
Las comunidades de idiomas se ven afectadas por el sesgo de autoselección, lo que resulta en una mayor frecuencia natural de buenos desarrolladores que trabajan con un idioma sobre otro.
Con los lenguajes donde hay una enorme cantidad de desarrolladores, debe lidiar con un problema de señal a ruido muy bajo, que se vuelve mucho más peligroso si su proceso de reclutamiento es malo para diferenciar entre buenos programadores y malos programadores.
Debido al sesgo de autoselección, hagamos los siguientes supuestos:
- Al probar su código, ¿alguna vez encontró un error que no fue su culpa?
- ¿Cuál es el mejor esquema y estrategia de versiones de software hoy en día?
- ¿Cuál es el punto de almacenar los mismos datos en diferentes niveles de caché, tanto en términos de hardware como de software?
- ¿Puede el software hacer algo?
- ¿Cuáles de las operaciones básicas de la CPU son esenciales para construir una computadora universal?
- Idioma A: hay 100,000 desarrolladores en el mercado y 1000 son realmente buenos y vale la pena contratarlos
- Idioma B: hay 10,000 desarrolladores y 500 son realmente buenos y vale la pena contratarlos
Si elige el Idioma A con 100,000 desarrolladores en el mercado, si contrata a 5 desarrolladores de un grupo de 100 candidatos, en el mejor de los casos obtendrá un desarrollador bueno y 4 malos, y en el peor 5 malos.
Si elige el Idioma B con 10,000 desarrolladores en el mercado, si contrata a 5 desarrolladores de un grupo de 100 candidatos, en el mejor de los casos obtendrá cinco desarrolladores buenos y no malos, y en el peor de los casos, 5 malos.
Personalmente, me gustan mucho más las probabilidades con el Idioma B, porque una vez que has identificado a la comunidad y cómo llegar a ellos, los costos de búsqueda entre los dos idiomas para obtener 100 candidatos son casi los mismos.
Sé que estoy haciendo muchas suposiciones, pero creo que la mayoría estaría de acuerdo en que las ideas generales subyacentes son válidas.
También para aquellos que piensan que he asumido una falsa dicotomía al definir a los programadores como buenos o malos, adelante y léanlo como:
buena programación = programador productor neto positivo
mal programador = programador productor neto negativo
Para evitar una guerra de llamas, evité nombrar cualquier idioma en mi argumento anterior.