kutombawewe.net

Wird meine Arbeit an einem Entwicklertest ausgenutzt?

Ich suche einen Job und habe mich auf eine Reihe von Stellen beworben. Ein Arbeitgeber antwortete. Ich hatte ein ziemlich langes Telefoninterview (vielleicht eine Stunde +) und sie haben mich dann mit einem Entwicklertest ausgestattet. Mir wurde gesagt, dass der Test voraussichtlich zwischen 6 und 8 Stunden dauern würde und dass ich für meine Arbeit bezahlt würde, sofern die Ergebnisse ihre Zustimmung fanden.

Das gab mir eine Pause, aber ich bemühte mich. Der Entwicklertest fand auf einem VM statt, auf den über RDP zugegriffen wurde. Die Aufgabe bestand darin, eine Suchseite in einem Webprojekt zu implementieren, die Daten vom Server anfordert, diese auf dem Bildschirm in einer Tabelle anzeigt, ein ziemlich kompliziertes Suchfilterungsschema aufweist (es gibt ungefähr 15 Status und beim Senden der Suche an den Server Sie kann nach diesen Status suchen) zusätzlich zur String-/Feldsuche. Außerdem möchten sie, dass SVG Symbole die Farbe bestimmter Datenwerte ändern und einige Daten anders dargestellt werden als in der Datenbank strukturiert.

Kurz gesagt, das dauerte viel länger als 6-8 Stunden. Ein Großteil davon war auf die sehr schlechte VM, auf der ich lief) zurückzuführen (das Laden von Visual Studio 2013 dauerte 10 Minuten und das Öffnen der gigantischen 3-GB-Lösung weitere 15 Minuten).

Mir wurde gesagt, dass ich nach Abschluss des Tests meine Änderungen an der Quellcodeverwaltung vornehmen sollte ... Hmm, OK. Ich folgte den Anweisungen. Und nachdem ich die Änderungen vorgenommen hatte, erhielt ich eine Antwort per E-Mail. Die SVGs waren nicht richtig gefärbt, es gab einen Fehler in diesem Edge-Fall, es gab gelegentlich ein Problem mit dieser anderen Sache, die ich nie erlebt habe usw. Also bin ich jetzt 13-14 Stunden in dieser Sache und ich muss Fehlerbehebungen durchführen. Ich mache sie und der Arbeitgeber kommt mit weiteren Anfragen zur Fehlerbehebung zurück.

Alle meine Arbeiten gehen offenbar in eine Produktionsanwendung. Ich bemerkte einige Anomalien im Code, bei denen es so aussah, als hätten andere alle Funktionen codiert, aber nichts anderes berührt.

Werde ich nur für billige Arbeitskräfte eingesetzt? Selbst wenn sie mir die versprochenen 50 Dollar pro Stunde für 6 Stunden bezahlen, habe ich jetzt ungefähr 18 Stunden für diese Sache aufgewendet. Wenn ich all die Dinge behebe, die sie mir immer wieder einfallen lassen, habe ich mindestens 16 Stunden kostenlos gearbeitet.

Ich habe eine Reihe von Entwicklertests durchgeführt, aber noch nie einen, bei dem ich an Code gearbeitet habe, der für die Produktion bestimmt ist. Ich habe noch nie einen Test gemacht, bei dem ich eine Funktion implementiert habe, die sich in der Entwicklungsphase befindet, und ich habe noch nie einen Test gemacht, der 4 Runden und insgesamt mehr als 20 Stunden dauerte. Ich habe den Eindruck, dass sie ihren Entwicklertest verwenden, um einige der Funktionen billig einzusetzen.

Habe ich den falschen Eindruck? Und ist dieses Testprotokoll angemessen?

154
CodeWarrior

Ich würde niemals an einem Code-Test dieser Art teilnehmen. Ich habe viele Codetests gemacht und viele Codeprojekte durchgeführt. Ich würde unter keinen Umständen Code in das Repository eines anderen einchecken. Wenn sie nach einer 4-stündigen Probe mit einer geringfügigen Fehlerkorrektur in einer Paarprogrammierungssitzung nicht wissen, was sie wissen müssen, werden sie es nie erfahren.

