Developpez.com

Le Club des Développeurs et IT Pro

Comment repérer la crème des développeurs ?

Pour un docteur en informatique, les programmeurs les plus doués apprennent des langages ésotériques

Le 2013-06-25 10:06:57, par Stéphane le calme, Chroniqueur Actualités
Paul Graham est un investisseur capital-risque et un programmeur Lisp. Il y a neuf ans de cela, ce docteur en informatique diplômé de Harvard soutenait « qu'il serait plus aisé d’avoir des programmeurs intelligents pour travailler sur des projets Python que sur des projets Java ».

Une phrase choc qui avait provoqué la polémique, mais Graham a invité tout un chacun à ne pas la prendre au premier degré, expliquant que « ce n'est pas que les programmeurs Java sont idiots, mais les programmeurs Python sont futés. Apprendre un nouveau langage de programmation c'est beaucoup de travail. Et les gens n'apprennent pas Python pour obtenir un travail ; ils l'apprennent parce qu'ils aiment sincèrement programmer et ne sont pas satisfaits des langages qu'ils connaissent déjà. »


À l'époque, Python n'était pas aussi populaire que Java et sur le marché de l'emploi, les entreprises ne se bousculaient pas pour demander des développeurs dans ce langage. Pourtant, certaines d'entre elles ont initié de développer des logiciels dans des langages ésotériques, n'attirant alors que ceux qui se sont donnés la peine d'apprendre ce langage qui sont, selon Graham, les meilleurs programmeurs. Il a baptisé ce phénomène le « paradoxe Python ».

Côté développeur, ce phénomène était encore plus accentué puisque, pour accéder à un bon emploi, il devrait « apprendre un langage qu'on apprend pas seulement pour avoir un travail »

Certaines sociétés très prisées par les développeurs utilisaient même cet atout comme critère de sélection ; Google par exemple publiait des offres d'emploi Java et demandait une expérience en Python.

Qu'est ce qui a motivé cet intérêt porté à Python ? Un des amis de Graham qui a fait le tour des langages de programmation les plus populaires et qui emploie Python pour la plupart de ses projets donne comme raison principale l'aspect du code source. Raison qui peut sembler légère de prime abord mais Graham explique que « quand vous programmez, vous dépensez plus de temps à lire du code qu'à en écrire. Vous manipulez les blocs de codes source de la même manière qu'un sculpteur le fait pour des blocs d'argile. Donc un langage qui génère un code source désagréable à lire est aussi horripilant pour un programmeur que l'est une terre grumeleuse pour un sculpteur. »

Source : blog Paul Graham

Et vous ?

Partagez-vous le point de vue de Paul Graham ?

Sur le choix d'apprentissage d'un nouveau langage de programmation, pensez-vous comme son ami ?

Neuf ans plus tard quel est, selon-vous, le langage qui a repris le flambeau de Python ?
  Discussion forum
