Le choix d’un langage influence le fun de votre carrière 32


Les langages de programmation sont censés être des technologies neutres, mais comme toute chose utilisée dans le monde réel pour des usages concrets et nombreux, l’humain finit par leur donner une orientation, une préférence.

De fait, chaque langage finit par être plus utilisé dans certains types de métiers ou d’activités, pour certains types de projets, dans certains environnements. Plus important encore, un langage appelle d’autres outils, et un certain type de collègue, et même si, comme d’habitude, la généralisation est un piège à con, il y a bien des stéréotypes visibles qui se dégagent.

Ainsi, Java et PHP sont des langages pour lesquels il est très facile de trouver du travail. Il y a une telle base de code là dehors qu’il y a des annonces partout, et tout le temps. En revanche, les environnements Java sont généralement très très lourds à manipuler. Pas en terme de performance (Java est aujourd’hui très rapide), mais en terme de charge de travail : énormément de configuration, beaucoup d’abstractions et de design pattern imbriqués, des APIs et des formats très verbeux…

Travailler dans un monde Java, c’est généralement travailler à un rythme lent, plus souvent dans des grosses boîtes, pour des systèmes assez larges avec un grosse inertie. Ne vous attendez pas à des Java-party avec vos collègues après le boulot.

PHP, c’est la même chose, avec des projets et composants plus simples (dans des entreprises de toutes tailles), et souvent bien plus dégueulasses. Non pas qu’on ne puisse pas écrire du PHP propre, mais 15 ans de PHP codé à l’arrache ne s’effacent pas avec quelques années de Symfony, et autre cakePHP. Du coup on hérite souvent d’un projet moche comme ta mère.

Bref, Java et PHP vous garantissent un job, mais les projets sont rarement marrants, et l’ambiance au taff sera pas pumped up. Par contre il y a de la doc et des tutos, même si généralement ceux pour PHP sont de meilleure qualité que pour Java (qui peuvent être assez indigestes).

Il y a une alternative intermédiaire : le C#. Beau langage, beaux outils, c’est propre sans être trop lourd, et la base de code est pas à vomir. Mais on reste dans le corporate, et la plupart du temps, sur du 98% Microsoft ou affiliés.

Après vous avez des langages spécialisés comme Erlang, Scala, Lisp. Là, trouver du taff sera généralement un challenge. Ce n’est pas le genre de truc qu’on voit partout. Et le niveau sera difficile : un débutant peut arriver avec la bite et le couteau dans un projet PHP, mais si vous vous pointez avec 3 mois d’expérience sur une gateway jabber haute tolérance, le bidouillage ça va pas le faire.

Ce sont des langages qu’il faut choisir si on aime le taff de haut niveau, la débrouillardise et les solutions intelligentes. En général les missions sont super intéressantes, mais la reconversion est dure. Par contre, vous rencontrerez des collègues qui valent le détour.

Puis il y a les langages de bas niveau, type C/C++. Aujourd’hui, c’est massivement des missions scientifiques ou de l’embarqué : analyse d’image, cartes électroniques, petites machines, etc. Il y a encore des trucs pas cool genre Windev (j’ai un pote coincé là dedans, c’est triste, fuyez ces annonces), mais ce n’est plus la majorité. Ces langages, c’est une question de tempérament. Est-ce que vous aimez la minutie ? L’efficacité des algos ? Le travail sous contrainte technique ? Si oui, alors ce genre de taff peut être très sympa. Sinon, choisissez un langage plus dynamique.

Ensuite il y a les langages de niches : Cobol, Power Builder, etc. Là c’est généralement des projets de merde très bien payés. Plus personne ne veut coder avec ces trucs, mais ça coûte trop cher à changer. Les jeunes sont acceptés, les formations offertes, le salaire de début de carrière est bon, mais par contre, le code est un truc de mémé. C’est pas mal pour commencer une carrière et se faire un peu de thune, mais faut savoir en sortir, et ça ne donne pas de bonnes habitudes en prog.

