Estaba leyendo el ensayo de Paul Graham - Batiendo los promedios (2003) y esto es lo que tenía que decir:
Cuanto más sabor de TI tenían las descripciones de trabajo, menos peligrosa era la compañía. Los más seguros fueron los que querían la experiencia de Oracle. Nunca tuvo que preocuparse por eso. También estabas a salvo si decían que querían desarrolladores de C ++ o Java. Si quisieran programadores de Perl o Python, eso sería un poco aterrador, eso está comenzando a sonar como una compañía donde el lado técnico, al menos, está dirigido por hackers reales
Ahora, este es un ensayo anticuado. Sin embargo, no veo cómo usar un lenguaje no común (C / C ++ / Java, C #) sería 'menos peligroso' . Si los programadores de una organización son muy fluidos con el lenguaje de desarrollo, deberían ser igualmente expertos en producir código a un ritmo decente. De hecho, si utiliza un lenguaje no común, los problemas de mantenimiento / mejora no le afectarán, ya que a la larga no habría demasiados programadores disponibles.
Para hacer sistemas rápidos y sucios, estoy de acuerdo en que algunos idiomas le permiten despegar relativamente antes que otros. Pero, ¿tiene sentido el ensayo / comentario de Paul Graham en 2012 y más allá? Si una startup usara lenguajes de TI típicos para el desarrollo, ¿por qué su competencia debería estar menos preocupada?
No veo cómo el lenguaje en sí mismo hace la diferencia. En mi humilde opinión, lo que importa es la experiencia de los desarrolladores con el lenguaje y la disponibilidad de marcos para que SECES (no te repitas) no solo codifiques en un idioma en particular.
¿Qué es lo que me estoy perdiendo? ¿Implica que las startups eligen mejor los lenguajes sin sabor de TI (incluso si los desarrolladores pueden ser extremadamente expertos en ellos)? ¿Cuáles son las fuerzas económicas / de mercado (de programación) detrás de esta afirmación?
PD: 'lingua obscura' no está destinado a herir los sentimientos de nadie :)
Respuestas:
La cadena de herramientas es un síntoma.
Cuando una empresa elige Oracle, esto es una indicación de:
Cuando una empresa elige Python, esto es una señal de:
Cuando estos dos se encuentran, la estrategia de la gran corporación es evitar riesgos, usar su impulso y comercializar al competidor. La estrategia de la pequeña competencia es primero vencer a la competencia en el mercado y luego seguir siendo el producto superior. Si la pequeña empresa elige las batallas correctas, puede superar fácilmente a la gran empresa simplemente siendo más rápida y más reactiva, y aprovechando la tendencia de la gran empresa a evitar riesgos.
fuente
La elección de un lenguaje oscuro indicaría una autoconfianza técnica poco común en una startup. Una empresa dispuesta a abandonar la sabiduría común podría saber algo sobre el desarrollo de software que la mayoría de las empresas no. Por otra parte, podrían ser idiotas.
fuente
Veo los comentarios de PG más sobre la actitud que los detalles del lenguaje. Las personas con una mentalidad interna de TI juegan a lo seguro. Utilizan tecnologías de bajo riesgo, tienen procesos para minimizar el riesgo y toman la estrategia de bajo riesgo. Están demasiado ocupados preocupándose por su propio almuerzo para comer el suyo.
Las personas que están al borde de la hemorragia (python 2003) son las que deben preocuparse. Tienen hambre. Toman riesgos. Son intelectualmente curiosos. El mismo tipo de persona que se queda despierta hasta tarde aprendiendo un idioma nuevo y emocionante es el tipo que podría cambiar su industria antes que usted.
fuente
Graham significa menos peligroso para él como competidor, no simplemente menos peligroso. Su punto no es que Java (o C ++ en 2003, o COBOL en 1980) sea menos peligroso, sino que es normal y que hay una buena probabilidad de que las empresas que buscan tales habilidades sean competidores promedio. Pero las empresas que buscan un fuerte talento en idiomas oscuros (o, más correctamente, de mayor potencia y menos conocidos) son empresas a las que hay que prestar atención.
Y sí, tiene mucho sentido hoy. Tenía mucho sentido mucho antes de que Graham lo escribiera, simplemente no hablábamos de Java en esos días.
fuente
Veamos qué idiomas usaron por primera vez las startups exitosas. Una lista no científica, fuera de mi cabeza. Una investigación aleatoria adecuada sería mejor, si alguien tuviera la energía.
Entonces, presumiblemente, concluimos que Facebook y Stackexchange no representaron una amenaza para sus competidores. No muy convincente.
Veamos si Paul Graham lo cree hoy en día. Fue cofundador de YCominator, que financia nuevas empresas. La página de inicio enumera algunas de sus exitosas startups. Los revisé en orden, muy rápidamente tratando de investigar los idiomas que usaban en los primeros días.
Bueno, hay algunos signos de preferencia por lenguajes relativamente oscuros y posiblemente poderosos. Pero Flash, PHP y ASP clásico también se enumeran.
Es un ensayo . Es un impulso hiperbólico para un lenguaje relativamente oscuro que ama, con el consejo subyacente de que las nuevas empresas deberían amar su tecnología y moverse tan rápido como puedan. Lo suficientemente justo.
fuente
Un desarrollador promedio usa herramientas promedio, porque no ve el valor de las más poderosas:
(El énfasis es mío).
Cuanto más potente sea el lenguaje, menos desarrolladores lo usarán y menos común será. La popularidad es, por lo tanto, una buena métrica de cuán lejos está el poder de un idioma del promedio. Cuanto más oscuro sea el lenguaje, mayores serán las posibilidades de que el desarrollador que lo use sepa lo que está haciendo, y lo haya elegido por una buena razón entre sus pares habituales, y un competidor inteligente es peligroso.
fuente
La elección del idioma es difícil para una startup. Muchas nuevas empresas muy buenas eligen lenguajes "comunes" por la velocidad de llegar al mercado, la familiaridad del fundador y la facilidad de contratación futura.
Elegir un lenguaje menos usado sí envía buenas señales. Dice que está preparado para tomarse en serio el desarrollo e intentar contratar programadores especializados. Sin embargo, esas son solo señales, una startup es más que solo elegir en el idioma.
La conclusión es que su elección de idioma debe evaluarse adecuadamente en su contexto. Facebook, por ejemplo, hizo bien el uso de PHP, que generalmente no se considera un lenguaje muy escalable
fuente
Pregúntele a los mejores y peores programadores que conozca, según los criterios que desee, qué otros idiomas conocen. Ahora escribe un anuncio de trabajo para atraer al primero, y tienes tu respuesta. Incluso si su aplicación está en C ++, obtendrá una mejor clase de programadores si contrata a los que saben idiomas que no se enseñan en la escuela.
fuente
Hay dos cosas diferentes por las que debería preocuparse si un competidor usa un lenguaje inusual:
Ambas ventajas pueden no aplicarse en una situación dada. Por ejemplo, una startup podría adoptar fácilmente un lenguaje "porque es genial" sin pensar realmente si es la opción correcta. Pueden cometer fácilmente errores de contratación. Pueden dispararse fácilmente en el pie al abusar de un lenguaje "poderoso".
Pero si un competidor elige un lenguaje inusual y lo usa bien, entonces sí, es muy posible que tenga una amenaza significativa en sus manos.
Creo que este principio es bastante intemporal y es tan cierto ahora como lo fue en 2003: los lenguajes y paradigmas específicos pueden aparecer y desaparecer, pero la idea de elegir un lenguaje expresivo y potente que se adapte a su dominio del problema en lugar de un lenguaje genérico, seguro y de propósito general probablemente siempre merecerá alguna consideración seria.
fuente
Si sus clientes no están encerrados, entonces sí . Debería preocuparse por los competidores que usan lenguajes poderosos.
Java, C #, C ++, son comparativamente detallados y tienen ciclos de edición / prueba relativamente lentos. Esto limita la velocidad que incluso los desarrolladores más rápidos pueden ofrecer funciones. Los lenguajes más expresivos, con una potente metaprogramación incorporada y un tiempo de compilación cero, permiten a los desarrolladores expertos crear funciones lo más rápido posible. Si está en una carrera por la cuota de mercado, con una gran recompensa para el ganador, tiene sentido contratar a los mejores desarrolladores que pueda encontrar y usar cualquier idioma que los permita ir más rápido. Puede preocuparse por la escalabilidad más adelante.
fuente