Ces dernières années, une tendance où tout le monde écrit du code a soudainement déferlé sur le monde entier ; même le président américain Obama écrit du JavaScript. Mais en tant que développeur qui gagne sa vie en écrivant du code (et en naviguant au hasard sur Internet pendant les heures de travail) — développeur étant le terme plus tendance pour « ingénieur logiciel » — je veux rappeler à ceux qui veulent apprendre à programmer une chose importante : choisissez soigneusement votre premier langage de programmation.

Dans le cercle des ingénieurs logiciels (appelés « programmeurs » ou « code farmers » en Chine), le phénomène de gens de la même profession qui se méprisent les uns les autres est très répandu. Dans chaque domaine de la programmation, il existe des « chaînes de mépris » complexes. Des langages de programmation, éditeurs et plateformes jusqu'au fait de savoir si { s'écrit sur la même ligne que if ou sur la ligne suivante, les gens des différents camps ont l'habitude de se mépriser mutuellement. Parmi ces sujets, « Quel langage de programmation utilisez-vous ? » est la chaîne de mépris à laquelle tout le monde participe avec le plus d'enthousiasme. Donc, pour les débutants qui entrent tout juste dans le domaine de la programmation, si vous ne choisissez pas votre langage avec soin, vous risquez de vous retrouver en bas de la chaîne de mépris dès le départ.

À quel point la chaîne de mépris des ingénieurs logiciels est-elle exactement intense et cruelle ?

63918611gw1enbo8tfia9j20jg0dw753

Langages de programmation

Les ingénieurs qui comprennent la programmation fonctionnelle méprisent les ingénieurs qui parlent toujours de patrons de conception ; les ingénieurs qui parlent toujours de patrons de conception méprisent les ingénieurs qui disent : « Écrire comme ça, ce n'est plus de l'OO ! » ; les ingénieurs qui disent : « Écrire comme ça, ce n'est plus de l'OO ! » méprisent les ingénieurs qui disent : « Hein ? Orienté objet ? Il ne suffit pas d'écrire le code répété sous forme de fonction ? » ; les ingénieurs qui disent : « Hein ? Orienté objet ? Il ne suffit pas d'écrire le code répété sous forme de fonction ? » méprisent les ingénieurs qui copient-collent le même code partout ; les ingénieurs qui copient-collent le même code partout méprisent les chefs de projet.

Les ingénieurs qui écrivent dans des langages statiques méprisent les ingénieurs qui écrivent dans des langages dynamiques.

Les ingénieurs qui écrivent en langage assembleur méprisent les ingénieurs qui écrivent en C ; les ingénieurs C méprisent les ingénieurs C++ ; les ingénieurs C++ méprisent les ingénieurs Java et C# ; les ingénieurs Java et C# se méprisent mutuellement ; les ingénieurs C# méprisent les ingénieurs Visual Basic et les ingénieurs qui prononcent C# « C bien » ; les ingénieurs qui prononcent C# « C bien » méprisent les designers qui pensent que HTML est un langage de programmation.

Les ingénieurs qui utilisent Python 3 méprisent les ingénieurs qui utilisent encore Python 2 ; les ingénieurs qui utilisent Python 2 méprisent les ingénieurs qui rencontrent UnicodeEncodeError.

Les ingénieurs qui développent pour iOS méprisent les ingénieurs qui développent pour Android ; les ingénieurs qui développent pour Android méprisent les ingénieurs qui développent pour Windows Phone.

Les ingénieurs avec un an d'expérience en Swift méprisent les ingénieurs avec cinq ans d'expérience en Objective-C ; les ingénieurs qui écrivent en Objective-C méprisent les ingénieurs qui utilisent PhoneGap pour empaqueter des applications en applications natives.

Les ingénieurs qui utilisent React.js méprisent les ingénieurs qui utilisent AngularJS ; les ingénieurs qui utilisent AngularJS méprisent les ingénieurs qui utilisent jQuery ; les ingénieurs qui utilisent jQuery méprisent les ingénieurs qui utilisent Vanilla JavaScript ; les ingénieurs qui utilisent Vanilla JavaScript méprisent les utilisateurs d'IE.