Et pour finir il y des langages dit “modernes” (ce qui est un abus… de langage, car ils ne datent pas d’hier) comme Python, Ruby ou Javascript. Le côté “moderne” vient surtout du fait qu’ils sont maintenant très adaptés à des projets modernes, où la souplesse de développement a priorité sur le reste des caractéristiques. Choisissez ces langages si vous visez des missions, principalement Web, sur des produits récents. Ce sont les communautés les plus sympas et dynamiques, ça brasse pas mal dans le milieu et c’est assez jeune. Mais un grand nombre de start up, donc il faut pas chercher la sécurité de l’emploi.

Une petite parenthèse pour Python tout de même : il n’est pas autant limité au Web et on le voit aussi beaucoup dans le secteur scientifique et bancaire. C’est sa versatilité et la facilité de reconversion qu’il offre qui me fait dire que c’est un très bon choix comme premier langage. Mais. Car il y a un “mais”. Trouver une offre Python sera plus difficile qu’une offre Ruby, et BEAUCOUP plus difficile qu’une offre PHP ou Java. Après perso je n’ai jamais connu le chômage.

Warning ! Il faut faire gaffe à se lancer dans le dev Web. C’est très tentant, mais contrairement aux autres carrières, ça veut dire une courbe d’apprentissage beaucoup plus longue. Vous ne pouvez pas juste apprendre votre langage, ses libs et son env et vous vendre comme “expert”.

J’ai laissé pas mal de truc de côté, comme l’objective C, Haskell, Smalltalk, le Bash, Perl et quelques milliers d’autres langages. On ne peut pas tout faire, et je voudrais surtout peindre un tableau global du marché. En me relisant, je me dis que c’est bourré d’idées reçues, qu’il y a plein d’exceptions, etc. Mais je pense que les infos données peuvent permettre à des gens qui se posent la question de l’orientation de prendre une décision moins mauvaise que “je lance un D20 et on verra bien”.