43 commentaires
  • Voyvode
    Membre émérite
    Envoyé par Paul Graham
    Et les gens n'apprennent pas Python pour obtenir un travail; ils l'apprennent parce qu'ils aiment sincèrement programmer et ne sont pas satisfaits des langages qu'ils connaissent déjà.
    Quelqu'un qui pratique par passion est souvent plus efficace que quelqu'un qui pratique seulement par obligation. Java étant plus corporate, c'est normal qu'on tombe sur plus de gens qui bossent dessus seulement par obligation.

    Envoyé par ami de Paul Graham
    Donc un langage qui génère un code source désagréable à lire est aussi horripilant pour un programmeur que l'est une terre grumeleuse pour un sculpteur.
    Cela dépend surtout du programmeur. Un code Python bourré de one-liners est infect. Un code Java avec des lignes à rallonge est abominable.

    Parmi les langages que j'ai pratiqué, j'aime indifféremment l'apparence de Python, Pascal, Java, Objective-C et même PL/SQL, je trouve qu'ils ont tous une esthétique visuelle différente. C'est comme la peinture, la musique ou les femmes : on a des goûts plus ou moins variés et exotiques.
  • Envoyé par Jere15

    En gros il fait l'hypothèse que python est mieux que java (ce qui reste à prouver), et que si tu n'arrives pas à résoudre un problème avec java, (ou que tu ne t'y sens pas bien), si t'es intelligent tu passes à python...
    Euh... ce n'est absolument pas ce qu'il dit.

    Il affirme juste que des compétences en Java sont beaucoup plus demandées sur le marché du travail que des compétences en Python (difficile de le contredire sur ce point). Il en tire la conclusion logique qu'il y a plus de développeurs choisissant Java juste pour avoir un job que de développeurs qui choisissent Python pour cette même raison. Donc, il est plus facile de trouver un développeur Python passionné puisque s'il choisit ce langage, c'est pour des raisons autres qu'alimentaires.

    Cela ne veut bien entendu pas dire que la communauté Java ne compte pas de développeurs passionnés, et encore moins que Python est meilleur que Java ou je ne sais quoi (ce qui est complètement débile, "meilleur" n'ayant aucun sens sorti d'un contexte précis. Un langage peut être un meilleur choix qu'un autre dans un contexte précis, mais "meilleur" dans l'absolu n'a pas de sens dans ce domaine)...
  • hn2k5
    Membre éclairé
    Moi j'ai connu des passionnés d'un langage ou d'un système, pour les faire bosser sur autre chose, je vous dis pas le calvaire.
    Il y a un certain équilibre à rechercher entre la passion, l'autonomie, la polyvalence, et encore ça dépend du secteur d'activité, du type de société, ...
    De toute façon, on est dans la théorie là. Les recruteurs que j'ai rencontré, il me semble qu'ils cherchaient souvent qqn qu'ils pouvaient mettre un peu partout, sans rechercher LA star qui connaît tout d'un langage. C'est peut-être particulier à certains secteurs, à certains types d'entreprises.
    J'imagine qu'un éditeur de logiciels spécialisé dans un certain langage/métier ne va pas embaucher un type avec des connaissances variées comme pourrait le faire une SSII qui bosse pour différents clients.

    Un bon développeur, c'est celui qui répond à votre besoin.
    Oula ! Ça c'est fort, du haut niveau ! A graver dans le marbre !


    Cdlmt
  • Luckyluke34
    Membre émérite
    ésotérique, adj : se dit d'un mode d'expression, d'une œuvre qui n'est compréhensible que des initiés ; hermétique, abstrus, abscons : Langage ésotérique.
    Je ne suis pas sûr que ça soit le bon adjectif pour qualifier Python s'il est si lisible que ça

    "Langage alternatif" me paraît un meilleur choix surtout si on veut éviter le cliché : langage incompréhensible => petit génie => crème des développeurs dans toutes les situations ever de la terre entière.

    Sinon 100% d'accord avec Voïvode : c'est un peu une banalité de dire que les gens qui font la démarche d'apprendre un autre langage (quel qu'il soit, "ésotérique" ou non) sont probablement plus passionnés et donc plus recherchés par les recruteurs car réputés plus efficaces.

    Le fait que ça soit Python ou autre chose (on pourrait dire Ruby, Scala ou Clojure aujourd'hui) reste un sous-produit assez aléatoire de ce phénomène.
  • el_slapper
    Expert éminent sénior
    (1) Le blog a 9 ans d'âge. Python et Java, donc, ne sont que des archétypes, il ne faut pas les juger comme tels.

    (2) L'idée n'est pas de dire que Python est supérieur à Java. L'idée est de dire qu'un programmeur qui fait des choses en plus de ce qu'on lui demande aura dans sa boite a outils plus d'éléments pour progresser que celui qui se contente de faire des piges dans le langage du jour.

    (3) Trouver des programmeurs de bon niveau, c'est d'une difficulté absolue. Il y a de nombreux marqueurs, mais la plupart sont de qualité dérisoire. La "Passion" est de qualité faible, mais comparé aux autres, c'est mieux que rien.
  • Arnard
    Membre émérite
    A la mention de langage ésotériques, j'étais parti à sacrifier ds corbeaux pour corriger mes bugs
  • ternel
    Expert éminent sénior
    "ésotérique" = "python"?
    On rêve ou quoi?

    Allez faire un tour sur esolangs.org ou mieux encore 99 bottles of beer

    Là vous aurez des langages ésothériques: en trinaire (malboge), sans variables (plusieurs), avec un des pingouins (goto++), dont le code source est une image (piet) ou encore en anglais intégral (Shakespear)
  • benjamin.morelle
    Membre à l'essai
    On en revient tjr a la même question, que-est-ce qu'un bon dev ?
  • fozzeuh
    Membre confirmé
    Je ne suis pas d'accord avec la personne qui a émis ce raisonnement car il peut y avoir des passionnés qui préfèrent connaitre tout de java et pas apprendre le python, apprendre un langage ne veut pas dire que l'on est passionné, juste qu'on veut découvrir ce langage.

    Pour moi trouver de bons développeurs ne revient pas à dire tu connais ça tu es bon et la passion pour le développement ça n'à rien avoir avec les langages appris ou non.
  • Bousk
    Rédacteur/Modérateur
    Envoyé par Agrajag
    Et au passage, c'est franchement de la m*** leur dictionnaires, ils peuvent pas faire des tableaux comme tout le monde?
    En tous cas un développeur qui me sort un truc pareil je le catégorise pas bon illico.
    Ne pas être conscient de la différence entre un dict/map et un tableau/array c'est assez..
    Sans compter qu'il y a 2 syntaxes très distinctes pour les créer {} et [] (contrairement à PHP, LUA et surement d'autres)
    L'accès aux membres est dans les 2 cas par l'opérateur [], comme dans... 99% des langages ? C++, JAVA, C#, ... tous les langages qui ont map et array dans leurs outils utilisent l'opérateur []