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.