Ich habe mich gefragt, ob es für einen Doktoranden im Bereich Informatik ethisch vertretbar wäre, einen Programmierer in einem bestimmten Bereich einzustellen. damit er sich mehr auf den algorithmischen oder mathematischen Teil der Arbeit konzentrieren konnte. Wäre das etwas ethisches zu tun? Soll der Doktorand diesen Assistenten als Co-Autor in die Artikel aufnehmen?
Ich denke nicht, dass es von Natur aus unethisch ist, dies zu tun. Wenn alle relevanten Parteien davon wissen und Sie die Arbeit dieser anderen Person gewissenhaft anerkennen, dann sehe ich kein spezifisches Problem.
Ob es ratsam ist, ist eine andere Frage ... und die sollten Sie auf jeden Fall Ihrem Berater stellen. Ich muss sagen, dass es sich für mich nicht nach einer so guten Idee anhört. Ihre Abschlussarbeit ist für Sie zu tun ... fast per Definition. Es ist völlig in Ordnung, Hilfe von anderen für Ihre Abschlussarbeit zu bekommen, und einige Leute sind bessere Programmierer als andere (selbst in CS, nehme ich an), also ist es eigentlich eine gute Idee, ein paar Hinweise von einem Freund zu bekommen. Aber jemanden zu bezahlen , der einen Teil Ihrer Abschlussarbeit macht, klingt für mich einfach nicht gut. Entweder ist die Programmierung ein wichtiger Teil Ihrer Abschlussarbeit oder nicht. Wenn ja, sollten Sie es selbst tun. Wenn dies nicht der Fall ist, müssen Sie es vielleicht gar nicht oder nicht in dem Maße tun, wie es ein externer Fachmann tun würde.
Es stellt sich auch die Frage, welchen Eindruck diese Untervergabe auf andere machen würde. Vielleicht sind die kulturellen Normen in Ihrem Fach ganz anders als bei mir (wieder: fragen Sie Ihren Betreuer), aber ich hätte einen eher negativen Eindruck von einem Doktoranden, der dies getan hat: Sie scheinen nicht sehr engagiert für ihre eigene Arbeit zu sein.
Zusatz : Um es klarzustellen, ich interpretiere die Frage so, dass der Doktorand selbst die Einstellung vornimmt, dh dass dies seine Idee ist und er seine eigenen Mittel verwendet. (Wenn seine Universität ihm Geld gibt und ihn einfach bittet, jemanden für die Zusammenarbeit auszuwählen, dann wird sogar die Frage „Ist es ethisch vertretbar?“ weniger plausibel.)
In Bezug auf den Verdacht, dass dies keine gute Idee ist, hoffe ich, dass ich klargestellt habe, dass dies meine persönliche Meinung ist, mit Erfahrungen aus einem Bereich (Mathematik), der ziemlich eng mit Informatik verwandt ist, aber nicht unbedingt identisch ist. Wie gesagt, das OP sollte sich diesbezüglich an seinen Berater wenden. Aber für das, was es wert ist, fällt es mir schwer zu glauben, dass die Reaktion lauten wird: "Klar, gib dein Geld aus." Obwohl es seitens des OP nicht unethisch ist , scheint es, sagen wir, suboptimal, wenn sowohl der Berater als auch der Student der Meinung sind, dass dies der beste Weg ist, um fortzufahren.
Sicher, aber ich bezweifle, dass Sie es sich leisten können.
Mal sehen, welche Optionen es gibt:
Sie können einen Teilzeitstudenten einstellen, um einen Teil Ihres Codes zu schreiben, aber die Chancen stehen gut, dass Sie mehr Zeit damit verbringen werden, ihre Fehler auszugraben und ihnen beizubringen, wie es dauern würde, den Code selbst zu schreiben. Wahrscheinlich nicht wert. 1
Oder Sie könnten einen echten Programmierer bekommen , aber ein guter professioneller Programmierer kostet viel mehr als ein Doktortitel. Studenten verdient, und wahrscheinlich sogar mehr als sie kosten (in den USA nimmt die Universität für jeden Doktoranden eine enorme Kürzung des Stipendiums, die ungefähr dem Stipendium des Studenten entspricht). Wahrscheinlich lohnt es sich nicht, es sei denn, Sie sind unabhängig reich.
Erschwerend kommt hinzu, dass selbst ein professioneller Softwareentwickler nicht in der Lage ist, Ihre Gedanken zu lesen. Ihre Aufgabe ist es, extrem große Systeme mit vielen beweglichen Teilen handhabbar zu machen. Als Informatik Ph.D. Sie konzentrieren sich wahrscheinlich stärker auf eine bestimmte Komponente, die Sie gut genug verstehen müssen, um den Code selbst zu schreiben.
In beiden Fällen klingt es nicht nach einem sehr guten Geschäft für Sie.
1 Beachten Sie, dass dies nur zutrifft, wenn Ihr Endziel einfach darin besteht, das eigene Programmieren zu vermeiden. Andererseits sind Beraten und Betreuen äußerst wertvolle Fähigkeiten, und als Akademiker besteht Ihre Aufgabe nicht nur darin, Ihre Arbeit zu erledigen, sondern das Feld als Ganzes zu unterstützen. Indem Sie Studenten einstellen, tun Sie möglicherweise mehr für das Fachgebiet, als Sie jemals durch die Einstellung eines Fachmanns tun könnten, und zukünftige Arbeitgeber werden dies zur Kenntnis nehmen. Wenn Sie sie als eigenständige Forscher behandeln, haben sie möglicherweise einige wertvolle Erkenntnisse, aber Ihre Frage bezog sich speziell darauf, sie nur zum Schreiben von Code einzustellen.
Ich skizziere, warum ich es für ethisch vertretbar halte und stelle dies dem in der Frage beschriebenen Fall gegenüber . . Außerdem antworte ich mit einer Perspektive aus Deutschland.
tl;dr: Ja, es ist ethisch vertretbar und wird routinemäßig durchgeführt.
Die oben verlinkte Frage stellt explizit eine ähnliche Frage aus Sicht eines Studenten. In dieser Phase der Ausbildung gelten, wie auch in RoboKarens Antwort darauf hingewiesen wird , bestimmte Einschränkungen (möglicherweise normalerweise) (und in vielen Fällen gelten weiterhin bis zu einem Master-Abschluss):
Mit Eintritt in die Promotion ergeben sich jedoch einige Änderungen:
Solange der Doktorand für die konzeptionelle Entwicklung der Forschung und ihrer Ergebnisse „verantwortlich“ ist, ist es daher durchaus akzeptabel, einige Teilaufgaben auszulagern. Ein weiterer Punkt ist, dass der Doktorand erste praktische Erfahrungen in der Einstellung und Führung eines Teams sammeln soll.
Nachdem dies gesagt wurde, komme ich auf meine obige Aussage zurück, dass dies routinemäßig durchgeführt wird, um einige beispielhafte Szenarien aus der realen Welt bereitzustellen. Ich kann mir sowohl bezahlte als auch unbezahlte Varianten davon vorstellen:
EDIT: Abschließend möchte ich ein konkreteres hypothetisches Beispiel hinzufügen, um zu veranschaulichen, welche Arten von Aufgaben von einem solchen "unterstützenden Programmierer" ausgeführt werden könnten:
Stellen Sie sich einen Doktoranden vor, der im Bereich HCI forscht, um einige neue GUI-Elemente zu entwickeln. Der kreative Forschungsteil der Arbeit besteht darin, etwas über verwandte Arbeiten zu lernen, ein neues Konzept für ein GUI-Steuerelement zu entwickeln und einige Skizzen davon auf ein Blatt Papier zu zeichnen sowie einige Testaufgaben zu entwerfen/auszuwählen, um die zugrunde liegenden Hypothesen zu validieren Design.
Bevor dies in eine Publikation umgewandelt werden kann, ist jedoch noch viel Arbeit zu leisten. Basierend auf dem skizzierten Design muss ein interaktiver Prototyp programmiert werden. Es muss etwas ausgefallen aussehen (3D-/Hochglanz-Optik, Animationen usw., was auch immer moderne Software-GUIs in der Regel ausgefallen sind), da die Studienteilnehmer sonst durch einen direkt sichtbaren Mangel an Ausgefallenheit extrem abgelenkt und nicht in der Lage sind die eigentlichen Neuheiten des getesteten GUI-Konzepts durchschauen und damit die Ergebnisse im qualitativen Teil jeder Studie völlig verzerren. Um sicherzustellen, dass Aufgaben nicht als unrealistisch kritisiert werden können, müssen einige echte oder zumindest echt aussehende Daten in den Prototyp integriert werden. Das bedeutet normalerweise das Hinzufügen von Code zum Laden (und möglicherweise Importieren/Konvertieren) eines oder mehrerer vorhandener Datensätze. Soll das Nutzerverhalten aufgezeichnet und/oder zeitlich erfasst werden,
Der gesamte letzte Absatz enthält kein einziges „wissenschaftlich kreatives“ Forschungsstück, dies ist nur einfache Arbeit, die getan werden muss, und es dauert normalerweise ein paar Wochen, bis sie richtig ist. Gegen Ende des Absatzes befinden wir uns sogar weit außerhalb des eigentlichen Forschungsbereichs von HCI und tief in Low-Level-Dingen wie I/O und Datenbankzugriff. Der gesamte letzte Absatz eignet sich hervorragend zum Outsourcing, und von einem Doktoranden wird nicht automatisch erwartet, dass er dies alles selbst erledigt hat.
EDIT2: Noch ein Hinweis, da sich verschiedene der anderen Antworten auf die Codequalität beziehen: Es stimmt, dass im Fall der Einstellung von Studenten wie oben beschrieben die Qualität des produzierten Codes möglicherweise geringer ist als die, die von einem professionellen Programmierer bereitgestellt würde (normalerweise nicht verfügbar in den Einstellungen, die ich in dieser Antwort beschrieben habe). Jedoch
Ich empfehle Ihnen, Ihre Karriereziele zu berücksichtigen. Wenn Sie beabsichtigen, eine Karriere als Softwareentwickler einzuschlagen, würde ich argumentieren, dass dies mit den gegebenen Credits ethisch vertretbar ist, aber keine gute Praxis ist.
Ich war in den letzten zwei Jahrzehnten Personalchef und Ausbilder in der Softwareentwicklung, und eine Konstante, der ich begegnet bin, ist, dass ihr Code umso schlechter ist, je gebildeter Softwareentwickler sind.
Sie können komplexe Probleme im Code lösen, aber ihr Code ist im Allgemeinen nicht wartbar. Dies ist etwas, bei dem ich keinen Erfolg hatte, es zu korrigieren. Dies ist zu einem solchen Problem geworden, dass Lebensläufe für Softwareentwickler mit einem Doktortitel oder Doppelmaster unter Kandidaten ohne Abschluss ganz unten im Stapel der Lebensläufe landen.
Ich werde den anderen Antworten fast vollständig widersprechen. Wenn Sie in einer CS-Promotion sind (es sei denn, Sie studieren streng Theoretische Informatik) und Sie während der Promotion nicht einmal Ihre eigenen Algorithmen programmieren können, sind Sie im falschen Geschäft. Es ist völlig in Ordnung, mit anderen Leuten beim Schreiben / Teilen des Codes zusammenzuarbeiten (nicht zu bezahlen), aber jemand anderen für Sie zu programmieren (weil Sie es nicht tun können) ist dumm bis grenzwertig gefährlich. Sie können den Algorithmus nicht vom Code trennen (es sei denn, Sie befinden sich erneut in der rein theoretischen Informatik) und die Leistung des Algorithmus (bei einem tatsächlichen Experiment) steht in direktem Zusammenhang mit der Implementierung des Algorithmus.
Wie werden Sie überprüfen, ob Ihr angestellter Programmierer eine korrekte Implementierung durchgeführt hat? Sie können dies nicht tun, es sei denn, Sie gehen seinen Code erschöpfend durch, was tatsächlich länger dauern könnte, als Ihre Version des Algorithmus zu implementieren. Aber selbst dann wirst du nie ganz sicher sein. Was werden Sie tun, wenn Sie an eine neue kleinere Optimierung denken? Ihm eine E-Mail schreiben, auf die Umsetzung warten und 2 Tage später die Antwort bekommen? Viel Glück bei der Fertigstellung Ihrer Arbeit in den nächsten 3 Jahren für einen solchen Workflow. Aber selbst wenn Sie es schaffen, es zu beenden, besteht immer diese 1%ige Chance, dass bei seiner Implementierung etwas schief gelaufen ist und alle Ihre Hypothesen in Rauch aufgehen, wenn jemand anderes Ihren Algorithmus selbst implementiert und Ihnen das Gegenteil beweist. Was werden Sie dann tun? Ihm die Schuld geben? Wie werden Sie in der Lage sein, die Fragen zu Ihrer Arbeit zu beantworten, die jemand anderes für Sie erledigt hat? Und sagen Sie, Sie schaffen es, die erste Arbeit mit der angestellten Hilfe fertigzustellen, und dann geht er zu einem anderen Job. Was werden Sie in Ihrer nächsten Arbeit machen? Jemand anderen einstellen, um den Code des vorherigen Programmierers zu pflegen und zu erweitern?
Auch als PHD oder Postdoc können Sie (als technischer Manager) mit der Leitung eines Forschungsprogramms betraut werden, das Ihrem Fachwissen nahe kommt und möglicherweise einen erheblich größeren Umfang als eine Forschungsarbeit hat. Wie Sie Ihren Kollegen oder jüngeren Kollegen sagen, was sie tun sollen, wenn Sie sich immer darauf verlassen, dass jemand anderes für Sie programmiert. Wie können Sie trennen, was innerhalb des Zeitrahmens des Projekts machbar ist oder nicht, wenn Sie nicht einmal Ihre Algorithmen selbst implementiert haben?
Wenn Sie älter werden (Postdoc und darüber hinaus), schreiben andere möglicherweise mehr Code als Sie auf Ihren mitverfassten Artikeln. Aber selbst dann müssen Sie in der Lage sein, ihren Code auf Fehler und Inkonsistenzen zu überprüfen und vorherzusagen, wie sich der Code / Algorithmus bei ausgewählten Testfällen verhalten wird (es sei denn, Sie befinden sich erneut in streng theoretischer Informatik). Dies ist nicht etwas, das Sie durch Pseudocode, High-Level-Abstraktion oder Abkürzungen lernen, sondern etwas, das Sie lernen, indem Sie Ihre Gebühren durch stundenlanges Debuggen, Codieren und fehlgeschlagene Experimente bezahlen. Sie können keinen PhD in Mathematik bekommen, indem Sie jemand anderen die Beweise für Sie machen lassen. Warum gehen Sie davon aus, dass CS anders ist?
Wenn der Großteil der Programmierarbeit problemlos in eine allgemeine Bibliothek passen würde, können Sie jemanden dabei unterstützen, eine Open-Source-Bibliothek zu erstellen.
Es ist kein ethisches Problem, Open-Source-Software wiederzuverwenden.
Stellen Sie jedoch sicher, dass diese Software gut dokumentiert und verfügbar ist, um anderen Personen zu helfen, die in Ihrer Domäne arbeiten.
ff524
ff524
J...
Steve Jessop