Was macht Sie zu einem C-Programmierexperten? [closed]

Lesezeit: 7 Minuten

Benutzer-Avatar
Alex Gartrell

Ich war gestern auf einer Jobmesse und ein Entwickler hat mich gefragt, wie ich meine C-Kenntnisse einstufen würde. Dann wurde mir klar, dass dies unglaublich willkürlich und fast unmöglich festzuschreiben ist. Meine Frage ist also, welches Wissen Sie zu einem Experten in der Programmierung von C macht.

Edit: oder wie wäre die Aufschlüsselung? was macht dich gut, anständig, kompetent usw.

Nochmals bearbeiten: Ich habe eher nach einer Liste von Fähigkeiten oder einem anderen konstruktiven Maßstab gesucht, anhand dessen die eigenen Kenntnisse in C beurteilt werden können, da dies schwer zu tun ist.

Liste bisher:

  • Erfahrung in Großprojekten
  • Beherrschung von Zeigern (und Speicherverwaltung, würde ich annehmen)
  • Beherrschung eines Debuggers (gdb, …)
  • Beherrschung eines Profilers (gprof,…)
  • Beherrschung eines Speicherprofilers (valgrind, …)
  • Kenntnis der grundlegenden Normen

  • Ich hatte diese gleiche Frage für C++ in Interviews, insbesondere für Praktikanten und frischgebackene Absolventen. Die Sache ist oft, dass sie versuchen, Ihren Charakter mehr zu erraten als Ihre Programmierkenntnisse (in C++). Wenn Sie sich selbst eine sehr hohe Punktzahl geben, bedeutet dies, dass Sie 1) sehr sachkundig und sehr selbstbewusst sind; oder 2) ziemlich ignorant und versuchen zu beeindrucken, nur um den Job zu bekommen. Ich hatte sogar einen Fall, wo sie 2 verschiedene Tests hatten. Wenn Sie 9 oder 10 beantworteten, würden sie es Ihnen schwerer machen, herauszufinden, in welche dieser beiden Kategorien Sie wirklich fallen.

    – Andre Caron

    20. Juli 2011 um 14:32 Uhr

  • Ich würde sagen, zu wissen, wie man mithilfe einer Kartendatei herausfindet, welche Funktion einen Absturz verursacht hat.

    – Rocky Riemenscheibe

    30. März 2015 um 17:56 Uhr

Ich denke, das Problem bei dieser Frage ist, dass die Antwort irgendwie bedeutungslos ist. Ich sehe Leute, die über Erfahrung sprechen, und das ist gut, und ich sehe Leute, die darüber sprechen, die Feinheiten der Sprache zu verstehen, und das ist gut. Wenn ich jedoch jemanden einstellen würde, der an meinem C-Projekt arbeitet, und ich einen magischen 8-Ball hätte, der mir eine genaue Antwort auf jede (und nur eine) Frage geben würde, würde ich nie fragen: „Sind sie ein C Experte”.

Wieso den?

Nur weil jemand ein C-Experte ist, heißt das noch lange nicht, dass er ein guter Softwareentwickler ist. Erfahrung und Sprachkenntnisse sind gut, aber ich denke, sie werden beide von dieser immateriellen, nicht quantifizierbaren Eigenschaft übertrumpft, die jemanden zu einem “guten Softwareentwickler” macht. Was ich zu sagen versuche, ist: “Was macht Sie zu einem C-Programmierexperten?” ist keine sinnvolle Frage, denn es gibt wichtigere Fragen. Wenn jemand a GGut Programmer, sie werden der Gelegenheit gewachsen sein.

Als Beispiel: Sie können ein C-Programmierexperte sein und in einem Team schrecklich sein. Sie können ein C-Programmierexperte sein und sich weigern, die Versionskontrolle zu verwenden. Sie können ein C-Programmierexperte sein, ohne wirklich zu wissen, wie man das macht TUN irgendwas mit C.

Die “ohne”-Klauseln in diesen Sätzen sind ebenso wichtige Fragen: Was macht Sie zu einem guten Teamprogrammierer? Was ist der beste Weg, um SCM zu verwenden x oder j? Wie gehen Sie beim Programmieren eines Client/Server-Spiels, einer Abrechnungsanwendung, eines Webbrowsers, eines Betriebssystems oder eines Compilers in C vor? Wenn ein Kandidat mir sagen würde „Nein, ich bin kein C-Experte“, mir aber großartige Antworten auf diese anderen Fragen geben würde, würde ich ihn sofort einstellen, anstatt den Typen, von dem der magische 8-Ball sagte, dass er ein C-Experte sei, es aber tut weiß nicht, wie er seinen Code in Subversion einchecken soll, und hat seit 12 Jahren keine neue Sprache gelernt.

  • Ein weiterer guter Punkt ist, dass C-Experten versuchen könnten, ALLES in C zu programmieren, wenn es offensichtlich unnötig ist. Ich stimme dem zu, was Sie sagen, aber unter sonst gleichen Bedingungen würde ich argumentieren, dass das Wissen über eine Technologie eine gute Sache ist (wenn es nur bei Bedarf verwendet wird).

    – Alex Gartrell

    19. September 2008 um 17:14 Uhr

  • Ich wollte nicht andeuten, dass tatsächliche Fähigkeiten unwichtig sind; nur dass es mit einem Sinn für Pragmatismus und vielleicht sogar Demut gemildert werden muss. Ich stimme dir zu.

    – Max Kantor

    19. September 2008 um 17:16 Uhr

  • Ein erfahrener Entwickler zu sein geht darüber hinaus, ein erfahrener -Programmierer zu sein – ein erfahrener Entwickler muss auch Dinge wie Architektur, Design, Sicherheit usw. verstehen, Dinge, die weit über die Syntax einer Sprache hinausgehen.

    – AviD

    21. September 2008 um 0:07 Uhr

  • @AviD Ich glaube, das ist die Aufgabe eines Softwarearchitekten, und wir halten diesem Status nicht alle wirklich stand.

    – kellogs

    22. März 2012 um 10:43 Uhr

  • @kellogs Sicher, das Bauen der Architektur ist die Aufgabe des Architekten – aber das bedeutet nicht, dass ein guter Entwickler dies nicht tun muss verstehe es. Außerdem gibt es viele dieser anderen Aspekte – Sicherheit, Leistung, UX usw. – die ein guter Entwickler unbedingt braucht muss bewandert sein.

    – AviD

    22. März 2012 um 11:44 Uhr

