Si la concurrence utilise la «lingua obscura» pour le développement (pourquoi) devrais-je m'inquiéter? [fermé]


16

Je lisais l'essai de Paul Graham - Battre les moyennes (2003) et voici ce qu'il avait à dire:

Plus les descriptions de poste avaient une saveur informatique, moins l'entreprise était dangereuse. Les types les plus sûrs étaient ceux qui voulaient une expérience Oracle. Vous n'avez jamais eu à vous en préoccuper. Vous étiez également en sécurité s'ils disaient qu'ils voulaient des développeurs C ++ ou Java. S'ils voulaient des programmeurs Perl ou Python, ce serait un peu effrayant - cela commence à ressembler à une entreprise où le côté technique, au moins, est géré par de vrais hackers

Maintenant, ceci est un essai daté. Cependant, je ne vois pas comment l'utilisation d'un langage non courant (C / C ++ / Java, C #) serait «moins dangereuse» . Si les programmeurs d'une organisation maîtrisent très bien le langage de développement, ils devraient également être capables de lancer du code à un rythme décent. En fait, si vous utilisez un langage non courant, les problèmes de maintenance / amélioration ne vous frapperont-ils pas au visage, car pas trop de programmeurs seraient disponibles, à long terme?

Pour faire des systèmes rapides, je suis d'accord, que certaines langues vous permettent de décoller relativement plus tôt que d'autres. Mais l'essai / commentaire de Paul Graham est-il logique en 2012 et au-delà? Si une startup devait utiliser des langages informatiques typiques pour le développement, pourquoi sa concurrence devrait-elle être moins inquiète?

Je ne vois pas comment la langue elle-même fait la différence. À mon humble avis, c'est l'expérience des développeurs avec le langage qui compte et la disponibilité des frameworks pour que vous SÉCHAGE (ne vous répétez pas) et pas seulement le codage dans un langage particulier.

Qu'est-ce qui me manque? Cela implique-t-il que les startups choisissent mieux les langues non informatisées (même si les développeurs peuvent être extrêmement habiles à les utiliser)? Quelles sont les forces économiques / de marché (de programmation) derrière cette affirmation?

PS: 'lingua obscura' n'est pas censé blesser les sentiments de quiconque :)


4
L'écart entre les langues de base et les langues de puissance est encore gigantesque. Il est toujours possible de surpasser le rythme de développement Java ou similaire avec, disons, Lisp par ordre de grandeur.
SK-logic

4
@ SK-logic - des données pour sauvegarder cela?
PhD

2
@Nupul, il n'y a presque aucune recherche formelle sur la productivité des langages de programmation, je ne peux donc me fier qu'à des preuves anecdotiques et à ma propre expérience. Je n'ai vu que quelques papiers, je vais essayer de les fouiller plus tard. Quant à Lisp en particulier, il est différent des autres langues de manière à pouvoir être transformé littéralement en n'importe quelle langue à moindre coût et facilement. Il combine donc toutes les propriétés et les avantages de toutes les autres langues, tandis que les langues non énergétiques sont fixes et étroites. Cela peut expliquer l'écart de productivité.
SK-logic

8
@ SK-logic vraiment? Malgré les arguments contraires de LISPers, le fait est que très peu de programmes de valeur ont été construits en utilisant un Lisp - avec l'exclusion possible d'Emacs -, et presque aucun site Web majeur - avec l'exclusion de ViaWeb vers 1997. Donc, malgré les prétentions à une augmentation incroyable de la productivité, la plupart des défenseurs du LISP parlent tous sans marcher. Ils ont seulement des trucs de recherche académique (plus sur la recherche et moins sur la qualité de la production), des projets de loisirs et quelques trucs internes utilisés dans quelques entreprises.
Hejazzman

2
@ SK-logic Le problème est le manque de typage statique, malgré votre capacité à implémenter un langage typé statiquement en lisp.
BenjaminB

Réponses:


16

La chaîne d'outils est un symptôme.

Lorsqu'une entreprise choisit Oracle, cela indique:

  • Beaucoup d'argent à jeter
  • Grande société
  • Structure organisationnelle profondément imbriquée avec plusieurs niveaux de gestion
  • L'entreprise est dirigée par des «costumes»: soit des types de cadres, soit du marketing et des ventes
  • Rend de grands produits logiciels monolithiques avec des bases de code gigantesques
  • Processus formels pour tout

Lorsqu'une entreprise choisit Python, c'est un signe de:

  • Petite jeune entreprise
  • Pas d'argent à épargner
  • Hiérarchie plate
  • La société est dirigée par des programmeurs
  • Fabrique de petits produits à usage unique avec de petites bases de code
  • Processus principalement informels

Lorsque ces deux-là se rencontrent, la stratégie de la grande entreprise est d'éviter les risques, d'utiliser leur élan et de surpasser le concurrent. La stratégie de la petite concurrence est d'abord de battre la concurrence sur le marché, puis de continuer à être le produit supérieur. Si la petite entreprise choisit les bonnes batailles, elle peut facilement surpasser la grande entreprise simplement en étant plus rapide et plus réactive, et en profitant de la tendance de la grande entreprise à éviter les risques.


1
L'entreprise utilisant Oracle sera probablement toujours là dans cinq ans!
James Anderson

3
@JamesAnderson: selon le marché, oui. S'ils essaient de devenir le prochain facebook, probablement pas; s'il s'agit d'une grande compagnie d'assurance, alors probablement oui. Mais alors, si vous êtes une grande compagnie d'assurance, une startup de garage n'est pas quelque chose que vous devez craindre.
tdammers

Il semble donc que je veuille travailler pour une boutique Python / Ruby / Scala / Clojure ... mmm. Compte tenu de mon expérience, les endroits qui ont payé en retour ont tendance à être très lents à se mettre à niveau. Pas certain de pourquoi. La douleur de faire avancer une version est souvent plus douce que de faire avancer plusieurs versions. Les logiciels payants proposent «généralement» la migration mais cette migration est généralement une version à une autre s'étendant dans la plupart des cas.
Rig

25

Le choix d'un langage obscur indiquerait une confiance technique rare dans une startup. Une entreprise désireuse d'abandonner la sagesse commune pourrait savoir quelque chose sur le développement de logiciels que la plupart des entreprises ne connaissent pas. Là encore, ils pourraient juste être des branleurs.


1
En effet, c'est exactement ce que Graham entend par " cela commence à ressembler à une entreprise où le côté technique, au moins, est dirigé par de vrais hackers " - une entreprise où au moins les technologues pourraient être assez intelligents pour être une véritable concurrence pour lui.
Ross Patterson

8
De nos jours, ce sont surtout des branleurs, car «choisir une langue obscure» est la mode du jour chez les branleurs et les dilettantes.
Hejazzman

2
Cela indique également que l'entreprise est tournée vers l'intérieur et se concentre sur «comment construire» plutôt que «quoi construire». Ces entreprises n'attirent pas beaucoup de clients.
James Anderson

13

Je vois les commentaires de PG plus sur l'attitude que sur les spécificités de la langue. Les personnes ayant une mentalité informatique interne jouent la sécurité. Ils utilisent des technologies à faible risque, ont des processus pour minimiser les risques et adoptent la stratégie à faible risque. Ils sont trop occupés à s'inquiéter de leur propre déjeuner pour manger le vôtre.

Les gens à la pointe du progrès (python 2003) sont ceux dont il faut s'inquiéter. Ils ont faim. Ils prennent des risques. Ils sont curieux intellectuellement. Le même type de personne qui se lève tard pour apprendre une nouvelle langue passionnante est le type qui pourrait bouleverser votre industrie avant vous.


4
Bien sûr, ils pourraient aussi être avalés entiers par l'un de ces risques qu'ils ont pris ...
Michael Borgwardt

3
"" "Les gens à la pointe du progrès (python 2003) sont ceux qui doivent inquiéter. Ils ont faim. Ils prennent des risques. Ils sont intellectuellement curieux." "" - ou ils sont des victimes de la mode utilisant le dernier langage à la mode, et ont pas de contact avec la pragmatique du développement.
Hejazzman

2
Les deux sont vrais. C'est un jeu de nombres. Mais prenez l'extrême opposé. Parfois, les valeurs aberrantes explosent. Parfois, ils réussissent. Mais craindriez-vous jamais qu'un concurrent vous poursuive avec COBOL?
MathAttack

13

Graham signifie moins dangereux pour lui en tant que concurrent, pas seulement moins dangereux. Son point n'est pas que Java (ou C ++ en 2003, ou COBOL en 1980) est moins dangereux, mais plutôt que c'est normal , et qu'il y a de fortes chances que les entreprises à la recherche de telles compétences ne soient que des concurrents moyens. Mais les entreprises qui recherchent des talents forts dans des langues obscures (ou, plus exactement, plus puissantes et moins connues) sont des entreprises à surveiller.

Et oui, cela est parfaitement logique aujourd'hui. C'était parfaitement logique bien avant que Graham ne l'écrive, nous ne parlions tout simplement pas de Java à cette époque.


6
Si seulement nous n'avions pas à parler de Java de nos jours.
DeadMG

8

Voyons quelles langues ont été utilisées pour la première fois par des startups performantes. Une liste non scientifique, du haut de ma tête. Une recherche randomisée appropriée serait préférable si quelqu'un avait l'énergie.

  • Facebook: PHP
  • Stackexchange: C #
  • Google: Java et Python
  • Twitter: Ruby on Rails

Donc, probablement, nous concluons que Facebook et Stackexchange ne représentaient aucune menace pour leurs concurrents. Pas très convaincant.


Voyons si Paul Graham y croit de nos jours. Il a cofondé YCominator qui finance des startups. La page d'accueil répertorie certaines de leurs startups réussies. Je les ai parcourus dans l'ordre, essayant très rapidement de rechercher les langues qu'ils utilisaient au début.

Eh bien, il y a certains signes d'une préférence pour les langues relativement obscures et sans doute puissantes. Mais Flash, PHP et ASP classique sont également répertoriés.


C'est un essai . C'est un coup de pouce hyperbolique pour un langage relativement obscur qu'il aime, avec des conseils sous-jacents selon lesquels les startups devraient aimer leur technologie et aller aussi vite qu'elles le peuvent. C'est suffisant.


3
Reddit a commencé en Lisp, mais ils sont allés réécrire le tout en Python assez tôt car personne ne pouvait comprendre le Lisp.
Mason Wheeler

Google utilise beaucoup de langues pour beaucoup de choses différentes. Ils utilisent C ++ pour la plupart de leurs produits de base comme la recherche, le chrome, etc.
mike30

@Mike La question concerne les startups. Lorsque Google était une startup, les premières langues utilisées étaient Java et Python.
MarkJ

6

Un développeur moyen utilise des outils moyens, car il ne voit pas la valeur des outils plus puissants:

«Tant que notre hypothétique programmeur Blub regarde dans le continuum de puissance, il sait qu'il regarde vers le bas. Les langues moins puissantes que Blub sont évidemment moins puissantes, car il leur manque une fonctionnalité à laquelle il est habitué. Mais lorsque notre hypothétique programmeur Blub regarde dans l'autre direction, dans le continuum de puissance, il ne se rend pas compte qu'il lève les yeux. Ce qu'il voit n'est que des langues étranges. Il les considère probablement comme équivalents en puissance à Blub, mais avec tous ces autres trucs poilus également. Blub est assez bon pour lui, car il pense à Blub. »- Paul Graham, Beating the Averages .

(Je souligne.)

Plus le langage est puissant, moins les développeurs vont l'utiliser et moins il sera courant. La popularité est donc une bonne mesure de la distance entre la puissance d'une langue et la moyenne. Plus le langage est obscur, meilleure est la chance que le développeur qui l'utilise sache ce qu'il fait et l'a choisi pour une bonne raison par rapport à ses pairs habituels - et un concurrent avisé est dangereux.


3
Ce n'est pas nécessairement vrai du tout. L'outillage, la publicité, les bibliothèques existantes et le matériel pédagogique de qualité peuvent également modifier la popularité d'une langue.
DeadMG

@DeadMG Eh bien, oui, bien sûr, la puissance expressive n'est pas le seul facteur. Je suppose que j'ai fait l'hypothèse tacite que toutes les langues de la conscience commune sont à peu près au même niveau en termes de marketing, d'outils et de documentation; sinon ils ne seraient pas du tout raisonnablement comparés. Enfer, même les préférences personnelles y sont pour beaucoup. Si vous savez que Haskell est meilleur pour certaines tâches mais que vous aimez vraiment C, alors vous pourriez coder quelque chose en C pour le mieux.
Jon Purdy

Je suppose que j'ai fait l'hypothèse tacite que toutes les langues de la conscience commune sont à peu près à égalité en termes de marketing, d'outils et de documentation ... - Et vous auriez tort de le faire. Bien mal, en fait.
Jim

1
@JimG. Pourriez-vous donner un exemple précis? Compte tenu de l'indice TIOBE, tous les 10 premiers et la plupart des 50 premiers semblent comparables dans ces domaines. En outre, les gens font bien des comparaisons de fonctionnalités entre des langues qui sont très différentes dans leur pouvoir expressif, alors pourquoi ne pas faire de même pour les autres aspects?
Jon Purdy

5

Le choix de la langue est difficile pour une startup. Beaucoup de très bonnes startups choisissent des langues "communes" pour la rapidité de mise sur le marché, la familiarité du fondateur et la facilité de recrutement futur.

Choisir la langue la moins utilisée envoie de bons signes. Cela signifie que vous êtes prêt à prendre le développement au sérieux et à vous efforcer d'embaucher des programmeurs spécialisés. Ce ne sont que des signaux, une start-up est plus que son choix dans la langue.

En fin de compte, votre choix de langue doit être évalué correctement dans votre contexte. Facebook, par exemple, a bien utilisé php qui n'est généralement pas considéré comme un langage très évolutif


1
+1 si ce n'est que pour l'euphémisme "Facebook a bien fait".
MarkJ

5

Allez demander aux meilleurs et aux pires programmeurs que vous connaissez, selon les critères que vous aimez, quelles autres langues ils connaissent. Maintenant, écrivez une offre d'emploi pour attirer la première et vous avez votre réponse. Même si votre application est en C ++, vous obtiendrez une meilleure classe de programmeurs si vous embauchez ceux qui connaissent des langues qui ne sont pas enseignées à l'école.


2
-1: Hein? Désolé, tu m'as perdu.
Jim G.

4

Il y a deux choses différentes qui devraient vous inquiéter si un concurrent utilise un langage inhabituel:

  • Avantage de productivité - Il y a des avantages et des inconvénients de langages inhabituels, mais en supposant que la concurrence a bien choisi pour leur domaine de problème donné, ils pourraient bien avoir un véritable avantage de productivité. Les capacités de méta-programmation dans Lisps, par exemple, vous donneront probablement un avantage réel et substantiel partout où vous aurez besoin de faire une quantité importante de génération automatique de code à la volée.
  • Avantage culturel - si une entreprise utilise un langage inhabituel intéressant les grands pirates, elle est probablement en mesure d'attirer et de retenir de grands pirates. Les entreprises vivent et meurent en fonction de la qualité de leur personnel, donc si cela se traduit par un avantage à long terme sur les talents, cela peut être vraiment significatif.

Ces deux avantages peuvent ne pas s'appliquer dans une situation donnée. Par exemple, une startup pourrait facilement adopter un langage «parce que c'est cool» sans vraiment se demander si c'est le bon choix. Ils peuvent facilement faire des erreurs d'embauche. Ils peuvent facilement se tirer une balle dans le pied en abusant d'un langage "puissant".

Mais si un concurrent choisit une langue inhabituelle et l'utilise bien, alors oui, vous pourriez bien avoir une menace importante sur vos mains.

Je pense que ce principe est assez intemporel et est aussi vrai maintenant qu'il l'était en 2003 - des langages et des paradigmes spécifiques peuvent aller et venir, mais l'idée de choisir un langage puissant et expressif qui convient à votre domaine de problème plutôt qu'un langage générique, sûr et à usage général méritera probablement toujours un examen sérieux.


0

Si vos clients ne sont pas enfermés, alors oui . Vous devriez vous inquiéter des concurrents utilisant des langages puissants.

Java, C #, C ++, sont relativement verbeux et ont des cycles d'édition / test relativement lents. Cela limite la vitesse à laquelle même les développeurs les plus rapides peuvent fournir des fonctionnalités. Des langages plus expressifs, avec une puissante méta-programmation intégrée et un temps de compilation nul, permettent aux développeurs experts de créer des fonctionnalités aussi rapidement que possible. Si vous êtes dans une course pour la part de marché, avec une énorme récompense pour le gagnant, il est logique d'embaucher les meilleurs développeurs que vous pouvez trouver et d'utiliser la langue qui les laissera aller le plus vite. Vous pouvez vous soucier de l'évolutivité plus tard.


1
-1: C #, lorsqu'il est écrit avec les bibliothèques Visual Studio, Resharper, LINQ et .NET 4.0 a des cycles d'édition / test lents par rapport aux autres langages?
Jim

1
@Jim: je ne sais pas quels sont vos comparateurs, mais par rapport à Ruby, Groovy, Clojure et à d'autres langages dynamiques modernes que j'ai utilisés, C # est certainement plus proche de Java et C ++ en termes de style de développement et de vitesse d'itération. YMMV mais je ne pense pas que votre downvote soit particulièrement mérité - la caractérisation de l'OP est globalement juste. Essayez les "langues expressives", vous pourriez être surpris de ce qui est possible .....
mikera

@ Jim G., oui, comparé à Common Lisp, le cycle d'édition / test C # est lent. Vous ne pouvez pas modifier un système en cours d'exécution. Et vous devez écrire beaucoup plus de code en C #, ce qui ralentit encore plus les choses.
SK-logic

1
Non, par exemple, Erlang permet la modification du runtime et est un langage compilé.
Ricky Clarkson

2
@JimG., Common Lisp est un langage compilé (enfin, la plupart des implémentations sont de purs compilateurs). La compilation incrémentale permet de faire toutes les mêmes astuces que les interprètes, alors qu'avec une compilation séparée, c'est à peine possible.
SK-logic
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.