Wenn Sie in einen Test gehen, sollten Sie einige Dinge im Voraus wissen und klarstellen:

  1. Es sollte vereinbart und bekannt sein, dass während des Tests erstellte Arbeiten nur für die Bestimmung Ihrer Fähigkeiten bei den erforderlichen Aufgaben verwendet werden dürfen.
  2. Ein Codetest sollte nicht länger als 4 Stunden dauern.
  3. Sie sind kein Mitarbeiter des Unternehmens, daher ist jeder Vorschlag, dass Sie für den erstellten Code bezahlt werden, absurd. Bestehen Sie auf einem schriftlichen Zahlungsvertrag, wenn es überhaupt einen Hinweis darauf gibt.
  4. Legen Sie bestimmte Grenzwerte für die Zeit fest, die Sie für einen bestimmten Teil des Tests aufwenden, und halten Sie sich dann an diese Grenzwerte. Wenn Sie aus irgendeinem Grund die Grenzwerte überschreiten, überlegen Sie, warum Sie diese Grenzwerte überschreiten. Liegt es am Druck von ihnen? Liegt es daran, dass Sie Fehler gemacht haben? Liegt es daran, dass Sie schlecht eingeschätzt haben, wie lange etwas dauern sollte?
  5. Stellen Sie sich, wenn Sie das Gefühl haben, ein bestimmtes Thema behandelt zu haben. Wenn Sie bereits einen Fehler behoben haben und Sie aufgefordert werden, einen nahezu identischen Fehler zu beheben, sagen Sie: "Wir haben dieses Thema bereits mit Fehler x behandelt. Vielleicht könnten wir zu etwas anderem übergehen, das etwas Neues demonstriert."
  6. Unter keinen Umständen sollten Sie etwas in eine Produktionspipeline einchecken. Dies schließt jede Art von Entwicklungszweig ein, die letztendlich zu einer Produktionspipeline führen kann. Wenn Sie Zweifel haben, checken Sie nichts ein. Bei Codetests, die nicht unbedingt persönlich sind, bestehe ich darauf, dass der Code zuerst in mein persönliches öffentliches Repository eingecheckt wird. Dies gibt mir zumindest einen gewissen Schutz vor unangemessener Verwendung meiner Arbeit.
  7. Beurteilen Sie sie genauso nach ihrem Verhalten, wie sie Sie beurteilen. Wenn Sie das Gefühl haben, dass sie nicht vorne mit Ihnen sind, rufen Sie sie an. Wenn Sie das Gefühl haben, misshandelt zu werden, melden Sie sich.

Das Unternehmen, mit dem Sie ein Interview führen, wird ebenfalls von Ihnen interviewt. Wenn sie so jemanden behandeln, den sie interviewen, ist dies ein Unternehmen, für das Sie arbeiten möchten? Ich verstehe, dass Menschen oft ein Bedürfnis nach einem Job haben und dieses Bedürfnis oft einige vernünftige Konzepte außer Kraft setzt, aber dies sollte immer im Vordergrund Ihres Geistes stehen. Hab keine Angst rauszugehen. Wenn es sich nicht richtig anfühlt, folge deinen Instinkten und stimme mit deinen Füßen ab.

168
Joel Etherton

Auf viele Interviews folgen Tests. Diese Tests sind erforderlich, um sicherzustellen, dass Sie tatsächlich über die erforderlichen Fähigkeiten verfügen, und um einen besseren Überblick über einige Dinge zu erhalten, die während des Interviews selbst schwer zu testen sind (z. B. wenden Sie Stilregeln auf Ihren Code an).