Als ich mit Google interviewte, sagte mir der Interviewer, ich solle so darüber nachdenken. Auf einer Skala von 1-10 für C-Kenntnisse zu sagen, dass Sie eine „10“ sind, bedeutet, dass Sie Artikel und/oder Bücher geschrieben haben oder Redner auf einer Konferenz über das Programmieren in C waren. Basierend darauf sind nur sehr wenige Menschen 10s.

FWIW, ich programmiere seit 15 Jahren in C. Ich halte mich für sehr kompetent. Ich würde mir vielleicht eine solide 8 oder 8,5 geben.

  • Ich hatte eine ähnliche Erfahrung. Mir wurde gesagt, ich solle die Skala verwenden, bei der 1 = “Hello, world!” und 10 = “Kann einen funktionierenden Compiler schreiben.”

    – Bill die Eidechse

    19. September 2008 um 17:04 Uhr

  • Ich habe dies für die Demut hochgestimmt.

    – Alex Gartrell

    19. September 2008 um 17:07 Uhr

  • Das Problem ist, dass die Lücke zwischen 1 und 10 auf dieser Skala nicht linear ist

    – RomanM

    19. September 2008 um 17:12 Uhr

  • Durch diese Art von Skala wird impliziert, dass sie jemandem mit 9/9,5/10 vertrauen würden. Kraut. Schildt hat Bücher geschrieben, aber ich wette, EmmEff sollte sich ihm nicht beugen. Ein funktionierender (auch sehr strenger) Compiler unterscheidet sich von der Kenntnis der std. oder gut anwenden. Ich würde sagen, Google ist zu einseitig.

    – James Antill

    19. September 2008 um 17:14 Uhr

  • Man kann nicht behaupten, dass Google eingebildet ist, aber es ist eine einfache Möglichkeit für sie, die Poser auf der Waage neu zu positionieren. Und ja, ich stimme sicherlich zu, dass die Skala nicht linear ist.

    – EmmEff

    19. September 2008 um 17:21 Uhr

Für jemanden, der weniger geschickt ist als Sie, sind Sie ein Experte.

Für jemanden, der fähiger ist als Sie, sind Sie ein Neuling.

Erfahrung ist der Schlüssel, die Kenntnis der “Regeln” und der Syntax der Sprache ist natürlich ein Muss, aber es ist nur eine Basis. Das Erlernen der üblichen Fallstricke und Redewendungen, um die Dinge richtig zu machen, ist der Schlüssel.

Zu wissen, ob es Ressourcen gibt, von denen Sie beim Programmieren Hilfe erhalten können, und natürlich Ihre Werkzeugkette zu kennen. Ich kenne viele C++-„Experten“, die noch nie einen Debugger oder einen Speichertracker verwendet haben. Wenn Sie mich fragen, ist es etwas anderes, ein Experte in etwas zu sein, als in etwas kompetent zu sein, wenn Sie alle Aspekte davon kennen.

Auf einer Jobmesse ist jeder Experte

Benutzer-Avatar
Ian Terell

Sie sind ein C-Experte, wenn Sie alle Fragen mit dem Tag „c“ auf stackoverflow.com beantworten können, ohne zu blinzeln.

Benutzer-Avatar
Pitarou

Dies beantwortet Ihre Frage nicht direkt (sorry), aber es könnte Ihnen bei der Entscheidung helfen, wie Sie sich selbst einordnen.

Statt nur „Experte“ und „ahnungsloser Neuling“ bevorzuge ich das dreistufige Expertensystem der mittelalterlichen Zünfte:

Lehrling

  • Muss noch RTFM.
  • Sich mit den Werkzeugen und Techniken seines Handwerks vertraut machen.
  • Benötigt Aufsicht.

Geselle

  • Hat das Effin-Handbuch gelesen.
  • Beherrscht alle gängigen Werkzeuge und Techniken seines Handwerks.
  • Kann alleine arbeiten und Auszubildende bei Routinearbeiten beaufsichtigen.

Meister

  • Hätte The Effin’ Manual schreiben können.
  • Entwickelt oder übernimmt neue Tools und Techniken.
  • Kann ein größeres Projekt beaufsichtigen, das vielleicht noch nie zuvor versucht wurde.

Auf einer Jobmesse? Es gibt keine Experten: Jeder ist ein Experte. 🙂

1362410cookie-checkWas macht Sie zu einem C-Programmierexperten? [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy