Quand j’ai commencé le guide sur la POO pour débutant, j’ai eu des demandes de faire les choses plus simplement, de retirer des prérequis ou encore des remarques que celui-ci n’était pas débutant malgré le titre.
Si vous preniez un cours “Triple saut périlleux pour débutant” en gymnastique, je pense que vous auriez compris que :
- Il s’agit de débutant en triple saut périlleux, pas en gymnastique.
- On ne se lance pas dans l’apprentissage du triple avant de savoir le double. Encore moins avant de savoir faire la roue.
- Si l’enseignant vous parle d’une posture d’étirement à l’échauffement dont vous ne connaissez pas le nom, vous commenceriez par vous dire que peut-être vous n’avez pas encore le niveau pour apprendre ce saut périlleux.
Et on en vient à un problème fondamental d’Internet : comme tout le monde à accès à tout, les gens sont tenus d’avoir du bon sens.
En l’occurrence, on ne se lance pas dans un guide sur la POO avant de savoir faire du scripting de base.
Mais ce guide n’est qu’un exemple. Régulièrement, dans mon métier de formateur, et dans ma vie en générale, je croise des gens qui sont frustrés que telle ou telle chose soit ‘aussi compliquée’ en programmation.
1 – Ce n’est pas compliqué
L’immense majorité des choses n’est pas compliquée en programmation. Si vous ne comprenez pas, c’est probablement soit mal expliqué, soit ça demande des connaissances que vous n’avez pas. Ce qui vous manque, ce n’est pas des neurones, c’est du temps et de la pratique. Même des concepts abstraits tels que les metaclasses sont explicables facilement.
Une chose que j’ai noté, c’est que beaucoup de personnes en chient parce qu’ils ne savent pas dans quel ordre il faut apprendre les choses. Ou alors ils savent mais sont impatients et sautent des étapes.
2 – Si vous êtes un être humain normal, ça prend 10 ans
Vous avez entre les mains une machine qui fait des milliards d’opérations à la seconde, composée de milliers de pièces matérielles et de millions de pièces logicielles qui interagissent entre elles de manière complexe. Par dessus ça vous avez des outils d’abstractions, en premier lieu un langage de programmation, pour lui faire faire quelque chose.
Forcément, ça prend du temps à maîtriser.
L’informatique est une science très très jeune. La médecine, les maths, l’architecture ou la chimie sont des trucs qu’on pratique depuis des millénaires. On a des ordinateurs depuis moins d’un siècle. Tout ça n’a pas suffisamment évolué pour qu’il suffise de pousser un bouton pour créer un logiciel. On y arrivera peut être, mais pour le moment, il faut comprendre ce qu’on fait.
Et comprendre quelque chose de complexe n’est PAS FORCÉMENT compliqué. Mais ça prend du temps. Comptez une décennie pour être un programmeur averti.
Rappelez-vous qu’un expert, c’est uniquement quelqu’un qui a fait toutes les erreurs possibles dans un champ donné.
3 – Ça ne veut pas dire qu’en deux semaines vous ne pouvez pas faire quelque chose
Vous n’avez pas besoin d’être un professionnel en informatique pour coder. C’est la beauté de la chose : les amateurs sont les bienvenus dans notre univers, justement parce que c’est un domaine encore juvénile.
Vous pouvez faire des bidouillages amusants et même des choses utiles en très peu de temps.
Mais NON, vous ne pouvez pas tout maîtriser. Tout comprendre. Ce n’est pas possible.
Il ne faut pas vous en sentir frustré. Le cerveau humain a ses limites. La pédagogie a ses limites. Les journées n’ont que 24H, et on en passe une bonne partie au lit, à table, sur les chiottes et parfois même au boulot.
Et puis, j’ai une confession : je suis un débutant moi aussi.
Le fond du problème à la POO, c’est qu’on veut l’utiliser à toutes les sauces. Je pense notamment au calcul scientifique ou rien de remplace un code sale et impératif pour des soucis de compréhension.
Tu sais certainement que lorsqu’un visage pâle se rends dans un pays “en voie de développement”(l’internet), traîne derrière lui une ribambelle de mioches. Tout l’art d’un déplacement serein consiste alors à jeter de temps à autre quelques piécettes sans grande valeur. Le temps requis aux interminables négociations nécessaires au partage équitable du butin, permets d’admirer le paysage, ou de prendre le large.
Tu a l’air de déplorer la présence encombrante d’étudiants “hors niveau” dans cet amphi. Sois bien conscient que ces débutants te font grâce du milliard de questions qui leur brûle les lèvres.
Et aussi paradoxal que cela puisse paraître, un seul novice, par une approche totalement différente du problème, peut remettre en cause les fondements même de la pédagogie.
J’en fait la surprenante expérience avec un bambin de 9 ans et une bambine de 7, qui s’arrachent les cheveux devant l’organisation de la doc python. Et qui se bricolent leur propre doc; en tuant Descartes au passage.
Fais comme tu a envie, et ne t’inquiète pas de l’herbe et des fourmis écrasées sur le chemin.
Tu n’a te justifier de rien.
De plus, tu dispose d’une clôture (filtrage des inscriptions), pour garder le domaine.
Where is the problem ?
Je n’ai aucun problème avec le fait d’avoir de nombreux débutants qui suivent ce blog. Bien au contraire.
Je réponds juste à des remarques, envies et frustrations de ces débutants.
Je me mets aussi un pense-bête à moi-même, car je suis un débutant.
@sil: oui mais c’est très difficile de savoir quand on commence, quel style est adapté à quoi. D’une manière générale, l’algorithmie se plait plus en fonctionnel, et l’architecture se sent bien avec la POO, mais il y a des exceptions, et ça ne s’apprend qu’en faisant des erreurs. Aucun bouquin ne permet de bien choisir ce genre de chose.
L’inverse est aussi vrai. Trop de scientifiques passent de leur code procédural utilisé pour leur calcul à la rédaction d’une lib et en font un truc imbitable parcequ’ils l’ont codé comme on script.
@sil : Je suis presque d’accord avec toi. C’est clair que la POO n’apporte rien à un algo, à part du temps de calcul inutile. Par contre, pour la gestion des fichiers et des paramètres, là c’est super utile ! Par contre le code sale, c’est incompréhensible quoi qu’il arrive…
Je crois qu’on devient meilleur dans le choix du paradigme quand on a codé dans plusieurs langages.
Par exemple, coder en c# et java m’a améliorer dans ma perception des abstraction, coder en javascript m’a permis de réconcilier le fonctionel avec la POO, coder en PHP m’a montré comment ne jamais écrire du code en prod :-)
Quoi qu’il en soit et pour vous donner un peu de baume au coeur, sachez que, pour moi, votre site et ces exemples font office de référence, avant de me plonger plus avant dans documentation et autres sources plus “officielles”.
Et pour ceux qui pourraient penser que je m’inscrit dans la gamme “Jeune Padawan débarqué dans le domaine de l’Informatique”, sachez que ce n’est pas du tout le cas. Cela fait 15 ans que je fais de la POO. Et un petit coup de fraîcheur sur ces vielles notions est toujours bon à prendre.
De plus l’humour taquin et parfois grivois permet de détendre l’atmosphère et, par effet de bord, amener d’autres “types” de lecteurs. Mais ne nous formalisons pas sur ce point.
A mon humble avis, restez comme vous êtes, continuer sur cette magnifique lancée et ne vous formaliser pas du reste.
En encore une fois, merci …
Aka
@roro
C’est marrant, j’avais pas du tout compris ça de cette manière.
Malentendus, malentendus.
…et nous sommes tous des débutants à tout moment de notre existence !
;-)
Sur tous les points que tu soulèves, je ne peux qu’ajouter un “gros” +1…
Le temps, ce truc qu’il faut parfois savoir prendre même si on nous fait courir après lui en permanence !
:-)
Bon dimanche à tous.
@Akarun: merci. Des commentaires comme ceux-ci nous motivent quand une partie de HOMM3 semble plus attirante que d’écrire un article.
Ça me fait penser à cette question:
“Ah, tu joues aux échecs. Tu joues bien?”
Elle permet (la question comme la réponse) d’identifier à coup sûr quelqu’un qui soit ne sait pas jouer, soit débute vraiment.
Si tu sais jouer, tu sais que:
1. non, tu ne joues pas bien
2. oui, tu est certainement capable de battre celui qui t’as posé la question
3. il y en a beaucoup qui jouent beaucoup mieux que toi
4. tu aimerais savoir jouer beaucoup mieux
5. c’est pas demain la veille que tu auras fait le tour de la question
Mais en vrai, tu joues bien ?
Tiens, t’es déjà plus sur LoL ?
Pourquoi c’est pas cumulatif ?
@Sam
J’avais parié tu la sortirais :-)
Il faut au minimum de l’entrelacement ! ;)
Blague à part, ça fait des mois que je n’ai pas joué à Heroes. Cette saloperie de LOL me met bien dedans, j’ai ruiné ma semaine.
La frustration a quitté mon corps ce soir… Merci !!
C’est bibiche qui va prendre ce soir !!
Plot twist: bibiche est le nom de sa biche domestique.
ça dérape..ça déraaaaaape!
pareil :)
rien foutu depuis….
@Max même pas une gonzesse ? c’est grave alors.
Pardon aux familles tout ça…
Le post qui dérappe.
Désolé, je sors.
On a de plus en plus de belges, de d’africains de l’ouest et de canadiens dans les lecteurs. C’est beau la francophonie.
Ah bon, y’a des canadiens qui parlent français? (Aï! Non! Pas la tête!)
Nan, L’Allemagne dans 2 semaines, je suis en plein préparation physique :)