Si la competencia está utilizando 'lingua oscura' para el desarrollo (¿por qué) debería preocuparme? [cerrado]

16

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 :)

Doctor
fuente
44
La brecha entre los idiomas básicos y los idiomas de poder sigue siendo gigantesca. Todavía es posible superar el ritmo de desarrollo de Java o similar con, por ejemplo, Lisp en orden de magnitud.
SK-logic
44
@ SK-logic: ¿algún dato que respalde eso?
PhD
2
@Nupul, casi no hay investigación formal sobre la productividad de los lenguajes de programación, por lo que solo puedo confiar en evidencia anecdótica y en mi propia experiencia. He visto solo un par de documentos, intentaré sacarlos más tarde. En cuanto a Lisp específicamente, es diferente de los otros idiomas de una manera que se puede convertir literalmente a cualquier idioma de manera barata y fácil. Por lo tanto, combina todas las propiedades y ventajas de todos los demás lenguajes, mientras que los lenguajes que no son de potencia son fijos y estrechos. Puede explicar la brecha de productividad.
SK-logic
8
@ SK-logic realmente? A pesar de los argumentos de LISPers en sentido contrario, el hecho es que muy pocos programas de valor se han creado utilizando un Lisp, con la posible exclusión de Emacs, y casi ningún sitio web importante, con la exclusión de ViaWeb alrededor de 1997. Entonces, A pesar de las afirmaciones de un increíble aumento de la productividad, la mayoría de los defensores de LISP hablan y no caminan. Solo tienen material de investigación académica (más en investigación y menos en calidad de producción), proyectos de pasatiempos y algunos elementos internos utilizados en algunas empresas.
Hejazzman
2
@ SK-logic El problema es la falta de tipeo estático, a pesar de su capacidad para implementar un lenguaje estáticamente tipado en lisp.
BenjaminB

Respuestas:

16

La cadena de herramientas es un síntoma.

Cuando una empresa elige Oracle, esto es una indicación de:

  • Mucho dinero para tirar
  • Corporación grande
  • Estructura organizativa profundamente anidada con muchas capas de gestión
  • La compañía está dirigida por 'trajes': ya sean ejecutivos o marketing y ventas.
  • Hace grandes productos de software monolítico con bases de código gigantescas
  • Procesos formales para todo.

Cuando una empresa elige Python, esto es una señal de:

  • Pequeña empresa joven
  • No hay dinero de sobra
  • Jerarquía plana
  • La empresa está dirigida por programadores.
  • Hace pequeños productos de un solo propósito con pequeñas bases de código
  • Procesos mayormente informales

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.

tdammers
fuente
1
¡La compañía que usa Oracle probablemente seguirá allí dentro de cinco años!
James Anderson
3
@JamesAnderson: dependiendo del mercado, sí. Si están tratando de convertirse en el próximo facebook, probablemente no; si son una gran compañía de seguros, entonces probablemente sí. Pero entonces, si usted es una gran compañía de seguros, una startup de garaje no es algo que deba temer.
tdammers
Parece que quiero trabajar para una tienda Python / Ruby / Scala / Clojure ... mmm. Dada mi experiencia, los lugares que tienen pagos finales tienden a ser muy lentos para actualizar. No estoy seguro de por qué. El dolor de mover una versión hacia adelante es a menudo más suave que mover varias versiones hacia adelante. El software pagado "generalmente" ofrece migración, pero esa migración generalmente es de versión a versión en la mayoría de los casos.
Plataforma
25

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.

samwise
fuente
1
De hecho, eso es exactamente lo que Graham quiere decir con " eso está empezando a sonar como una compañía donde el lado técnico, al menos, está dirigido por hackers reales ", una compañía donde al menos los tecnólogos podrían ser lo suficientemente inteligentes como para ser una verdadera competencia para él.
Ross Patterson
8
Sin embargo, hoy en día son principalmente idiotas, porque "elegir un idioma oscuro" es la moda del día entre los idiotas y los diletantes.
Hejazzman
2
También indica que la empresa está orientada hacia el interior y centrada en "cómo construir" en lugar de "qué construir". Dichas empresas no atraen a muchos clientes.
James Anderson
13

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.

MathAttack
fuente
44
Por supuesto, también podrían ser tragados enteros por uno de esos riesgos que tomaron ...
Michael Borgwardt
3
"" "Las personas en el borde de la sangre (python 2003) son de las que hay que preocuparse. Tienen hambre. Asumen riesgos. Son intelectualmente curiosos". sin contacto con la pragmática del desarrollo.
Hejazzman
2
Ambas verdad. Es un juego de números. Pero toma el extremo opuesto. A veces, los valores atípicos explotan. A veces tienen éxito. ¿Pero alguna vez temerías que un competidor te persiga con COBOL?
MathAttack
13

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.

Ross Patterson
fuente
66
Si tan solo no tuviéramos que hablar sobre Java en estos días.
DeadMG
8

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.

  • Facebook: PHP
  • Intercambio de pila: C #
  • Google: Java y Python
  • Twitter: Ruby on Rails

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.