Les ingénieurs qui savent utiliser un débogueur méprisent les ingénieurs qui utilisent assert ; les ingénieurs qui utilisent assert méprisent les ingénieurs qui savent seulement utiliser print() ; les ingénieurs qui déboguent avec console.log() méprisent les ingénieurs qui déboguent avec alert().

Les ingénieurs qui écrivent en Ruby on Rails méprisent les ingénieurs qui utilisent tous les autres langages.

Quoi ? Vous avez dit Ruby ? Ruby n'est qu'un framework de Ruby on Rails, pas un langage de programmation du tout !

Tous les ingénieurs méprisent les ingénieurs PHP.

Outils

Les ingénieurs qui utilisent un éditeur de texte méprisent les ingénieurs qui utilisent un IDE.

Les ingénieurs qui utilisent Vim méprisent les ingénieurs qui utilisent Emacs ; les ingénieurs qui utilisent Emacs méprisent les ingénieurs qui utilisent Vim ; les ingénieurs qui utilisent Vim ou Emacs méprisent les ingénieurs qui utilisent n'importe quel autre éditeur ; les ingénieurs qui utilisent Atom, VSCode ou Sublime Text méprisent les ingénieurs qui utilisent Windows Notepad.

Les ingénieurs qui utilisent Android Studio ou IntelliJ IDEA méprisent les ingénieurs qui utilisent Eclipse ; les ingénieurs qui utilisent Eclipse méprisent les ingénieurs qui utilisent NetBeans.

Les ingénieurs qui indentent le code avec des espaces méprisent les ingénieurs qui indentent avec des tabulations ; les ingénieurs qui indentent avec des tabulations méprisent les ingénieurs qui mélangent des espaces et des tabulations pour l'indentation.

Les ingénieurs qui utilisent Git ou Mercurial méprisent les ingénieurs qui utilisent Subversion ; les ingénieurs qui utilisent Subversion méprisent les ingénieurs qui utilisent Dropbox pour la gestion de versions ; les ingénieurs qui utilisent Dropbox pour la gestion de versions méprisent les ingénieurs qui ne savent même pas ce qu'est la gestion de versions.

Les ingénieurs qui connaissent GitHub méprisent les ingénieurs qui ne connaissent pas GitHub ; les ingénieurs qui ont des dépôts privés sur GitHub méprisent les ingénieurs qui utilisent BitBucket pour des dépôts privés gratuits.

Les ingénieurs qui utilisent Zsh méprisent les ingénieurs qui utilisent Bash ; les ingénieurs qui utilisent Bash méprisent les ingénieurs qui utilisent Cygwin ; les ingénieurs qui utilisent Cygwin méprisent les ingénieurs qui utilisent Command Prompt ; les ingénieurs qui utilisent Command Prompt méprisent les ingénieurs qui utilisent des interfaces graphiques.

Les ingénieurs qui utilisent IRC méprisent les ingénieurs qui utilisent HipChat ; les ingénieurs qui utilisent HipChat méprisent les designers et les chefs de projet qui utilisent Slack.

Les ingénieurs qui rédigent la documentation en reStructuredText méprisent les ingénieurs qui rédigent la documentation en Markdown ; les ingénieurs qui rédigent la documentation en Markdown méprisent les ingénieurs qui rédigent la documentation en HTML ; les ingénieurs qui rédigent la documentation en HTML méprisent les ingénieurs qui ne rédigent pas de documentation ; et les ingénieurs qui rédigent la documentation en LaTeX méprisent tous les ingénieurs.

Les ingénieurs qui utilisent Nginx méprisent les ingénieurs qui utilisent Apache ; les ingénieurs qui utilisent Apache méprisent les ingénieurs qui utilisent IIS.

Les ingénieurs qui utilisent Spark méprisent les ingénieurs qui utilisent Hadoop ; les ingénieurs qui utilisent Hadoop méprisent les ingénieurs qui utilisent Hadoop pour traiter seulement quelques GB de données ; les ingénieurs qui utilisent Hadoop pour traiter seulement 1GB de données méprisent les ingénieurs qui utilisent NoSQL ; les ingénieurs qui utilisent NoSQL méprisent les ingénieurs qui utilisent des bases de données relationnelles ; les ingénieurs qui utilisent des bases de données relationnelles méprisent les chefs de projet qui utilisent Excel.

