Bonsoir à tous.
Un petite question existencielle^^ : combien d'années faut-il pour devenir un expert du C++, en passant environ 15h par semaine à coder (ce qui est mon cas^^) ?
Version imprimable
Bonsoir à tous.
Un petite question existencielle^^ : combien d'années faut-il pour devenir un expert du C++, en passant environ 15h par semaine à coder (ce qui est mon cas^^) ?
Je ne suis pas particuliérement un évaluateur de niveau mais à tout cassé (et cela dépend aussi de tes capacités, de ta rapidité, du domaine d'application et surement d'autres facteurs) une bonne vingtaine d'année :mrgreen:
Je crois que ça dépend aussi de ta façon de travailler et de ta soif d'apprendre. Après tout, on peut aussi en C++ programmer de la même manière que ce que l'on fait en java ou en C#. Mais cela signifierai faire l'impasse sur toute la partie métaprogrammation, ce qui serait bien dommage.
Sinon, rien que pour "maîtriser" la partie métaprogrammation, il faut déjà plusieurs années. Ensuite, pour ce qui est d'être un expert, clair que 10 ans me paraissent un minimum.
Je n'irai pas jusque là, si on se plonge pendant quelques années dans tous les écrits possibles en C++ et en conception (faut bien voir la conception d'un point de vue théorique + ce qui se dit que le parallélisme actuellement), on peut être expert en 4-5 ans, mais c'est relatif comme notion.
Et en plus de lire et de programmer, j'imagine que pour se poser en expert, il faut avoir l'expérience de quelques projets C++ assez conséquents
Tout dépend ! :D
Si tu commence de 0 c'est clair qu'il faut viser plusieurs années pour bien maitriser tout les concepts (5-6 ?). Mais si tu commences avec des bases en programmation et/ou si tu connais d'autres langages (OO notamment) là tout peut aller plus vite. Grosso modo je tablerai sur :
- langages impératifs (Pascal, C, ...) : 3 ans
- langages orientés objet : 1 an (voir moins)
- autres paradigmes (logique, fonctionnel): probablement vers les 5 ans
Bien sur toute ces chiffres sont uniquement tiré de mon expérience personnelle et sont surement très différent d'un individu à un autre. 8-)
Un désavantage pour ceux qui ont commencé le C++ depuis peu, c'est justement de ne pas connaître (ou mal) son histoire, ses évolutions.
Perso, je pars du principe qu'un humain normalement constitué ne peut pas connaître tous les recoins du langage par coeur :)
Et pendant le temps que tu passeras à assimiler, d'autres visions, utilisations ou concepts sortiront...
Salut,
J'aurais personnellement tendance à dire que l'expertise reste quelque chose de très subjectif...
D'un côté, il y a ceux qui se prétendent expert, parce qu'ils programment depuis des années, mais dont on se rend compte "en grattant un peu" qu'ils se sont contentés de reproduire systématiquement les mêmes erreurs sans jamais se remettre en question ou qu'ils ne se sont jamais intéressé qu'à un point de vue bien précis, et, à l'autre extrémité, il y a ceux qui ne programment que "depuis pas si longtemps que cela" mais qui se sont intéressés à de nombreux sujets, qui ont en permanence réfléchi "a la meilleure solution" et qui ont eu la modestie de prendre les remarques en compte.
J'aurais presque tendance à dire que le vrai expert, c'est celui que tu reconnais comme tel, mais que ce ne sera jamais celui qui prétend l'être...
Je crois même qu'il n'y a que peu de sens à vouloir se prétendre expert dans un langage particulier car, je n'ai jamais compris ce principe qui voudrait séparer les tâches de conception et de réalisation d'une application...
Pour moi, l'expertise s'acquière par le fait que tu maitrise suffisemment les méthodes de recherche des besoins, de conception, d'algorithmie... et par le fait que tu connaisse le langage que tu utilise pour mettre tout cela en musique.
Le gros du C++ peut être appris en quelques mois à peine.
Une pratique de un ou deux ans est clairement nécessaire pour arriver à "fixer" et à améliorer ses connaissances de base, et pour avoir l'occasion de se frotter à la majorité des cas "peau de banane" que l'on peut rencontrer.
Mais ce n'est qu'une fois que l'on maitrise le processus complet de développement que l'on peut estimer avoir gagné "l'expertise".
Faut il préciser que, pour moi, le langage utilisé n'importe que peu, et que le fait de fournir un code source n'est -à la limite et en exagérant beaucoup - en définitive que "du simple travail de dactylographie, long et fastidieux" du simple fait que, normalement, toute la réflexion et tout le travail intéressant doit être mené à bien avant même de commencer à écrire la première ligne de code (ce qui n'empêche qu'on puisse se rendre compte à un moment donné, lors de l'écriture, que l'on n'avait pas pris tel ou tel point de vue en compte, et qu'il faille donc repasser par une étape de réflexion ;):D)
On se détend...
Plus sérieusement, je ne vois pas pourquoi la programmation en C++ serait très différente de l'ensemble des autres activités humaines. Le mot expert a une signification indépendante du C++, et je ne vois rien de spécifique au C++ de ce point de vue. On en revient donc à la définition traditionnelle de l'expert, qu'il soit plombier ou violoniste, à savoir 10 à 15 ans de pratique au niveau professionnel (cf. les travaux cités dans le lien ci-dessus). L'expertise n'a pas trop de rapport avec le talent, le génie où l'incompétence, qui peuvent tous s'atteindre en beaucoup moins de temps, voire au saut du berceau... ;)
Mais, tout comme pour un plombier ou un maçon, il y a des programmeurs qui sont dans le métier depuis des décénies et auxquels on aurait peur de demander de faire le moindre travail...
Ce sont des gens qui ne méritent, selon moi, en aucun cas le titre d'expert :D
Si expert de la catastrophe !!Citation:
Ce sont des gens qui ne méritent, selon moi, en aucun cas le titre d'expert
Sinon pour moi, quelqu'un d'expert est quelqu'un qui peut répondre a 99% des cas (tordus ou pas) en un minimum de temps (voir imédiatement) et de façon optimale.
Un expert en C++ connaît la plupart (toutes ? peut-être pas non plus, c'est difficile) des subtilités du langage, il est aussi très bon en conception : il sait ce que l'on peut faire et sait trouver une solution optimale en exploitant tous les outils fournis par le C++ qui font qu'elle est optimale.
Bon, ne débordez pas dans le troll non plus. Essayez d'apporter des précisions techniques, et non pas des "je ne suis pas d'accord avec un tel" ou alors "ça dépend le sens qu'on donne à expert" sans donner un argument technique derrière. C'est un débat qui peut s'avérer intéressant mais pour cela faîtes en sorte qu'il le soit. Sinon on peut se rejoindre dans la Taverne ;)
:merci:
?? :aie:
En faite ce la ne veut pas dire grand chose "expert". Donc c'est difficile de faire de vrai réponse a part un troll. Ca fait juste beau sur un CV. Par exemple tu pourrai tout connaitre du C++ et rien en 3D. Tes expert mais tu ne peut pas faire un peu problème en 3D rapidement
Je pense simplement que si l'on veut mettre un sens sur le mot expert, ça serait celui qui résoud les problèmes auquel il est confronté en utilisant pleinement les possibilités du langage C++.
Après, on peut dire un peu ce qu'on veut.
Je suis pleinement conscient du fait que la connaissance d'un langage particulier (ou de plusieurs) se monnaie sur un CV, et que tu auras d'autant plus de chances de te faire embaucher si tu connais le langage habituellement utilisé dans la boite dans laquelle tu postules...
Par contre, il ne faut pas non plus se voiler la face, à partir d'une conception correcte, tu créera des classes correctes, et à partir d'algorithmes corrects, tu implémentera des comportements corrects: Les différences que tu rencontreras entre deux langages (hormis les quelques particularités telles que l'héritage multiple ou similaire) se limiteront bien souvent à un "simple problème d'orthographe / de syntaxe".
Je trouve que l'intervention de Alp que, pour la cause, je généralise pour tous les langagesest sans doute ce qui est le plus proche de la définition du terme "expert"...Citation:
Je pense simplement que si l'on veut mettre un sens sur le mot expert, ça serait celui qui résoud les problèmes auquel il est confronté en utilisant pleinement les possibilités du langage utilisé.
Sauf que, quelque soit le langage utilisé, la majeure partie des problèmes trouvent une solution au point de vue algorithmique...
Bien sûr, il y a toutes les bibliothèques qui permettent de faciliter d'autant le travail, mais, l'un dans l'autre, le fait de savoir que telle bibliothèque permet de faciliter le travail dans telle circonstance, sans *forcément* maitriser la dite bibliothèque (mais en sachant où trouver les informations la concernant) n'empêchera nullement quelqu'un de mériter le titre d'"expert".
Par contre, le fait de connaitre à fond toutes les capacités d'une bibliothèque, mais de ne pas être en mesure d'en tirer le meilleur parti est aussi un gros frein à cette prétention ;)
Je suis d'accord avec toi koala01, et je rajouterais que :
Un expert doit être bon pour tout ce qui est conception, algo, ... certes; mais un expert doit savoir quel outil du langage utiliser pour amener le plus rapidement des résultats, il doit savoir quels outils permettent de faire des tests unitaires rapidement, il doit savoir quelle bibliothèque est la plus performante dans tel domaine, ... En somme, il doit avoir engrangé une énorme quantité d'informations depuis ses débuts. Ajouter à ça le savoir-faire qu'il se forge à force de programmer, et là, vous avez un expert (si l'on souhaite donner un sens précis à ce mot) à mon goût. Comme je l'ai dit plus haut, je vous expose mon point de vue. Alors s'il vous plaît, pas de troll :)
Merci à tous pour toutes vos réponses :) (bien plus que j'en espérais) ce fût un débat très intéressant :D, j'ai maintenant une vision plus large d'un expert ^^