32 thoughts on “Le choix d’un langage influence le fun de votre carrière

  • Sam Post author

    Putain j’ai pondu un paté sans image en un gros bloc. Bon, tant pis, j’ai pas le temps de le rendre beau. pardon au familles, tout ça.

  • truxs

    Le problème du dev web c’est surtout que la technologie évolue constamment.
    Ce que tu as appris en C il y a 10 ans est toujours valable aujourd’hui.
    Alors qu’en web entre les nouveautés de css3, Les lib javascript (Jquery/angular/…), la mouvance Nosql etc ya un vrai travail de veille.

  • Snook

    Je confirme pour le développeur Python! C’est le langage que je préfère et j’aimerais trouver un boulot dans ce domaine! Mais il y a si peu d’offre! Reste le PHP…

  • AlexRNL

    On a le droit de troller sur les langages favoris de chacun après un article comme ça ? (venez récupérer vos arguments ici)

    :D

  • Sam Post author

    Cet article est un bel appeau à troll, donc je ne vais pas tamponner comme un porc les comments, ce serait hypocrite :-)

  • Teocali

    A noter que si cette article n’est pas forcément faux, faut éviter de le voir comme une généralité.
    Deux exemples :
    Mon dernier contrat était sur un vieux projet en Java, mais avec pas mal de potentielle (mise a jour des technos, ajout de nouvelle fonctionnalité avec des technos bien récente et tutti quanti) et l’équipe jeune, dynamique, motivés et sympathique.
    Là, je suis sur un projet C++/Qt, pas embarqué du tout, avec une IHM de folie et des technos assez récente dans le tuyau. par contre, l’equipe, bien que sympathique, est assez agée et les mecs ont fait toute leur carriere sur ce même projet… et ça se voit dans l’état d’esprit.

    A noter que je me permettrait de rajouter une généralité sur PHP, Java et C#/.Net : ce sont des langages maintenant demandés depuis un petit bout de temps et les écoles ont donc eu le temps de mettre a jour leur cursus. Par conséquence, vous avez plus de chances d’avoir une équipe “jeune”.

  • dormomuso

    “En général les missions sur super intéressantes”
    -> SONT…

  • Sam Post author

    Mais nan, mais nan. Sur super ! Tellement super que c’est au-dessus de super ! Non ? Ca passe pas ?

  • sil

    Les projets pur Python sont quand-même assez rares. Mieux vaut donc avoir une autre casquette où sa maîtrise est appréciable (C/C++, “Web”…).

  • deff

    “Omg” Typo “Omg”

    *’sur” -> sont
    *’indigestes’ /s

    antidote

    python <3
    C :-(

  • kontre

    L’humain est vraiment bizarre : il va repérer les petites erreurs au milieu du texte, mais il ne voit pas qu’il manque le 3e mot de l’article : “les langages [de] programmation”. J’ai passé un coup de polish, ça devrait aller mieux.

    Je confirme quelques impressions de l’article : le C c’est chiant et le python c’est fun !

  • Chassegnouf

    Pas grave, il est bien aussi ton article. Du moins il me plait bien.

    Va pas nous foutre une photo genre un-gars-qui-fait-du-yoga-à contre-jour-au-lever-du-soleil, juste pour sortir sur Google Images… ^^

    (Le client qui vient pour les articles de cul et qui lit quand même les trucs sur la prog.)

  • FX

    Python, y’a pas de lézard, c’est stylé!

    Difficile de trouver du boulot? En tout cas, il y a de plus en plus de gens qui en font, en particulier (dans mon domaine) parce que c’est un pont absolument génial entre les mecs qui font de la R&D et ceux qui font de la production. Alors que Matlab, euh, comment dire…

    <troll> …mais sinon, le VIMSCRIPT c’est l’avenir! </troll>

  • youpi

    Il y a quand même extrêmement peu d’offres Python dans le domaine du Web je trouve (ce qui est bien dommage). Et lorsqu’on est tout juste diplômé dans le domaine et qu’on aime ce langage ça fait quand même un peu peur…
    On se pose la question (enfin moi en tout cas je me la pose) de savoir s’il vaut mieux rester sur du langage plus populaire comme le PHP ne serait-ce que pour la sécurité de l’emploi…
    En tout cas si vous avez des avis là-dessus j’aimerais beaucoup les lire ! ;)

  • anomail

    Bah y’a de la ponctuation et des sauts de paragraphes, c’est déjà largement au dessus d’un skyblog moyen.

  • Lujeni

    @youpi Au contraire je trouve que de plus en plus d’offres s’orientent vers le web pour Python. Regarde sur l’AFPY par exemple.

    L’avenir c’est Flask/Bottle + AngularJS + mongoDB/couchBase

  • Luigi

    Pas un mot sur le FORTRAN ?

    Je me suis retrouvé face à ça dernièrement, c’est juste illisible et je me suis retrouvé à tout porter en python pour ne pas saigner des yeux…

  • Sam Post author

    Merci @anomail, je suis profondément rassurer d’être aussi des skyblogs. C’est mon objectif de vie :-)

    @Luigi: il parait qu’il y en a qui utilisent http://sourceforge.net/projects/pyfortran/ pour aider. Fortran, c’est un peu du loose-loose. Non seulement c’est du code de merde, mais en plus c’est sur des projets scientifiques que c’est le plus utilisé, donc on est même pas bien payé ^^

  • Luigi

    Mon commentaire était un peu du troll ;o) Manquait le smilley

    Merci pour le lien. Il y a aussi f2py (si jamais ça peut servir à quelqu’un) qui permet de wrapper du Fortran et de le rendre accessible en python. Ca demande néanmoins de compiler le Fortran avec un compilateur ad-hoc.

    PS : je suis salarié, payé pareil que je fasse du python ou du Fortran.

  • chassegnouf

    Et le turbopascal, ça existe encore ? Quid du turbopascal ? C’est ce que j’utilisais à l’époque où il y avait l’option Informatique au Bac, ça peut servir ?

  • H3

    Pour continuer dans le troll :

    Java saylebien, le raiste saylemal !

    Pardon au familles, tout ça, tout ça…

  • Sam Post author

    @chassegnouf : J’ai vu deux annonces pour du (turbo)pascal dans ma vie donc ça m’a pas l’air d’être très porteur, surtout à l’ère de QT, GTK et WX qui ont leur rad respectifs et des bindings dans de nombreux langages.

  • kontre

    Aha, le Fortran. Savez-vous pourquoi il est difficile d’avoir les packages numpy et scipy en 64 bits sur Windows ? Parce qu’il n’y a pas de putain de compilateur fortran 64bits opensource sous windows : http://spyder-ide.blogspot.fr/2012/08/scientific-python-distribution-for.html. Et pour lire des gros fichiers en memory mapping, le 64 bits est nécessaire. Donc même en python, le fortran vient foutre la merde.

    Je crois que f2py est le plus utilisé des deux. Mais je veux pas y toucher.

  • Luigi

    Merci Kontre pour le lien. Je connaissais spyder et python(x,y), mais pas winpython. Quelqu’un peut lui mettre un tampon de remerciement ?

  • sil

    En informatique (et en ingénierie en général), on a soit un boulot de merde payé à prix d’or, soit un boulot en or payé un prix de merde.

  • qdii

    Je suis développeur C++ ici. À côté de l’embarqué et de l’algo, il y a aussi tout le monde de l’imagerie dans le C++. Tout le traitement d’image, toute l’industrie des jeux-vidéo en fait partie. Tout ce qui est système d’exploitation, toolchains, aussi.

  • JEDI_BC

    Je ne pense pas qu’il faille se contenter d’un seul langage, même influent, pour faire sa carrières. En plus la polyvalence est plus que vendeur. Il y a certe toujours des périodes ou un langage X ou une techno Y est à la mode et toute les boites cherchent ces compétences mais au final la demande dépasse toujours l’offre, les salaires exploses et les boites cherchent ailleurs.
    Perso je suis dev PHP (depuis 12 ans), j’y prends grand plaisir, surtout vu les dernières évolutions et la progression générale de la communauté, mais je commence à vouloir aller plus loin que ne me permet le langage alors je regarde ailleurs. Mes objectifs sont de monter en compétences en python, scala et C/Go. Par plaisir personnel mais qui sait, peut être avec une nouvelle carrière à la clé ;-)

  • Sam Post author

    Il est vraiment indispensable de connaitre plusieurs langages, ne serait-ce que pour améliorer ses performances dans son langage principal en apprenant d’autres paradigmes. Et puis aucun langage n’est immortel, il faut se prémunir de sa fin. Enfin, si on veut changer de types de projets, avoir plusieurs cordes à son arc ouvre plus de porte. Je suis chaud sur les métaphores aujourd’hui !

  • Baltak

    Je suis arrivé dans le PHP complétement par hasard en sortant des mes études, mais j’ai toujours aimé programmer en Java, trouvant le langage plus structuré.

    Mon premier job a été de reprendre un vieux projet PHP et oui c’était pas beau a voir, pas de MVC, pas de framwork…
    Mais avec mes connaissances Java (et google) je m’en suis sorti plutôt honorablement…
    J’ai changé de boite ou le code est plus propre, les framework utilisés. Bref où tout va mieux.

    Tout ca, pour dire merci pour ton article car je suis toujours en train de me demander si j’ai fais le bon choix. Car Php ressemble de plus en plus a “prendre des donnés dans un DB, les travailler et les affichers”. J’ai l’impression que sur Java il y a plus de choses interessantes ou de possiblité à faire…

  • Magik

    @Baltak : drôle de lire ton commentaire car je suis dans le même cas. J’en suis à ma deuxième année de taff après études d’ingé. Je suis d’abord parti sur du PHP/Sf2, puis, après un an là dessus, j’en suis arrivé à la même conclusion (on prend des données, on les traite (vite fait) et on les envoi). Du coup j’ai changé de boîte et je suis allé sur du Java, langage que j’affectionnais tout particulièrement pendant mes études. L’équipe a pris 10-15 ans d’âge moyenne, mais le projet est plus complexe (multithreading etc) et donc présentant plus de challenge pour moi. Du coup, pour le moment il est un peu tôt pour savoir si j’ai bien fait de changer, on verra.

    Je trouve cela tout de même super dommage qu’une personne sensée être ingénieur soit obligé de se spéciliser dans une techno pour trouver du taff et connaître des augment de salaire. Je pensais qu’un ingé était une personne polyvalente capable d’apprendre sur le tas. Mais bon, on en veut toujours plus et le chômage augmente, du coup quelqu’un qui a passé 5 ans sur du Spring passera avant qu’un autre sortant du monde .NET, logique implacable, mais triste.

    Bisous.

Leave a comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.