Les ingénieurs qui utilisent Docker pour déployer des serveurs méprisent les ingénieurs qui utilisent Ansible ou Puppet pour déployer des serveurs ; les ingénieurs qui utilisent Ansible ou Puppet pour déployer des serveurs méprisent les ingénieurs qui utilisent Fabric pour déployer des serveurs ; les ingénieurs qui utilisent Fabric pour déployer des serveurs méprisent les ingénieurs qui se connectent manuellement en SSH.

OS

Les ingénieurs qui utilisent Mac OS X méprisent les ingénieurs qui utilisent Linux ; les ingénieurs qui utilisent Linux méprisent les ingénieurs qui utilisent Windows.

Les ingénieurs qui utilisent Debian méprisent les ingénieurs qui utilisent Ubuntu ; les ingénieurs qui utilisent Ubuntu méprisent les ingénieurs qui utilisent des versions non LTS d’Ubuntu.

Matériel

Les ingénieurs qui utilisent un MacBook Pro Retina méprisent les ingénieurs qui utilisent un MacBook Air ; les ingénieurs qui utilisent un MacBook Air méprisent les ingénieurs qui utilisent un ThinkPad ; et les ingénieurs qui utilisent un Raspberry Pi méprisent les ingénieurs qui utilisent un MacBook Pro Retina.

Les ingénieurs qui utilisent un clavier Dvorak méprisent les ingénieurs qui utilisent un clavier Mac ; les ingénieurs qui utilisent un clavier Mac méprisent les ingénieurs qui utilisent un clavier QWERTY ; les ingénieurs qui utilisent un clavier QWERTY méprisent les ingénieurs qui ne savent pas ce qu’est un clavier QWERTY ; les ingénieurs qui ne savent pas ce qu’est un clavier QWERTY méprisent les designers qui utilisent une tablette graphique.

Les ingénieurs qui s’assoient sur des chaises Aeron méprisent les ingénieurs qui s’assoient sur des chaises de bureau ordinaires ; les ingénieurs qui s’assoient sur des chaises de bureau ordinaires méprisent les chefs de produit qui s’assoient aussi sur des chaises de bureau ordinaires ; et les ingénieurs qui écrivent du code debout méprisent les ingénieurs qui s’assoient sur des chaises Aeron.

Lieu de travail

Les ingénieurs qui travaillent sur le matériel méprisent les ingénieurs qui travaillent sur le logiciel.

Les ingénieurs qui écrivent des OS méprisent les ingénieurs qui écrivent pour le Web ; les ingénieurs qui écrivent pour le Web méprisent les ingénieurs qui écrivent des applications de bureau.

Les ingénieurs backend méprisent les ingénieurs frontend.

Les ingénieurs et les designers se méprisent mutuellement.

Les ingénieurs qui croient au développement piloté par les tests méprisent les ingénieurs qui écrivent le code d'abord et ajoutent les tests ensuite ; les ingénieurs qui écrivent le code d'abord et ajoutent les tests ensuite méprisent les ingénieurs qui n'écrivent pas de tests ; les ingénieurs qui n'écrivent pas de tests méprisent les chefs de projet qui, bon sang, ne cessent de modifier les exigences au hasard.

Les ingénieurs sans certifications méprisent les ingénieurs qui ont acquis un tas de certifications.

Les ingénieurs qui portent des vêtements décontractés au travail méprisent les ingénieurs qui portent des costumes, et les ingénieurs qui portent des costumes au travail méprisent les ingénieurs qui portent des uniformes de service.

———

Si après avoir lu ces chaînes de mépris absolument horrifiantes ci-dessus, votre désir d'apprendre à coder n'a toujours pas été anéanti, alors je dois vous rappeler la chose la plus importante : trouvez d'abord une petite amie, puis apprenez à écrire du code ; car une fois que vous devenez ingénieur logiciel, vous ne pourrez plus trouver de petite amie.

Source originale : http://vinta.ws/blog/695