MMA et coder même combat

Fabbook Life and Dev

Aujourd'hui je vais tenter un grand écart comme celui de Jean-Claude et il est particulièrement périlleux. Je vais comparer “l'art de coder” avec “l'art délicat du bourrage de pifs” plus communément appelé sport de combats ou MMA.

Étant moi-même un combattant depuis maintenant une vingtaine d'années je remarque de nombreuses similitudes entre mon activité qui me rapporte de l'argent et celle qui me rapporte des bleus, petit tour des similitudes.

L'ultime est une illusion

Le sport de combats ultime n'existe pas

Certains arts martiaux me font doucement rigoler, ils sont pour certains la seule et unique solution à tous les types d'agression. Pour n'en citer que quelques'uns et troller un peu kung-fu, Krav-maga, Karaté, Blague jaune etc … Ces sports sont éloignés de toutes pratiques sportives car jugés trop “dangereux”. C'est là que le bas blesse, car la pratique sportive est la seule manière de tester si ce que l'on apprend à du sens. De plus ces arts martiaux sont sur-représentés au cinéma et les médias, du coup on en vient à imaginer que le kung fu sert à quelque chose. Par contre il y a beaucoup de sports que je porte en haute estime, boxe, judo, jjb, grappling, lutte etc … des sports encrés dans une pratique sportive. Par contre chaque sport sera adapté à une situation particulière, la boxe pour le combat à distance, la lutte ou le judo pour contact debout et le jjb ou grappling pour le combat au sol.

En tant que combattant il faut toujours chercher à avoir le panel le plus large. Je suis pour ma part un très mauvais boxeur, mais je suis obligé de travailler cette faiblesse et en combat je chercherai à boxer le moins longtemps possible, mais il faut malgré tout que j'apprenne ce “noble art”.

En bref quand un art martial proclame qu'il a le “doigt qui tue” allez donc voir ailleurs.

La technologie ultime n'existe pas

Pour les technos c'est la même chose. Il y a des usages qui rendent certaines technologies plus adaptées que d'autres. Si vous voulez faire un système de chat, il faudra vous pencher sur du javascript. Si vous avez des ressources limitées il vous faudra probablement faire du C. Bref il existe à chaque problème une solution technique mais aucune technologie ne peux résoudre tous les problèmes.

Keep it simple stupid

Définissez des techniques simples pour gagner, mais tenez vous-y.

Les trucs les plus simples et les plus stupides sont ceux qui marchent le mieux. En combat je ne fais pas de techniques ultra sophistiquées mais des choses simples et qui fonctionnent.

La solution la plus simple est toujours la meilleure

Les choses les plus simples ont plus de chance de fonctionner et être maintenable. Ce principe a été maintes fois discuté et utilisé dans le domaine du développement.

Restez concentré

Ne perdez pas votre sang-froid

En combat, si vous perdez votre sang-froid, vous êtes cuits. Par exemple j'écrase la gorge de mon adversaire pour qu'il oublie ses bras et ainsi pouvoir effectuer une clef. Cela marche très bien contre les débutants, mais un type expérimenté ne se laissera pas aussi facilement berner. En MMA les coups portés au visage sont là pour déconcentrer votre adversaire et vous offrir de nouvelles opportunités. Par contre quand c'est votre tour d'en prendre plein la tête, ne perdez pas de vue ce qui a le plus de valeur.

La panique est mauvaise conseillère

Quand vous avez un super bug dans votre application, si vous commencez à paniquer vous êtes cuits. En effet dans ces situations on a tendance à aller au plus vite pour résoudre le problème en s'attaquant simplement à un des effets secondaires et non la cause du problème. Vous pouvez être sûr que votre problème vous reviendra plus tard sous une autre forme mais encore plus complexe. Bref respirez et concentrez-vous et ne vous laissez pas envahir par la panique.

Prenez soin de votre outil de travail

Soignez-vous

N'attendez pas d'être en “burn out” pour commencer à prendre soin de vous. Les combattants qui durent sont ceux qui peuvent prendre soin de leur corps. Après tout c'est votre outil le plus précieux, poussez le au bout de ses limites mais pas jusqu'à la rupture.

Soignez votre code

Dès que votre code commence à ne plus être clair où que les noms de vos variables n'ont plus un nom adapté,renommez, factorisez sinon vous risquez de terminer dans une mélasse infâme qui laissera votre projet à l'arrêt. Les projets qui durent sont ceux dont on prend soin.

Trouvez vous des mentors

Votre coach et vos partenaires travaillent avec vous

Contrairement à ce qui est écrit sur le papier, les sports de combat sont des sports collectifs. Pas dans le sens traditionnel du terme, mais vous avez besoin des autres pour progresser, vous avez besoin de mentor. Vous avez aussi besoin de transmettre ce que vous savez. On est vraiment dans l'échange et chercher à trouver ce que chacun peut vous apporter et ce que vous pouvez apporter.

Communiquez

Contrairement au sport celui qui est au dessus de vous ne sera pas forcément là pour vous faire progresser. Les managers ne savent pas programmer (sauf rares exceptions), cherchez plutôt les mentors auprès de vos collègues de travail, dans les livres ou sur internet.

Faites les choses dans l'odre

Les finitions se font à la fin

Cela ne sert à rien de partir bille en tête en étranglement, en effet si vous n'avez pas controlé votre adversaire vos efforts seront vains. C'est un défaut très récurrent chez les débutants qui cherchent la soumission avant d'avoir controlé quoi que ce soit. Quand vous faites une soumission il faut que votre adversaire n'est pas d'autre échapatoire que de taper pour son salut. Bref comme son nom l'indique une finition se fait à la fin.

Faites les couches basses parfaitement

Les couches basses qui font le coeur de votre application doivent être traitées avec beaucoup de soin. Test unitaire, test d'intégration etc … L'interface n'en sera que plus facile. Ne partez pas de l'interface, cela n'amène rien de bon. Faites cela à la fin.

Rester humble

  • Car il y aura toujours un type pour vous botter les fesses quelque part
  • Car il y aura toujours un type qui pourra résoudre votre problème plus vite que vous

Le mot de la fin

Ce grand écart étant fait, j'espère avoir pu donné envie soit d'enfiler des gants ou de taper du code. Et vous c'est quoi votre préférence ?