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 ^^
Mais, selon moi, bien plus que de connaitre à fond l'ensemble des (classes/méthodes/fonctions) des outils/bibliothèques utiles, il faut qu'il en connaisse, même de manière "transversale", les "gros points de passage", les capacités (savoir qu'il/elle peut faire telle ou telle chose) et savoir où trouver un exemple ou une ressource qui l'aidera à l'utiliser
Je veux dire par là qu'il ne doit pas *forcément* maitriser l'ensemble des outils ou des bibliothèques qu'il utilise :roll:
Quelqu'un a dit
et je crois - sincèrement - qu'il est impossible à quiconque, même après plusieurs décennies, de maitriser à fond tous les aspects de tous les outils et toutes les bibliothèques...Citation:
une personne qui excelle en tout n'excelle en rien
Il y aura toujours un outil ou une bibliothèque avec lequel ou laquelle on se sent plus à l'aise qu'avec d'autres - ne serait-ce que parce qu'on l'utilise plus souvent - sans pour autant que cela puisse remettre le niveau "d'expertise" en cause :D
Oui. C'est vrai qu'un expert est aussi une personne capable de trouver rapidement ce qu'il cherche, dans le cas où il a besoin de quelque chose qu'il ne connaît pas.
Enfin bon, ça reste assez vague. On a pas un forum Philosophie de l'informatique ? :aie:
Un expert est peut être quelqu'un capable de récupérer du code C++ en le modifiant pour ses besoin sans avoir besoin de comprend ce que code fait réellement
Je veut dire dans un premier temps, a la bourrin. Aprés faut mieux regarder plus en détaille. Et encore :lol:.
Par exemple un code de correction des déformation d'une image photo. Pas besoin de comprendre tout le code. Faut juste l'adapter à ses besoin. Modifier deux trois ligne pour que ce bout de code utilise ton format d'image par exemple
Ne fait pas ca si tu n'as pas les capacites de montrer que tu as de quoi pretendre a ton titre si c'est moi qui fait passer l'interview... J'aime ni les vantards ni les bluffeurs dans un contexte d'embauche. Je ne sais pas exactement ce qu'est un expert, mais je sais bien reconnaitre ceux qui n'ont aucune raison de se pretendre tel.
Jean Marc, ce n'est pas marqué sur mon CV. Je fais du C++ depuis un an seulement...
On est de toute façon pas expert en C++ sans avoir mener à bien au moins une poignée de projets conséquents, ce qui n'est pour le moment pas mon cas.
Je crois que si, de fait, on peut *estimer* qu'il n'est pas *forcément* nécessaire de comprendre tout le code que l'on modifie (AKA comprendre le code de fonctions que l'on ne modifie pas), il est par contre difficilement envisageable d'accepter d'un "expert" (et même des autres, d'ailleurs :D) qu'il modifie une fonction dont il n'a pas compris le code...
L'adaptation "au petit bonheur la chance" d'une fonction (tiens, je vais essayer de modifier telle valeur, oh, et puis non... je vais essayer de modifier telle boucle) es le moyen le plus direct pour foncer dans le mur :P
C'est la ou il y as la difference entre le bidouilleur et l'expert. L'expert ne savait pas que c'était impossible, et il l'as fait :aie:.
Biensur, qu'il faut au moins savoir un minimum ce que fait le code comme les allocation mémoire. Mais l'expert arrivera à modifier le minimum pour faire cohabiter les codes sans trop problème dans une première phase. Et surtout, il trouve la fonctionnalité qu'il recherche dans ce code et le modifier en conséquence.
Ou dit différemment, un expert va facilement rentrer dans du code inconnue pour faire ce qu'il veut avec, sans spécialement tout comprendre du code lui même
Ou encore autrement, il sait comment analyser un code et va pouvoir trés rapidement t'aider à débuger ton code ou ca fait des semaines que tu bloque.
En gros pour moi un expert est quelqu'un qui as :
1- as un niveau correcte de conception
2- as un bon niveau de codage
3- peut adapter un code d'un autre langage en C++ "sans trop de difficulté"
3- sait trés bien analyser un code inconnue
4- sait se remettre en cause quand il as tort
Ce sont ces deux derniers points qui je pense sont les plus important.