Ist es in Ordnung, für einige Aufgaben eine Sprache zu verwenden, die von Ihrem Unternehmen nicht unterstützt wird?


27

Ich arbeite für eine Firma, die mehrere Sprachen unterstützt: COBOL, VB6, C # und Java.
Ich benutze diese Sprachen für meine Hauptarbeit, aber ich sehe mich oft damit konfrontiert, einige Nebenprogramme (z. B. Skripte) in Python zu programmieren, weil ich fand, dass es das beste Werkzeug für diese Art von Aufgabe ist.

Beispiel: Ein Analyst gibt mir eine komplexe CSV-Datei zum Auffüllen einiger DB-Tabellen, sodass ich sie mit Python analysieren und ein DB-Skript erstellen würde.

Was ist das Problem?
Das Hauptproblem, das ich sehe, ist, dass einige Teile dieser Quick & Dirty-Skripte langsam an Bedeutung gewinnen und:

  1. Mein Unternehmen unterstützt Python nicht
  2. Sie sind nicht versionskontrolliert (ich sichere sie auf andere Weise)
  3. Meine Mitarbeiter kennen Python nicht

Die Analysten haben sogar damit begonnen, sie in E-Mails zu referenzieren ("Starten des exportierenden Skripts ..."), sodass sie häufiger benötigt werden, als ich ursprünglich gedacht hatte.

Ich sollte hinzufügen, dass diese Skripte nur Dienstprogramme sind, die nicht Teil des Hauptprojekts sind. Sie helfen einfach dabei, einfache Aufgaben in kürzerer Zeit zu erledigen. Für meine eigenen kleinen Aufgaben helfen sie sehr.

Kurz gesagt, wenn ich eine Lotterie Gewinner waren in einem Unfall sein , müßten meine Mitarbeiter das Projekt am Leben ohne diese Skripte zu halten; Sie würden mehr Zeit damit verbringen, z. B. CSV-Fehler von Hand zu beheben.

Ist das ein häufiges Szenario? Mache ich etwas falsch? Was sollte ich tun?


22
Wenn Ihre Mitarbeiter ein Skript nicht finden können, nur weil es in einer anderen Sprache ist, haben Sie größere Probleme
CaffGeek

1
Ich stimme dem Tschad zu. Python kommt dem Pseudo-Code so nahe wie möglich.
Job

2
@Chad eheh nett, aber das Problem könnte ein anderes sein; Python sdk ist nicht Teil der Standardinstallation des Entwicklungscomputers. Um es zu installieren, habe ich eine Menge Kaffee an den richtigen Sysadmin gezahlt;).
Systempuntoout

3
@systempuntoout, Entwickler sollten in der Lage sein, alles, was sie wollen, innerhalb der gesetzlichen Grenzen auf ihrem Computer zu installieren. Daher ist PowerShell auf Windoze vorinstalliert, und ich habe versucht, es durch Python zu ersetzen, aber es ist nicht dasselbe. Die Randfälle schlagen mir jedes Mal ins Gesicht, wenn ich versuche, etwas Einfaches zu tun. Python erledigt einfach Dinge und wenn Unternehmensdrohnen es nicht erledigen - schade!
Job

1
Versetzen Sie sie in die Quellcodeverwaltung. Nur eine winzige Ecke irgendwo, aber legen Sie sie in.

Antworten:


42

Sie müssen die Situation formalisieren, da sie eigentlich nicht zu diesem Zeitpunkt hätte kommen sollen. Diese Dinge passieren jedoch, so dass Sie Ihrem Chef erklären müssen, dass Sie diese Skripte für den persönlichen Gebrauch erstellt haben, aber sie sind in eine größere Verbreitung "entkommen". Geben Sie zu (falls erforderlich), dass Sie schuld daran waren, dass Sie ihn nicht früher darauf aufmerksam gemacht haben.

Zumindest sollten die Skripte "nur für den Fall" der Quellcodeverwaltung unterzogen werden. Wenn Sie (aus welchen Gründen auch immer) nicht verfügbar sind, haben Ihre Mitarbeiter Zugriff auf die Skripte.

Dann müssen Sie entweder Ihren Chef davon überzeugen, dass Python die richtige Wahl ist, oder akzeptieren, dass Sie sie in einer unterstützten Sprache neu schreiben müssen. Wenn die Kosten für die Dokumentation der Skripte und die Schulung Ihrer Mitarbeiter in Python niedriger sind als die Kosten für das erneute Schreiben, können Sie sogar das Argument gewinnen.