Davon abgesehen ist ein Test ein Test.

  • Es muss nicht lange dauern. Nach acht Stunden Codierung ist nicht mehr viel zu sehen, was Sie nach 30 Minuten nicht mehr sehen können. Noch wichtiger ist, Code, der während des Tests geschrieben wurde, sollte dann Zeile für Zeile überprüft werden, was eine wichtige Zeit in Anspruch nimmt. Es ist nicht ungewöhnlich, mehr als zwei Stunden damit zu verbringen, den während einer halben Stunde geschriebenen Testcode zu überprüfen.

  • Es sollte sich nicht um eine vorhandene Codebasis handeln. Das Verständnis der Codebasis eines mittelgroßen Produkts kann Tage oder Wochen (oder Monate oder Jahre, abhängig von der Codequalität und der technischen Verschuldung) dauern. Geistiges Eigentum kann ebenfalls ein Problem sein (es sei denn, der Code ist Open Source).

    Wenn das Ziel darin besteht, zu testen, wie der Kandidat die vorhandene Codebasis aufrechterhalten kann, kann der Test auf einer kleinen (500-600 LOC) fiktiven Codebasis durchgeführt werden, die speziell für die Tests geschrieben wurde.

  • Es muss keine Anfrage sein, um eine echte App oder Funktion zu entwickeln. Es kann ein völlig nutzloser Code sein, der mit der alleinigen Absicht geschrieben wurde, zu zeigen, dass Sie das Problem verstanden und einen eleganten Weg gefunden haben, es zu lösen.

  • Es muss nicht perfekt sein. Es gibt Fehler? Das ist gut. Notieren Sie sich diese für ein weiteres Interview mit dem Kandidaten. Es kann eine hervorragende Gelegenheit sein, zu sehen, wie der Kandidat in dieser Situation reagiert.

  • Dies muss nicht über RDC auf einer VM erfolgen, es sei denn, Sie haben selbst kein Visual Studio. Wenn das Ziel darin besteht, Ihre Codierungs- und Problemlösungsfähigkeiten zu erkennen, spielt es keine Rolle, wo Sie die Übung durchführen.

  • Es steht außer Frage, dass der während dieses Tests geschriebene Code in die Versionskontrolle des Unternehmens gelangt. Warum sollten sie ihre Versionskontrolle mit etwas verschmutzen, das von einem Kandidaten geschrieben wurde?

Wenn Sie aufgefordert werden, Dutzende von Stunden damit zu verbringen, Produktionscode zu schreiben, Fehler zu beheben und Ihre Arbeit der Versionskontrolle des Unternehmens zu übertragen:

  • Entweder verwenden sie Sie nur, um Funktionen kostenlos zu implementieren.

  • Oder sie verstehen wirklich nicht, wie man ein Interview macht.

Suchen Sie in beiden Fällen nach einem besseren Arbeitsplatz.

46

Ich werde keine lange Antwort schreiben, aber ich bin ernsthaft verwirrt, warum spricht niemand das Thema Urheberrecht an?

Nach meiner Erfahrung habe ich noch nie von einer Vereinbarung zur Übertragung des Urheberrechts an Code, der während eines Entwicklertests geschrieben wurde, auf die andere Partei gehört. Wenn dies der Fall ist, können Sie sie tatsächlich wegen Urheberrechtsverletzung verklagen, und der dafür gewährte Schaden kann sehr schön sein, insbesondere in den USA aufgrund der Geschichten, die ich gehört habe. Und wenn sie sich einig werden wollen (schlagen Sie dies vor), können Sie eine exorbitante Gebühr für die Zuwiderhandlung verlangen (nach der sie Ihre Arbeit grundsätzlich immer noch nicht verwenden dürfen und Sie Ihre Arbeit trotzdem an sie verkaufen könnten, wenn sie noch interessiert wären ).

22
David Mulder

Menschen mit mehr Berufserfahrung können diese Frage vielleicht besser beantworten, aber ich persönlich würde mich mit einem mehr als 20-stündigen Entwicklertest nicht sehr wohl fühlen. Es hört sich so an, als würden sie das Interview nutzen, um Arbeitsaufgaben zu erledigen.

Ich gehe davon aus, dass Sie keine rechtlichen Dokumente zum Eigentum an dem Code unterschrieben haben. Also würde ich warten, bis sie den Code überprüft und akzeptiert oder abgelehnt haben. Wenn sie es dann akzeptierten, würde ich darum bitten, für die volle Zeit, mehr als 20 Stunden, bezahlt zu werden. Ich bin mir nicht sicher, ob ich nur die ursprünglich vorgeschlagenen sechs Stunden bezahlen würde. Wenn dies in Produktion gehen soll, müssen sie den Code-Besitz begradigen.

