Sind Pufferüberläufe für Diplom-Entwickler akzeptabel? Setzen wir die Messlatte zu hoch? Was sind die erwarteten Fähigkeiten von Diplom- / Nachwuchsingenieuren?
Kontext:
Derzeit suchen wir Junior-Entwickler, die hauptsächlich in C unter Linux arbeiten.
Als Teil des Prozesses verlangen wir von den Kandidaten, dass sie einen Code-Test nach Belieben in C absolvieren.
Bisher haben wir zwei Kandidaten mit der Begründung abgelehnt, dass ihr Code, obwohl lesbar und in einem Fall eher idiomatisch, aufgrund von unbegrenzten Pufferschreibvorgängen unter Pufferüberlauffehlern litt.
[Bearbeiten]:
- Wir bitten ausdrücklich um einen fehlergeprüften Qualitätscode für die Produktion.
- Wir bieten ein Test & Build-Framework für die Kandidaten
[Aktualisieren]:
Aufgrund dieses Themas und der persönlichen Gespräche mit anderen Entwicklern ändern wir die Art und Weise, wie wir Codetests durchführen und an wen wir uns bei unserer Personalbeschaffung wenden.
Wir sind zu dem Schluss gekommen, dass ein Kandidat, der einen Pufferüberlauf nicht beheben oder verstehen kann, für die von uns ausgeführte Arbeit ungeeignet ist, insbesondere mehr Mentoring in Anspruch nimmt, als wir vertragen. Wir werden daher weiterhin Kandidaten ablehnen, die letztendlich kein robustes Codebeispiel einreichen können.
Wir haben jedoch einige Maßnahmen ergriffen, um den Einstellungsprozess für uns und die Kandidaten produktiver zu gestalten.
Bestimmtes:
- Wir machen unsere Erwartungen deutlicher, indem wir klar erläutern, was wir unter Produktionsqualität verstehen, und warnen, dass der Code in Bezug auf Eingaben und Fehler robust sein soll.
- In der Beschreibung des Codetests verknüpfen wir Kandidaten nun mit Ressourcen zur defensiven Programmierung und der C-Standardbibliothek.
- Wir haben unsere Zielgruppe von Junior-Entwicklern und Absolventen geändert, um Menschen mit relevanter Erfahrung anzusprechen.
- Für den Fall, dass der eingereichte Code auf irgendeine Weise fehlschlägt, aber ansonsten akzeptiert würde, stellen wir jetzt einen minimalen Testfall bereit, der die Fehlerbedingung verursacht, und geben den Kandidaten die Möglichkeit, ihre Fehler zu korrigieren (es sei denn, der Code wird aus einem anderen Grund abgelehnt). Gegebenenfalls weisen wir auch auf problematische Linien / Funktionen hin.
- Das Ziel der Tests selbst hat sich nun leicht von einem Front-End-Filter zu einer Chance gewandelt, ein besseres Bild des Kandidaten zu erstellen, insbesondere wird dies unsere Telefondiskussion informieren. Trotzdem sind wir immer noch bereit, nur auf der Basis von Code abzulehnen.
[Update 09.07.2015]: Andy Davis von Nujob hat einen interessanten und relevanten Artikel über die Verwendung eines Codetests aus Sicht des Kandidaten geschrieben, und der Artikel ist einen Blick wert. Finden Sie es hier .