MarkJ
fuente
3
Reddit comenzó en Lisp, pero fueron y reescribieron todo en Python muy temprano porque nadie podía entender el Lisp.
Mason Wheeler
Google usa muchos idiomas para muchas cosas diferentes. Utilizan C ++ para la mayoría de sus productos principales como búsqueda, cromo, etc.
mike30
@ Mike La pregunta es sobre las startups. Cuando Google era una startup, los primeros idiomas que usaban eran Java y Python.
MarkJ
6

Un desarrollador promedio usa herramientas promedio, porque no ve el valor de las más poderosas:

“Mientras nuestro hipotético programador Blub esté mirando hacia abajo en el continuo de potencia, él sabe que está mirando hacia abajo. Los idiomas menos potentes que Blub son obviamente menos potentes, porque les falta alguna característica a la que él está acostumbrado. Pero cuando nuestro hipotético programador de Blub mira en la otra dirección, hacia el continuo de potencia, no se da cuenta de que está mirando hacia arriba. Lo que ve son simplemente idiomas raros. Probablemente los considere como equivalentes en poder a Blub, pero con todas estas otras cosas peludas también. Blub es lo suficientemente bueno para él, porque piensa en Blub. ”- Paul Graham, Batiendo los promedios .

(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.

Jon Purdy
fuente
3
Eso no es necesariamente cierto en absoluto. Las herramientas, la publicidad, las bibliotecas existentes y los materiales didácticos de calidad también pueden cambiar la popularidad de un idioma.
DeadMG
@DeadMG Bueno, sí, por supuesto, el poder expresivo no es el único factor. Supongo que asumí tácitamente que todos los idiomas de la conciencia común están más o menos a la par en términos de marketing, herramientas y documentación; de lo contrario no serían comparados razonablemente en absoluto. Demonios, incluso las preferencias personales tienen mucho que ver con eso. Si sabes que Haskell es mejor para alguna tarea pero realmente te gusta C, entonces puedes codificar algo en C por el mero hecho de hacerlo.
Jon Purdy
Supongo que asumí tácitamente que todos los idiomas en la conciencia común están más o menos a la par en términos de marketing, herramientas y documentación ... - Y se equivocaría al hacerlo. Muy mal, de hecho.
Jim G.
1
@JimG. ¿Podría ofrecer un ejemplo específico? Teniendo en cuenta el índice TIOBE, todos los 10 principales y la mayoría de los 50 principales parecen comparables en esas áreas. Además, las personas están bien haciendo comparaciones de características entre idiomas que son muy diferentes en poder expresivo, entonces, ¿por qué no hacer lo mismo para los otros aspectos?
Jon Purdy
5

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

Tom Squires
fuente
1
+1 solo por el eufemismo "Facebook hizo bien".
MarkJ
5

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.

Karl Bielefeldt
fuente
2
-1: ¿eh? Lo siento, me perdiste.
Jim G.
4

Hay dos cosas diferentes por las que debería preocuparse si un competidor usa un lenguaje inusual:

  • Ventaja de productividad : existen ventajas y desventajas de los lenguajes inusuales, pero suponiendo que la competencia haya elegido bien para su dominio problemático dado, entonces podrían tener una verdadera ventaja de productividad. Las capacidades de metaprogramación en Lisps, por ejemplo, probablemente le darán una ventaja real y sustancial en cualquier lugar donde necesite hacer una cantidad significativa de generación automática de código sobre la marcha.
  • Ventaja cultural : si una empresa utiliza un lenguaje inusual de interés para los grandes piratas informáticos, es probable que esté en condiciones de atraer y retener a los grandes piratas informáticos. Las empresas viven y mueren por la calidad de su gente, por lo que si esto se traduce en una ventaja de talento a largo plazo, puede ser realmente significativo.

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.

mikera
fuente
0

Si sus clientes no están encerrados, entonces . 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.

Kevin Cline
fuente
1
-1: C #, cuando se escribe con Visual Studio, Resharper, LINQ y .NET 4.0, ¿tiene ciclos de edición / prueba lentos en relación con otros idiomas?
Jim G.
1
@ Jim: no estoy seguro de cuáles son sus comparadores, pero en comparación con Ruby, Groovy, Clojure y otros lenguajes dinámicos modernos que he usado C # está definitivamente más cerca de Java y C ++ en términos de estilo de desarrollo y velocidad de iteración. YMMV, pero no creo que su voto negativo sea especialmente merecido: la caracterización del OP es en general justa. Dar los "lenguajes expresivos" una oportunidad, puede que se sorprenda lo que es posible .....
mikera
@ Jim G., sí, en comparación con Common Lisp, el ciclo de edición / prueba de C # es lento. No puede modificar un sistema en ejecución. Y tienes que escribir mucho más código en C #, lo que ralentiza aún más las cosas.
SK-logic
1
No, por ejemplo, Erlang permite la modificación en tiempo de ejecución y es un lenguaje compilado.
Ricky Clarkson
2
@ JimG., Common Lisp es un lenguaje compilado (bueno, la mayoría de las implementaciones son compiladores puros). La compilación incremental permite hacer los mismos trucos que los intérpretes, mientras que con una compilación separada son apenas posibles.
SK-logic