8
+1, stimme zu. Ich kann sehen, wie so etwas sehr leicht passieren kann, aber es ist nicht unbedingt "eine schlechte Sache" oder "ein Fehler" des OP. Es begann wahrscheinlich, als das OP mit einem "einmaligen" Mini-Projekt beauftragt wurde und er ein gutes Tool, Python, auswählte, um seinen Schreibtisch schnell von dem Projekt zu befreien - aber dann stellte er fest, dass er die Aufgabe immer wieder ausführte ...
Angelo

Ich lebe das gerade. Ich habe einen Proof of Concept in Python gehackt, um mir dabei zu helfen, einen beschissenen alten C-Code zu finden, und das ganze Durcheinander als Ersatz für den alten C-Code zum Laufen gebracht, wurde aber gebeten, nach dem Ausführen der neuen Änderungen wieder in C zu schreiben . Ich habe es geschafft, etwas Python in der Hand zu halten, habe eine kleine Web-App mit Python + Flask und meinem Manager geschrieben und verwende sie ständig, um die Operationen des laufenden C-Codes zu analysieren. Es gibt also noch Hoffnung, dass Python hier offiziell adoptiert wird. :)
John Gaines Jr.

6

Ich kann Ihnen keine vollständige Antwort geben, was Sie sollten tun. Ich kann nur einen einzigen Vorschlag machen, mit dem Sie beginnen können:

Checken Sie die Skripte in ein Repository ein, auf das alle (erforderlichen) Entwickler zugreifen können. Beachten Sie jedoch unbedingt, dass Sie diese Skripte zuerst für Ihren eigenen Zweck geschrieben haben, dh um eine Ihnen übertragene Aufgabe auszuführen. Fügen Sie dann hinzu, dass Sie diese Skripte nur einchecken, um anderen den Vorteil zu geben, sie zu verwenden.

Danach müssen Sie nur noch sehen, wie andere Leute darauf reagieren.


Kommentiere sie wenn immer möglich. Hilft, schnell zu sehen, was los ist, anstatt herauszufinden, was zum Teufel Sie tun.
JD Frias

5

Ich habe bei meiner Arbeit ähnliche Probleme. Ich hörte "Was ist PHP?" vor einigen Jahren. Sie verstehen nichts außerhalb des MS-Stacks und möchten nichts lernen. Wenn Python das richtige Werkzeug für den Job ist, würde ich meinen Vorgesetzten nur davon erzählen und bereit sein, eine Menge Vergleiche anzustellen und zu erklären, warum Python die richtige Wahl war. Es wird frustrierend sein, aber ich denke, die meisten würden zustimmen, dass Python eine gute Wahl für die Textmanipulation ist.


5

Das erste, was Sie tun müssen, ist mit dem Team und Ihrem Chef zu sprechen. Im Moment haben Sie einen riesigen Lkw-Faktor (wenn Sie von einem Lkw getroffen würden, wäre niemand sonst in der Lage, Ihre Skripte zu pflegen). Es scheint wichtig zu sein, Skripte für diese Aufgaben zu haben, aber es ist auch wichtig, dass jeder, der diese Skripte bearbeiten und warten muss. Sie müssen erläutern, wie die Verwendung von Python zu einem Mehrwert führt - wie Zeit, Mühe, Ressourcen, Geld usw. gespart werden.

Zweitens, bringen Sie es in die Versionskontrolle des Projekts. Jetzt. Nichts, was Sie für ein Projekt produzieren, sollte sich jemals außerhalb der Versionskontrolle dieses Projekts befinden.

Seien Sie auf Gegenreaktionen vorbereitet - Menschen mögen normalerweise keine Veränderungen. Es war eine schlechte Idee, allein mit nicht unterstützten und unbekannten (für das Team / die Organisation) Technologien loszulegen, ohne zumindest die anderen Entwickler zu konsultieren und die beste (nicht nur für Sie, sondern für das Projekt) Methode zur Automatisierung dieser Aufgaben für alle zu finden benutzen.

Ich denke, das ist wahrscheinlich ein guter Fall von

Es ist einfacher, um Vergebung zu bitten, als um Erlaubnis.

Es hört sich so an, als hätten Sie den Job erledigt, aber Sie werden sich jetzt mit den Auswirkungen befassen müssen.


