Effet Dunning-Kruger : Ou comment atteindre ses objectifs

Une fois n’est pas coutume, je vous propose aujourd’hui un billet personnel : Comment réussir à atteindre ses objectifs, ou comment j’ai réussi à atteindre les miens.
Clair que je ne vais pas faire de vous plus que vous n’êtes déjà, mais peut-être vous donner quelques pistes si jamais vous souffrez vous aussi des maux qui ne m’ont laissé tranquille qu’assez tard.

L’effet Dunning-Kruger

Il y a quelques jours, je lisais un article sur l’effet Dunning-Kruger, ou effet de sur-confiance : « Je peux faire un clone de Twitter en un week-end« . Je ne m’attarderai pas dessus, mais en gros l’auteur s’agace de voir sur les forums, des développeurs – sûrement amateurs – crier qu’ils peuvent reproduire des sites à succès comme Twitter. En voici l’introduction :

Il ne se passe pas un mois sans que je ne lise le commentaire d’un abruti qui annonce être capable de réécrire service X en quelques jours.

Oui, l’auteur y va un peu fort, mais là n’est pas le sujet.

L’abruti, c’est moi ?!

Oui. Enfin, pas tout à fait. Mais moi aussi, j’ai eu plein de projets plus impossibles les uns que les autres.
Au lycée, alors que mes camarades s’amusaient à taper leurs anti-sèches en brut dans leurs TI ou Casio, je profitais des cours de français et autres matières me semblant inutiles à cette époque pour m’initier aux joies de la programmation et par la même, créer de petits programmes rendant nos tests moins difficiles 😉

Alors que je commençais à programmer en TI-Basic sur ma caltoche (j’avais 15ans), je me lançais corps et âme dans le développement d’un Zelda-like, oubliant dans le même temps l’importance des cours dispensés au lycée.
Bref, imaginez bien que je n’ai jamais eu ni la patience, ni le savoir-faire (ni le bon langage de programmation d’ailleurs, mais je le découvrirai plus tard) pour finir mon jeu.

Quelques mois après, un américain a finalement sorti Zelda pour les TI Z-80, en assembleur. Peut-être avait-il plus de cours inutiles que moi 😉

Plus tard, je m’essayais à la création de logiciels PC, notamment en C++ mais surtout Visual Basic (6). Passé le stade des petites applis, qui m’ont tout de même permit de gagner quelques ronds, histoire de donner à boire à ma vieille 103, je me voyais créant mon propre jeu vidéo. Je fût vite rappelé par mon manque de compétence et surtout, le manque de temps.

Déjà à l’époque, je n’avais pas autant de liberté que je le souhaitais pour développer. En fait, je menais sur mon PC ma seconde passion numérique : Counter-Strike (1.6, le vrai). Aussi j’ai eu la bonne idée de croire que développer un faux OS (une surcouche sur Windows, à la manière des modes enfant qu’on trouve maintenant sur smartphone) me prendrait moins de temps. Dans l’absolu c’était vrai, mais à l’échelle d’un jeune qui a encore tout à découvrir, à raison de 7-8 heures par semaines, c’était limite.

Enfin, lorsque j’ai commencé l’apprentissage du développement web, il y a une dizaine d’années, la folie des grandeurs m’a repris. A peine avais-je fini le tuto PHP du SDZ que je me lançais dans un CMS, mon mien…

Oui, j’ai été un abruti.

Où est-ce que ça chie ?

Y’a une fin, ne vous en faites pas. Pendant des années, moi aussi j’ai visé des objectifs impossibles à atteindre pour ma personne. Quels en sont les causes ?

C’est chrononopage

En premier lieu, j’aurai tendance à dire que la principale raison de mes abandons est que je ne voyais pas la montagne de temps qu’allait me prendre mes projets. A chaque idée, la partie la plus facile en fait, dès lors que j’entrais dans la phase de conception, j’avais la sensation que rien ne pourrait ébranler ma motivation débordante. Même s’il fallait y mettre 2 ou 3 ans, je tiendrai bon.
Ca, ça tenait quelques mois (et oui quand même), avant de me rendre compte qu’après tout ce temps, il n’y avait rien d’exploitable.

J’en arrive à ma seconde cause : Voir loin.

Penser à plus tard

Quand je dis qu’il n’y avait rien d’exploitable, c’est à moitié vrai. L’appli en elle-même, il n’y en avait pas, clairement. Parce que toutes mes heures passées à coder étaient perdus dans une vision à long terme, un gros framework en somme.
Par exemple, lorsque je codais les premières lignes de mon CMS, il me fallait un Router, forcément. Mais celui-ci devait déterminer s’il devait router vers tel ou tel module, alors je commençais à écrire le noyau avec la possibilité d’y accrocher des plugins. Mais ces plugins devaient pouvoir être installés, avec la possibilité d’écrire une config en DB, base de données que je souhaitais gérer avec un ORM, etc etc etc. Bien sûr, sans oublier un système multilingue, …

Au final, je développais tout autour, mais rien de concret. Tout ça parce que je voyais loin, trop loin.

Ton skill, on en parle ?

Enfin, la technique. Je n’en ai volontairement pas trop parlé, pour une raison simple : Je pense ne pas être trop impacté.
Sorti de ma période jeux-vidéos, j’ai vite apprit à reconnaitre les limites des différents langages que j’apprenais. Également, j’ai toujours réussi à faire ce que je voulais, ou user de moyens détournés pour y arriver. Parce que j’ai la chance de savoir creuser de moi-même.

Comment atteindre ses objectifs ?

En fait, la question n’est pas la bonne, non. Ce qu’il faut savoir, c’est : Quels peuvent être mes objectifs ?