Zumindest sollte die Besprechung der Zahlung für den Code Ihnen bei der Entscheidung helfen, ob Sie ein Angebot annehmen möchten. Ich würde kein Angebot annehmen wollen, wenn sie dachten, es wäre fair, Sie nur sechs Stunden lang zu bezahlen.

12
midfield99

Als ich in der Lage war, Entwickler zu interviewen, waren diese Tests kurz und einfach "bestanden oder nicht bestanden", ohne Fehlerbehebung, selbst wenn der Code einige kleinere Fehler enthielt. Das liegt daran, dass ich die Fähigkeiten des Kandidaten bewerten und keine produktionsbereite Software erhalten wollte.

Die in der Frage beschriebene Situation sieht sehr danach aus, als würde jemand versuchen, etwas Nützliches kostenlos (oder billig) zu bekommen.

11
user281377

Ich habe noch nie einen Entwicklertest durchgeführt, der länger als eine Stunde dauerte, und das waren alles 'Rätsel', eine Arbeit, um zu sehen, ob ich Probleme lösen und ein bestimmtes Ziel innerhalb eines bestimmten Zeitlimits erreichen kann.

50 US-Dollar (oder für mich 25 bis 30 Pfund) sind ein ziemlich schlechter Tagessatz. Es ist, als würde man einen Klempner bitten, seine Toilette im Austausch für ein Getränk zu reparieren.

Mein Rat ist, ohne Zweifel, über Ihre Erfahrungen zu bloggen und sich namentlich auf das Unternehmen zu beziehen, falls sie versuchen, eine ganze App mit dieser Technik zu erstellen (Leute googeln häufig Unternehmen, bevor sie zum Interview gehen) und nicht zuzulassen es passiert wieder. Wenn sie das nächste Mal nach einer Fehlerbehebung fragen, geben Sie einen Beratungstag an (mindestens das Fünffache des Angebots) und machen bekannt, dass Entwickler nicht kostenlos arbeiten.

Sich täuschen zu lassen ist leider ein Teil des Lebens, aber man muss sich nicht zurücklehnen und es akzeptieren.

7
AJFaraday

Während Sie angeblich für (einen Teil) Ihrer Arbeit bezahlt werden, klingt dies nicht nach einem Testprojekt , sondern nach einem Betrug, um billige/kostenlose Arbeit aus Ihnen herauszuholen. Es kann sein, dass es beabsichtigt war , ein Testprojekt zu sein, nur nicht sehr strukturiert oder sehr gut verwaltet.

Aber ein Management, das so schlecht ist, dass es sich wie ein Betrug anhört, sollten Sie auf jeden Fall berücksichtigen, wenn Sie entscheiden, ob Sie den Job annehmen oder nicht.

Ein ordentliches Versuchsprojekt sollte dies klarstellen

  • Sie haben Arbeit, die sie gerne getan hätten.
  • Basierend auf Ihrem Interview glauben sie, dass Sie in der Lage sein sollten, die Arbeit zu erledigen.
  • Ein erfolgreicher Abschluss des Projekts garantiert keine Position.
  • Bedingungen für das Projekt (wie viel sie bezahlen, wem der Code gehört, ob es sich um Zeit und Material oder um eine Flatrate handelt, geschätzte Zeit bis zur Fertigstellung usw.).
  • Das Projekt wird überprüft und Feedback gegeben - nicht nur ein Ja/Nein, ob Sie die Stelle bekommen oder nicht.

Die Bedingungen sollten für Sie akzeptabel sein, unabhängig davon, ob Sie eingestellt werden. Wenn die Bedingungen nur akzeptabel sind, wenn sie mit einem Vollzeitjob verbunden sind, sind sie nicht wirklich akzeptabel.

3
jmoreno

Nur zum Vergleich: Das Interview für meinen aktuellen Job dauerte ungefähr eine Stunde und sprach darüber, was ich bisher gemacht habe und was das Unternehmen vorhat und wie ich dazu passen würde. Danach arbeiteten wir eine Woche zusammen an einem kleinen Projekt, das sie gelogen hatten Ich denke nur, um zu sehen, wie wir miteinander auskommen. Sie haben mir als Freiberufler den gleichen Betrag bezahlt, den ich jetzt als Angestellter bekomme, also gab es nie einen ganzen Tag unbezahlter Arbeit, geschweige denn 3 Tage.