4
"" Es war eine schlechte Idee, alleine mit nicht unterstützten und unbekannten (für das Team / die Organisation) Technologien loszulegen, ohne zumindest die anderen Entwickler zu befragen und die beste (nicht nur für Sie, sondern für das Projekt) Methode zu finden, um diese zu automatisieren Aufgaben, die jeder nutzen kann. "" - Ich bin anderer Meinung. Joel Spolsky wäre nicht in der Lage gewesen, VBA für Excel zu erstellen, wenn er diesen Weg gegangen wäre. Dies ist bei weitem kein einzigartiges Beispiel.
Job

@Job Ich kann nicht über die genauen Umstände der Entwicklung von VBA für Excel sprechen, aber das klingt nach fortgeschrittener Forschung und Entwicklung oder Prototyping. Es gibt einen Unterschied zwischen fortschrittlichen F & E- und Produktionssystemen. Sie können niemals im Dunkeln alleine und isoliert von Ihrem Team arbeiten. Ich bin nicht dagegen, neue Technologien einzuführen, aber es ist wichtig, dass jeder weiß, was diese neuen Technologien sind, welche Vorteile sie haben, welche Nachteile sie haben und wie sie in einem Projekt eingesetzt werden. Etwas alleine und im Dunkeln zu machen, ist im Allgemeinen eine schlechte Idee und gefährdet ein Projekt.
Thomas Owens

@ Thomas Ich bin das Team
Systempuntoout

@systempuntoout Das kann jetzt wahr sein. Aber wird es in 6 Monaten sein? Oder ein Jahr? Die Softwareentwicklung sollte, auch wenn Sie derzeit alleine sind, niemals als Einzelaufgabe betrachtet werden - Sie müssen an den zukünftigen Entwickler oder Verwalter Ihrer Arbeit denken.
Thomas Owens

@ Thomas du hast recht; wie oben in einigen Kommentaren gesagt, habe ich portiert viele Skripte in C # (Firma unterstützte Sprache)
systempuntoout

3

Meine Faustregel lautet:

Alles, was sich möglicherweise auf die Arbeit anderer auswirkt, sollte so schnell wie möglich mit Ihren Kollegen und Vorgesetzten besprochen werden.

Aber wenn es für Sie und Sie alleine ist, können Sie alles tun, um die Arbeit zu erledigen , solange es weder die Infrastruktur noch die Sicherheit Ihres Unternehmens beeinträchtigt.


1
Woher weißt du, ob es für dich oder für andere ist? Bei der Arbeit können Sie neu zugewiesen werden oder Sie könnten kündigen. Alles, was Sie bei der Arbeit produzieren (in den meisten Fällen), gehört nicht Ihnen, sondern dem Unternehmen oder dem Kunden. Wenn sie es nicht verstehen oder warten können, ist die verlorene Zeit die Zeit, die Sie für die Entwicklung aufgewendet haben, plus die Zeit, die jemand anderes benötigt, um es zu verstehen (und möglicherweise eine neue Lösung zu entwickeln). Alles, was bei der Arbeit produziert wird, sollte als etwas für jemand anderen behandelt werden.
Thomas Owens

1
Wenn Sie während dieser Zeit Ihre persönliche Produktivität gesteigert haben, hat das Unternehmen bereits Wert auf dieses Skript gelegt und es war keine Verschwendung, unabhängig davon, ob es später von jemand anderem wiederverwendet wird.
Nate CK

@Thomas Owens - Es gibt oft einmalige Aufgaben - sobald sie erledigt sind, sind sie erledigt - oder Ihre eigenen Hacks und Tests, die Sie im Laufe der Entwicklung durchführen, um etwas Klebriges zu meistern - sobald sie erledigt sind , sie sind fertig - effektiv wegwerfbar.
Vector

Und wenn jemand anderes die gleiche oder ähnliche Aufgabe später erledigen muss (was meiner Erfahrung nach sehr wahrscheinlich ist)? Sie müssen das Rad neu erfinden. Es ist eine Sache, einen Wegwerf-Prototyp zur Lösung eines Problems oder zum Erlernen einer Bibliothek oder eines Frameworks zu haben. Es ist eine andere Sache, Zeit damit zu verbringen, ein Werkzeug für eine Aufgabe zu entwickeln und es dann einfach zu verwerfen. Die Arten von Tools, auf die sich die Frage bezieht, beziehen sich auf Aufgaben, die möglicherweise mehrmals ausgeführt werden müssen. Wenn andere Personen diese Aufgaben ausführen, verschwenden sie Zeit, indem sie kein Tool zur Unterstützung zur Verfügung haben (oder ein solches Tool entwickeln müssen). .
Thomas Owens

@Thomas Owens - zugegeben - das ist in dem enthalten, was ich sagte, "wirkt sich möglicherweise auf die Arbeit anderer aus".
Vector

