Ce qui fait de vous une programmation C expert?
J'ai assisté à une foire de l'emploi hier et un développeur m'a demandé comment je dirais que mes compétences en C. j'ai alors réalisé que c'est très arbitraire et presque impossible à clouer, donc ma question est quelles sont les connaissances font de vous un expert en programmation C?
Edit: ou ce serait l'effondrement être? ce qui vous rend bon, décent, compétent, etc.
Modifier à nouveau: j'ai été à la recherche de plus comme une liste de compétences ou de certains autres constructif mesure par laquelle le juge de sa propre compétence en C, comme c'est difficile à faire.
Liste à ce jour:
- De l'expérience dans les grands projets
- Maîtrise de Pointeurs (et la gestion de la mémoire, je suppose)
- De la maîtrise d'un débogueur (gdb, ...)
- De la maîtrise d'un profiler (gprof,...)
- De la maîtrise d'un profileur de mémoire (valgrind, ...)
- Connaissance des normes fondamentales
- J'ai eu ce même question pour C++ dans les entretiens, en particulier pour les stagiaires et de jeunes diplômés. La chose est que, souvent, ils essaient de deviner votre personnage plus que votre niveau de compétence en programmation (en C++). Si vous vous donnez un très haut score, cela signifie que vous êtes 1) très compétent et très confiant; ou 2) assez ignorants et d'essayer d'impressionner juste pour obtenir le travail. J'ai même eu un cas où ils ont eu 2 tests différents. Si vous avez répondu 9 ou 10, ils vous donner le plus difficile à trouver dans laquelle de ces deux catégories, vous avez vraiment été.
- Je dirais savoir comment trouver la fonction qui a provoqué un accident en utilisant un fichier de carte.
Vous devez vous connecter pour publier un commentaire.
L'expérience est la clé, connaître les "règles" et de la syntaxe de la langue est évidemment un must, mais il n'est qu'une base. L'apprentissage de la commune de pièges et d'expressions pour bien faire les choses est la clé.
Sachant que si toutes les ressources existent pour obtenir de l'aide lors de votre programmation, et bien sûr, en sachant que vous êtes outil de la chaîne. J'ai connu beaucoup de C++ "experts" qui n'avaient jamais utilisé un débogueur, ou une mémoire tracker. Si vous me demandez, étant un expert en quelque chose est différent d'être compétent dans quelque chose de vous connaître tous les aspects.
Je pense que la difficulté avec cette question, c'est que la réponse est une sorte de sens. Je vois des gens parler de l'expérience, et c'est bon, et je vois des gens parler comprendre les subtilités de la langue, et c'est bon. Cependant, si je devais embaucher quelqu'un pour travailler sur mon projet C, et j'ai eu un magic 8-ball qui pourrait me donner une réponse précise à une (et une seule) de la question, je n'aurais jamais demander ce, "Sont-ils un C expert".
Pourquoi?
Juste parce que quelqu'un est un C expert ne veut pas dire qu'ils sont un bon développeur de logiciels. L'expérience et la familiarité de la langue sont bonnes, mais je pense qu'ils sont à la fois des accusations forgées de toutes pièces par l'immatériel, de l'onu quantifiables propriété qui rend quelqu'un de "bon développeur de logiciels". Ce que j'essaie de dire, c'est "Ce qui fait de vous une programmation C expert?" n'est pas une question utile, parce qu'il y a des questions plus importantes. Si quelqu'un est un Good Programmer, ils seront à la hauteur.
Comme un exemple: Vous pouvez être un de programmation C expert et être horrible sur une équipe. Vous pouvez être un de programmation C d'experts et de refuser d'utiliser le contrôle de version. Vous pouvez être un de programmation C expert sans savoir réellement NE quoi que ce soit avec C.
Le "sans" clauses dans ces phrases sont tout aussi importantes questions: Ce qui fait de vous une bonne équipe de programmeur? Quelle est la meilleure façon d'utiliser SCM x ou y? Comment abordez-vous la programmation d'un client/serveur de jeu, ou de l'application de facturation, ou un navigateur web, système d'exploitation, ou le compilateur en C? Si un candidat m'a dit "Non, je ne suis pas un C expert", mais m'a donné beaucoup de réponses à ces questions, je voudrais embaucher dans un battement de coeur sur le gars qui la magic 8-ball a dit était un C expert, mais ne savez pas comment vérifier son code dans la subversion et n'a pas appris une nouvelle langue en 12 ans.
Lorsque j'ai interviewé avec Google, l'enquêteur m'a dit de penser à elle de cette façon. Sur une échelle de 1 à 10 pour C de compétence, de dire que vous êtes un "10" signifie que vous avez écrit des papiers et/ou des livres ou un haut-parleur à une conférence sur la programmation en C. sur cette Base, très peu de gens sont 10s.
FWIW, je programme en C pour 15 ans. Je me considère très compétent. J'avais peut-être me donner un solide 8 ou 8.5.
À quelqu'un de moins qualifié que vous, vous êtes un expert.
À quelqu'un de plus qualifié que vous, vous êtes un débutant.
Tout le monde est un expert dans un salon de l'emploi
Vous êtes un expert en c si vous pouvez répondre à toutes les questions tagged "c" sur stackoverflow.com sans clignoter.
Cela ne veut pas répondre directement à votre question (désolé), mais il pourrait vous aider à décider comment vous classez-vous.
Au lieu de simplement "expert" et "newbie clueless", je préfère le système à trois niveaux d'expertise utilisés par les corporations médiévales:
Apprenti
Compagnon
Maître
À un salon de l'emploi? Il n'y a pas d'experts: tout le monde est un expert. 🙂
Certains peuvent être en désaccord, mais je pense que l'expérience est la clé pour être un expert dans n'importe quelle langue. Je connais beaucoup de gens qui ont passé l'épreuve de certification, mais ne pouvait pas appliquer leurs connaissances à quelque chose de pratique dans le monde réel.
Donc je pense que dans l'ensemble d'être un expert est un produit d'avoir suffisamment de connaissances sur un sujet donné (C) et d'avoir appliqué à suffisamment de scénarios réels, afin de faire les erreurs que nous avons tous le faire et apprendre d'eux.
Les réponses à cette question font pour certains intéressant à lire, il semblerait que nous ne pouvons pas obtenir une bonne convergence sur ce qui définit un expert ici. Quel espoir il va être dans une plus large forum de l'emploi équitable? 🙂
Mais pour mettre mon 2 cents...
Je pense qu'il y a deux sortes de C expert.
Je prendrais un de ces derniers par rapport à l'ancienne dans un battement de coeur. Si vous avez un bout de code écrit par un expert qui est tellement fragile qui ne peut être lu et compris par un autre expert pour toutes les intentions que le code est difficile à maintenir.
Il est très joli ce que l'auteur de ce code se souvient de la complexité des conversions de type au moyen d'expressions, mais c'est beaucoup mieux si le code a été écrit alors qu'il est totalement sans ambiguïté.
Projets ont généralement assez de défi technique sans l'ajout de la nécessité pour tous les membres de l'équipe à avoir mémorisé la C'99 standard.
Vous êtes un expert en C lorsque vous pouvez écrire votre propre compilateur C.
Des questions d'entrevue de ce genre sont toujours difficiles. Vous voulez faire exploser votre propre klaxon un peu, mais pas sonner comme un ingénieux et fanfaron.
Si vous avez fait beaucoup avec C (par exemple, travaillé sur des projets open source en C), alors je vais répondre à ça, mais pas juste en pointant à la liste des réalisations sur votre cv, mais en parlant de l'un ou plusieurs d'entre eux et ce qui était particulièrement intéressant ou difficile (en ce qui concerne son utilisation de C).
Manque d'un test standard il n'y a vraiment aucun moyen de décider de ce niveau expert est, mais voici quelques-uns de mes tests de tournesol, de chacun liste est différente, j'en suis sûr.
Sans regarder la documentation:
Connaître l'ordre de priorité des opérateurs principaux de sorte que vous n'avez pas à litière de votre code avec des parenthèses pour éviter le mauvais ordre d'évaluation
Être capable d'écrire un prototype pour un simple pointeur de fonction
Être à l'aise avec le passage d'un pointeur vers un pointeur
Comprendre bloc, la fonction, la portée de module
Il y a plus d'articles de ce genre.
D'autre part, je ne pense pas que vous devez être en mesure de comprendre ou d'être en mesure d'écrire Duff appareil ou trouver d'obfuscation C concours dans votre tête à vous considérer comme un expert.
Même si je me considérais comme un expert (pas sûr de ce que je fais) je n'aurais probablement jamais réclamer dans une entrevue d'emploi.
Andrew
Être en mesure de rédiger des articles/livres ne fait pas nécessairement un expert programmeur. Il faut beaucoup de travail acharné, de l'expérience pratique et une bonne compréhension des différentes bibliothèques C.
Bonne chance!
Généralement parlant, personne d'assister à une foire de l'emploi est un expert dans C.
Je dirais que le point où vous êtes un expert en C est là que vous avez connaissance de la norme, de telle sorte que vous comprendre le pourquoi des choses comme Duff périphérique de fonctionner sans avoir besoin des explications individuelles. Aussi, vous avez besoin d'un couple de grands projets sous votre ceinture.
Maîtrise de pointeurs.
Je dirais que pour une langue donnée, l'expérience est la clé de la chose. Il faut juste du temps pour apprendre une langue et d'apprendre les Api et les "idiomes", que la langue utilise. Si quelqu'un est un expert en quoi que ce soit ou pas, c'est quelque chose qui devrait être posée à ceux de leurs pairs. Pour paraphraser Jeff Foxworthy, "Si vous de répondre à plus de questions que de vous demander, vous pourrait être un expert."
Je pense juste réponse serait la compréhension de toutes les intracies de la norme ISO C.
La réalité, comme toute comp.lang.c réguliers vais vous dire, c'est que presque rien de ce que les gens ont besoin de faire peut être fait dans le plus pur ISO C, comme vous l'avez généralement besoin d'interagir avec votre environnement dans un plus bien défini. C'est là que POSIX vient.
Je ne clignote pas à quelqu'un qui s'auto-classés eux-mêmes comme un "Expert" qui a une solide compréhension de la langue de C, la décence et la compréhension de ce que l'ISO C promesses, et une compréhension des fonctions POSIX.
Comment avoir lu "Expert de la Programmation en C", par Peter van der Linden et de se souvenir de tout ce qu'il couvert?
Connaît la réponse plus souvent que pas, ne se trompent pas souvent, il comprend les concepts derrière le code, est conscient de ses propres limites, et bien sûr en mesure de lire (et de comprendre) presque n'importe quel morceau de code et de pouvoir l'écrire mieux mais sait assez pour ne pas déranger - depuis qu'il a été là et fait cela.