Se poser les bonnes questions

Et oui, car beaucoup de paramètres vont venir jouer avec la faisabilité de votre projet personnel :

Combien de temps pourrez-vous y consacrer par semaine ?
En combien de temps aurez-vous une première version utilisable ?
Votre motivation tiendra t-elle jusque là ?
Avez-vous du budget à allouer à un graphiste/dév ?
Connaissez-vous réellement vos limites ?
Les limites du langage utilisé ?
Devrez-vous apprendre de nouvelles technos ?
………

Peut-on tout viser ?

Peut-on avoir n’importe quel objectif ?
Cela dépendra surtout des réponses fournies aux questions ci-dessus. Personnellement, avec un peu de recul, j’aurai tendance à dire que non, mais c’est MON cas : J’ai un travail à plein temps, voir plus, une femme, un gosse, bientôt 2, j’aime procrastiner (je n’ai toujours pas de remède d’ailleurs 😉 ), des loisirs extérieurs, une vie sociale, pas d’argent à donner à un graphiste, etc etc

Qu’est-ce qui marche ?

Je ne parle bien sûr pas des projets rémunérés. Lorsque quelqu’un paye pour vos services, il y a quelque chose qui fait que vous n’abandonnez pas. Bien sûr, cela tient à ce que, généralement, ce script ou appli sont à portée de main, et n’ont pas caractère à devoir bosser dessus pendant des années. Non. Je parle là des projets personnels.

Personnellement, j’ai fait un truc tout bête : J’ai revu à la baisse mes objectifs. Je voulais créer un CMS, me suis cassé les dents dessus. J’y travaille encore, mais j’y passe moins de temps. En revanche, j’arrive presque à une version utilisable, parce que j’ai fait des sacrifices :
Pas de multilingue, pas de système de plugin, de framework maison de-la-mort-qui-tue, rien. Juste l’essentiel, de quoi poster des news, un système de blog en somme, sans négliger pour autant la maintenabilité et la capacité d’évolution.
Mais j’ai arrêté de voir loin : Je code ce dont j’ai besoin tout de suite, pas dans 3 mois. Si plus tard j’ai besoin d’une config en DB, je la ferai plus tard, pas maintenant.
Si mon CMS fonctionne et que les anglais veulent s’en servir, je ferai un système multilingue. Pas avant.

Il faut savoir se fixer les bonnes limites, et ce n’est pas une mince affaire. Mais plutôt que de viser trop haut, visez bas, sortez des premières versions. N’y intégrez pas toutes vos idées, vous aurez le temps d’y revenir plus tard.
Si vous souhaitez tout, tout de suite, vous ne sortirez jamais rien. Parce que votre motivation ne tiendra jamais plusieurs années sans quelque chose d’exploitable.

3 Commentaires

Ajouter un commentaire

  1. M’enfin bon, l’exemple de Twitter, ce n’est pas vraiment un bon exemple, vu que c’est vraiment extrêmement trivial à coder (50 lignes pour une version light en python, ex: https://github.com/elbuo8/flask-tutorial). Ce qui est plus complexe, c’est tout ce qui tourne autour, comme la gestion des utilisateurs, la gestion de la montée en charge (architecture), et encore, avec les solutions genre AWS, Google Cloud, ça le fait presque tout seul.
    Perso je pense qu’il ne faut pas empêcher les gens d’avoir des idées et de les coder et même si cela a l’air utopique parce que c’est gros, peut-être que l’on fera quelque chose de pas si mal (ou en déviant, quelque chose de nouveau). Dans tous les cas, c’est positif, tu auras surement appris plein de choses qui te serviront pour un projet futur.

    • Bonjour Luc,

      Comme je l’ai écrit sur le Journal Du Hacker, Twitter ce n’est pas que ces quelque lignes, c’est un tout ou le tweet n’est devenu qu’une partie des fonctionnalités. Mais l’article que je cite en introduction, qui cite l’exemple de Twitter, en parle mieux que moi.

      Sinon, le message que j’ai essayé de faire passer est non pas qu’il faut abandonner ses rêves, mais plutôt qu’il faille les attaquer morceau par morceau, brique par brique. Cela est bien moins démotivant, et même si le résultat au bout n’est pas exactement celui qu’on visait, il a le mérite d’exister, et de pouvoir être amélioré. Ce qui n’est pas le cas lorsqu’on code, comme je le dis, tout d’un bloc et que l’on n’arrive finalement jamais à un résultat exploitable.

      Sinon, pour sûr, chaque essai, même raté, permet d’apprendre encore, que ce soit des méthodes, technos, bonnes pratiques, …

    • En plus, Twitter, ça existe déjà. Si un jeune sorti de l’école se propose de faire un nouveau twitter, c’est sûrement pour apprendre, pas pour concurrencer Twitter. Avec des camarades de formation, on avait voulu faire un site d’enchères, pas pour concurrencer ebay, mais parce qu’on n’avait eu que 2 jours de formation en PHP et il fallait bien pratiquer ! Je vois vraiment pas le problème de s’attaquer à trop gros. On n’avait pas pour objectif d’aller jusqu’au bout, mais d’apprendre.
      Après, c’est clair aussi que personnellement, j’ai toujours eu la démarche de commencer petit. Je peux pas passer des jours et des jours sur du code pour ne savoir qu’à la fin si ça compile. C’est aussi l’intérêt de faire du web, tout est immédiatement et rapidement testable.

Laisser un commentaire

Votre adresse mail ne sera pas publiée.

*

© 2017 Max-Koder — Propulsé par WordPress

Theme par Anders NorenHaut ↑