Wenn der Code wirklich in der Produktion verwendet wird, würde ich ihnen die Rechnung für die 24 Stunden senden, die Sie verbracht haben, und nicht Ihre Schuld, wenn ihre Schätzungen falsch sind. Angenommen, Sie haben nicht geschätzt, wie lange es dauern wird.

3
user136346

Ich glaube nicht, dass sie dies tatsächlich nutzen würden, um billige Arbeitskräfte zu bekommen.

Der Grund ist einfach. Nachdem Sie diese Tests geschrieben haben, müssen die Benutzer überprüfen, was Sie schreiben. Ja, das Überprüfen von Code ist viel einfacher als das Schreiben des Codes selbst, aber es dauert immer noch viel Zeit.

Und danach brauchen sie wahrscheinlich Leute, die diese Tests aufrechterhalten, erklären usw.

Und ich kann mir einfach kein IT-Unternehmen vorstellen, das weniger als 100 US-Dollar sparen möchte, insbesondere Unternehmen in den USA. So läuft das Geschäft nie.

2
InformedA

Ich glaube fest an Codetests für Entwickler, die sich für einen Job bewerben. Dies klingt jedoch wie der Codetest aus der Hölle ... Codetests sollten niemals Produktionscode beinhalten. Sie sollten einfach sein und angeben, dass keine der geleisteten Arbeiten vom Unternehmen verwendet wird.

Ihre Arbeit betraf eindeutig den Produktionscode. Sie sollten für Ihre gesamte Zeit bezahlt werden - mindestens. Versuchen Sie, mit einem Anwalt zu sprechen, und prüfen Sie, ob er der Meinung ist, dass es sich lohnt, sie zu verklagen. Viele Anwälte bieten kostenlose Erstberatungen an. Wenn es sich um Betrug handelt und dies in diesem Fall so aussieht, haben Sie das Recht, den Geldschaden zu vervierfachen, und möglicherweise können Sie zusätzlich noch einen schönen Strafschadenersatz erhalten.

Wenn Sie sie verklagen und gewinnen, werden Sie einige Schlagzeilen machen und diese Praxis in Zukunft von anderen abschrecken - was für alle Softwareentwickler von Vorteil ist, die nach einer neuen Position suchen.

2
Bob Bryan

Codierungstests sind leider eine Tatsache des Lebens. Das heißt, es stört mich, wenn ich gebeten werde, vier Stunden bei einem Codierungstest zu blasen, um mein erstes Telefon-Screening zu erhalten. Es ist unfair, einen Kandidaten zu bitten, so viel zu investieren, wenn das Unternehmen so wenig in die Beziehung investiert hat.

Ich bin ein leitender Entwickler und kann den Codierungstest bestehen. Aber ich werde nicht viel Zeit damit verschwenden, es sei denn, das Unternehmen hat persönliches Interesse an mir gezeigt. Im Allgemeinen fülle ich keine Bewerbung bei einem Unternehmen mit einem großen, schlecht geschriebenen Online-Bewerbungsformular aus, in dem ich aufgefordert werde, meinen Lebenslauf erneut einzugeben, damit der schlecht geschriebene Roboter die Keyword-Suche verpfuschen kann. Ich bin im Allgemeinen nicht damit einverstanden, einen Codierungstest durchzuführen, es sei denn, er ist kurz oder sie sehen ihn live und sprechen mit mir.

Selbst wenn sie Ihren Code nicht in Produktion bringen, ist ein Unternehmen, das möchte, dass Sie eine ganze Menge Zeit mit dem Tippen verbringen, bevor Sie herausfinden, ob Sie überhaupt gut passen, ein Unternehmen, das Sie bequem ausnutzt. Sie signalisieren, wie ihre Beziehung aussehen soll. Du bist der Code-Affe. Sie geben den Ton an. Und ihr Interviewprozess ist darauf ausgerichtet, Menschen zu finden, die mit dieser Beziehung vertraut sind.

Sei kein Code-Affe. Weggehen.

0