2

Sie haben zwei Möglichkeiten:

  1. Machen Sie es zu einem Standard
  2. In ein Standardwerkzeug übersetzen

Je nach Organisation kann die Nummer 1 eine Herausforderung sein (schließlich vermeidet die Einschränkung der Liste der Standardtechnologien eine kombinatorische Explosion der Anforderungen an Schulungs- und Supportfähigkeiten).

Die zweite Option würde Ihre Fähigkeiten verbessern und es könnte sein, dass Sie Drittanbieter (und wahrscheinlich Open Source mit kommerziell freundlichen Lizenzen) finden können, um einen Teil der harten Arbeit zu erledigen. ZB sollte eine Suche nach "LINQ to CSV" einige nützliche Treffer bringen.

Übrigens, die Entwicklertools von VB6 (IDE, Compiler) werden nicht unterstützt (nicht einmal Sicherheitsupdates), sodass der Standard wahrscheinlich trotzdem aktualisiert werden muss. (Die VB6-Laufzeit wird als Teil der aktuellen Windows-Versionen unterstützt und ist in der Installation enthalten.) Dies könnte möglicherweise als Hilfestellung bei der Annäherung an Nummer 1 dienen: Das Standard-Toolset muss aufgrund von Lieferantenabhängigkeiten ein sich bewegendes Ziel erreichen.


2

Wenn Sie eine Aufgabe erhalten und nur so rechtzeitig erledigt werden können, haben Sie keine wirkliche Wahl. Ich halte es für ratsam, die Verantwortlichen wissen zu lassen, was Sie tun. Sie sollten die erforderliche Quellcodeverwaltung nicht verlassen (es sei denn, sie funktioniert überhaupt nicht). Testen und Dokumentieren.

Manchmal muss ein Unternehmen einem einzelnen Entwickler erlauben, sich mit einem neuen Entwicklungsbereich zu befassen. Leider gelangt der Code möglicherweise schneller in die Produktion als jeder andere.


Ob Sie es glauben oder nicht, nachdem Sie diese Frage gestellt und viele aufschlussreiche Vorschläge erhalten haben, habe ich mehrere Skripte in C # portiert.
Systempuntoout

1

Nun, ich muss zugeben, dass das Arbeiten mit 20 verschiedenen Sprachen VIEL stinkt.

Sie haben ein Bash-Skript, das ein Python-Skript aufruft, das ein Perl-Skript aufruft, das eine Java-Binärdatei aufruft, die eine DLL aufruft.

Dann trifft etwas den Fan in der gesamten Pipeline, und Sie gehen durch - WTH IS DAT KODEZ? Vor allem in Perl ... Und das Debuggen von einfachen, beispielsweise Codierungsproblemen, wird zu einem albtraumhaften Durcheinander. Sie können nicht 5 von 7 Sprachen effektiv debuggen, und es wird zu einem echten Schmerz.

Oder Sie müssen eine einfache Änderung hinzufügen, aber Sie erstellen 10 Fehler, weil Perl Fallstricke, Java Fallstricke usw. hat.

Und diese Sprachkette von 7+ beginnt Schritt für Schritt.

Treten Sie vorsichtig, hier Drachen sein ...


Das Arbeiten mit dem richtigen Werkzeug stinkt nicht, es ist die Unix-Art, Dinge zu bauen. Der Windows-Weg ist, Excel zu starten. Alte Geschichte von Hämmern und Nägeln ...
mouviciel

1

Wenn Sie diese Tools für sich selbst verwenden, können Sie alles tun, was Sie produktiver macht.

Tatsächlich sollten Sie ermutigt werden , solche Werkzeuge herzustellen und zu verwenden, die letztendlich zu einer Erweiterung Ihrer Arme werden.

Schließlich werden sie erkennen, wie wichtig es ist, über solche Tools zu verfügen, unabhängig von der Sprache, in der sie geschrieben sind , und beginnen, sie in ihrer Arbeitsumgebung umzusetzen.


Bei der Arbeit denke ich nicht, dass Sie irgendetwas als "für sich selbst" behandeln sollten. Sie sind Werkzeuge, um ein Projekt zu unterstützen, und es gibt ein Team, das an diesem Projekt arbeitet. Sie können kündigen, entlassen, neu zugewiesen werden oder morgen tot umfallen. Jetzt liegt Ihre Verantwortung bei jemand anderem. Wenn sie Ihre Werkzeuge nicht verwenden und warten können, wurde der Aufwand für deren Herstellung verschwendet (was das Unternehmen Geld kostete).
Thomas Owens

3
@Thomas: Ich behandle Skripte, die ich für mich und meinen persönlichen Gebrauch erstelle, als meine. Sie sind eine Erweiterung meiner Arme und meines Verstandes. Es ist, als würde man sagen "So kann man nicht denken, so kann man nur denken". Ich denke, es ist nicht wichtig, was Sie denken, solange Sie in der Lage sind, das zu tun, worum Sie gebeten werden.
Jose Faeti

Das ist für mich äußerst unprofessionell und unethisch. Eine der ethischen Pflichten eines Software-Ingenieurs besteht darin, im besten Interesse des Kunden und des Arbeitgebers zu handeln, sofern dies nicht die Öffentlichkeit gefährdet. Eine weitere ethische Verantwortung ist es, fair und kollegial zu sein. Wenn Sie Ihre Werkzeuge für ein Projekt für sich behalten, verstoßen Sie gegen beide Grundsätze.
Thomas Owens

3
@Thomas: Ich habe nicht darüber gesprochen, eine bestimmte Programmiersprache für das Projekt zu schreiben. Ich spreche von etwas wie "10000 Dateien mit einem einzigen Befehl umbenennen", was dumme Programmierer einzeln von Hand tun, während ich es mit einem selbst erstellten Skript tun kann. Ich interagiere nicht mit irgendetwas speziellem, was mit dem Projekt zu tun hat. Sie sind KEINE projektspezifischen Werkzeuge.
Jose Faeti

3
@Thomas: Es geht nicht darum zu wissen, ob ein solches Dienstprogramm vorhanden ist, sondern darum, wie Sie Ihre Arbeit automatisieren können, indem Sie solche Dienstprogramme erstellen. Sie benötigen immer ein neues Skript, um Ihre täglichen Aufgaben zu erledigen. Einen Programmierer dazu zu zwingen, vorhandene oder von anderen hergestellte Werkzeuge zu verwenden, ist wie einem Vogel Flügel zu schneiden. Ich kann mir nicht vorstellen, an einem solchen Ort zu arbeiten. Wie auch immer, ich verstehe deine Punkte. Meine Antwort lautete, weil sich das OP bereits in dieser Situation befand. Ich denke, das Beste wäre, den Gedanken, ein bestimmtes Tool zu erstellen / zu verwenden, dem gesamten Team mitzuteilen, sobald es benötigt wird, und dann zu entscheiden.
Jose Faeti

1

Wenn Sie aufgefordert werden, Code zu schreiben, der etw. Tut, wird normalerweise die Sprache angegeben oder impliziert (die Regel in Unternehmen).

Wenn Sie jedoch eine einmalige Aufgabe erledigen müssen, z. B. das Importieren von Daten in die Datenbank, können Sie das Tool auswählen, das Ihrer Meinung nach am besten passt, da Sie etwas Richtiges und Schnelles tun müssen und das Ergebnis wichtig ist. nicht die Werkzeuge.

Also würde ich diese Regel anwenden:

1) Wenn Sie aufgefordert werden, eine Aufgabe wie den Datenimport auszuführen, verwende ich die Tools / language / etc. das wäre für mich am bequemsten und für die aufgabe am schnellsten.

2) Wenn Sie aufgefordert werden, ein Tool für bestimmte Aufgaben zu schreiben, z. B. zum Importieren von Daten, würde ich mit dem Manager besprechen, welche Sprache / welches Tool verwendet werden soll (mit Ausnahme der Sprache, die standardmäßig verwendet wird, z. B. wenn das Unternehmen [fast] verwendet ] nur Java).

3) Wenn die Aufgabe einmalig zu sein schien, aber wiederholbar wurde, sollten Sie mit dem Manager sprechen, um sie von 1) auf 2) zu ändern und von Ihrer bevorzugten auf die von der Firma unterstützte Sprache umzuschreiben.


0

Ich nehme an, Sie sind nicht in der Lage zu entscheiden (oder Sie würden die Frage nicht stellen). Was hält Ihr Chef von diesem Problem? Sie sollten mit ihm sprechen und versuchen, ihn davon zu überzeugen, dass Python der richtige Weg ist ...

Natürlich geht es darum, was passieren wird, wenn Sie gehen. Nicht in der Lage zu sein, den Code zu pflegen, ist wahrscheinlich ein Grund, der ausreicht, um Python nicht mehr zu verwenden. Oder Sie können Ihre Kollegen für diese Sprache ausbilden ...

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.