Ich bin Elvis und bemühe mich sehr, Einstein zu lernen. Ich arbeite für Mort.
Worüber zum Teufel redet dieser verrückte Idiot!?!? (Sie müssen nur die ersten paar Absätze lesen)
Wenn Sie diesen Link nicht lesen möchten, bin ich im Grunde ein professioneller Programmierer, und mein Chef ist (dies ist beängstigend genau):
Der professionelle Branchenprogrammierer, der keinen Abschluss in Informatik hat, aber mit Office und VBA bestens vertraut ist und in der Regel Produktivitätsanwendungen schreibt, die unter seinen Mitarbeitern geteilt werden
Trotzdem besteht ein großer Teil meiner Arbeit darin, seinen zusammengeschusterten Code zu nehmen und ihn für die Produktion vorzubereiten. Der sehr schlechte Stil und der Cargo-Kult machen dies jedoch schwierig. Hinzu kommt, dass er keine Programmierbücher lesen oder mir erlauben möchte, seinen Code zu überarbeiten.
Gibt es andere Strategien, um jemandem zu helfen, der kein professioneller Programmierer ist, niemals ein professioneller Programmierer sein wird, der in Zukunft Code schreibt, der besser lesbar und für mich benutzerfreundlicher ist, um ihn zu verwenden und zu interpretieren?
quelle
Antworten:
Wenn ich mir Ihre Antworten in mehreren Kommentaren ansehe, weiß ich nicht, ob Sie erkennen, dass das, was Sie erleben, ziemlich häufig ist, insbesondere wenn Sie in Spezialgebieten arbeiten, in denen Fachexperten (nennen wir sie den Wissenschaftler) erforderlich sind, um herauszufinden, wie es geht Integrieren und Anpassen von Algorithmen für aktuelle Probleme.
Anstatt sich über den Wissenschaftler zu beschweren und zu erwarten, dass er sich ändert, sollten Sie sich nur darüber im Klaren sein, dass der Wissenschaftler sich nicht viel um die "Codequalität" kümmert. Es ist häufig schwierig, andere Softwareentwickler dazu zu bringen, sich um "Codequalität" zu kümmern, geschweige denn um jemanden, dessen Hauptinteressen in der Domäne und nicht in der Programmierung liegen.
Wohin Sie von hier aus gehen, hängt weitgehend vom Grad des Vertrauens ab, das der "Wissenschaftler" in Ihre Fähigkeit hat, ihre Arbeit zu verstehen. Wenn sie sicher sind, dass Sie ihren Code verstehen und ihn beim Ändern nicht durcheinander bringen, gibt es normalerweise kein Problem. Sie verlassen sich auf Ihr Fachwissen.
Wenn der Wissenschaftler jedoch nicht möchte, dass Sie seinen Code ändern, ist es sehr wahrscheinlich, dass Sie sein Vertrauen noch nicht "verdient" haben. Wenn dies der Fall ist, sollten Sie sich auf das "Reparieren" konzentrieren, anstatt sich auf das Reparieren des Wissenschaftlers zu konzentrieren. Damit meine ich, Schritte zu unternehmen, um ihr Vertrauen zu gewinnen. Der wahrscheinlich einfachste Weg, dies zu tun, ist wie folgt:
Im Rahmen Ihres Testprozesses:
Sobald Sie anfangen, Fehler zu finden UND Interesse an ihrem Interessengebiet gezeigt haben, steigen die Chancen erheblich, dass Sie den Code zumindest ändern können, um ihn "professioneller" zu machen. Häufig werden sie nicht einmal mehr das Bedürfnis verspüren, einen Prototypen zu codieren. Sie schreiben einfach etwas in eine dieser "alternativen" Notationen, die Sie ihnen beigebracht haben (ohne dass sie es überhaupt bemerken), und sie haben das Vertrauen, dass Sie wissen, was sie bedeuten.
Mein erster Versuch wäre auf jeden Fall, einige Vorschläge zu machen, wie der Wissenschaftler am besten helfen kann, besser zu "kommunizieren", um Ihnen zu helfen. aber es hört sich so an, als hättest du es versucht. Der einzige Schritt, über den Sie die Kontrolle haben, ist das, was Sie tun. Verdienen Sie ihr Vertrauen und fast immer wird der Domain-Experte erleichtert sein, die Codierung an eine andere Person weiterzugeben und sich nicht um all die kleinen Details kümmern zu müssen, die beim Schreiben von Code anfallen. Sie konzentrieren sich vielmehr auf die Verbesserung der Algorithmen.
Manchmal können Sie nur einen Vorschlag unterbreiten und es danach belassen. Sie werden Ihren Chef oder einen Senior nicht beeindrucken, wenn Sie weiter an etwas herumhupen, das er bereits abgelehnt hat oder das er nicht tun möchte, selbst wenn Sie zu 100% korrekt sind. Tatsächlich schadet dies einer Beziehung, unabhängig davon, ob Sie der Vorschlagende oder der Vorschlagende sind. Konzentrieren Sie sich einfach darauf, was SIE tun können, um Ihre Arbeit zu erleichtern.
quelle
Wenn er wirklich "jemand ist, der kein professioneller Programmierer ist, der niemals ein professioneller Programmierer sein wird", wie Sie sagen, und wenn ein großer Teil Ihrer Arbeit wirklich darin besteht, "seinen zusammengepflasterten Code zu nehmen und für die Produktion vorzubereiten", hört es sich wie Ihr an Zwei-Mann-Team wäre produktiver, wenn er die Programmierung Ihnen überlassen und sich auf den Management-Teil des Projekts konzentrieren würde.
Dies setzt jedoch voraus, dass Sie Recht haben. Wir Programmierer tendieren immer dazu, Code, der von anderen Leuten geschrieben wurde, als viel schlimmer als unseren eigenen zu ignorieren. Dieses Vorurteil ist wirklich schwer zu besiegen und führt dazu, dass wir unsere Kollegen unterschätzen. Was Sie als "Frachtkultprogrammierung" bezeichnen, könnte aus seiner Sicht "bewährte Best Practices" sein, und was Sie als "elegante Anwendung objektorientierter Muster" bezeichnen, könnte für ihn "unnötiges Überentwickeln" sein. Schwer zu sagen für mich, weil ich nur deine Seite der Geschichte kenne.
Die Verachtung für den Code anderer Völker wird umso stärker, je unterschiedlicher unsere Programmierstile sind. In diesem Fall ist das ein positiver Instinkt, da es sehr schwierig ist, verschiedene Programmierstile in einem Projekt zu mischen.
Wenn Sie beide nicht in der Lage sind, den Stil des anderen nachzuahmen, können Sie klare Verantwortlichkeiten definieren. Machen Sie eine Person für einen Teil der Anwendung und die andere Person für die andere Person verantwortlich. Definieren Sie klare Schnittstellen zwischen beiden Modulen, überlassen Sie die interne Implementierung jedoch dem Verantwortlichen. Um ihn auf Fehler in seinem Code aufmerksam zu machen, könnten Sie Unit-Tests für ihn schreiben und darauf hinweisen, dass sich sein Code offensichtlich nicht gemäß dem von Ihnen gemeinsam festgelegten Schnittstellenvertrag verhält.
Durch die Einrichtung einer eindeutigen Code-Eigentümerschaft können Sie eine bessere Koexistenz Ihrer verschiedenen Stile erreichen. Auch wenn Sie beide für die Behebung der Fehler in ihrem eigenen Code verantwortlich sind, müssen Sie nicht oft im Code der jeweils anderen navigieren.
quelle
Sie müssen sich fragen: Was ist Ihr oberstes Ziel hier? 1. um deinem Chef zu helfen? 2. um der Firma zu helfen? 3. um sich selbst zu helfen? Und bevor Sie mit "all the above" antworten, sollten Sie langsamer fahren. Ihre erste Aufgabe ist es, Ihr primäres Ziel klar zu definieren, denn die Antwort hängt davon ab.
Wenn Sie das Ziel haben:
Helfen Sie Ihrem Chef? Es aufgeben. Er scheint nicht danach zu fragen. Sie sagten: "Er weiß, dass sein Code schlecht ist, aber er tut, was er braucht." Na dann, Ende der Diskussion. Solange Ihr Chef nicht mit der aktuellen Situation unzufrieden ist, wird er sich nicht ändern, und er wird sich über Ihre Bemühungen, ihm zu helfen, ärgern. Wenn er irgendwann in der Zukunft den Schmerz des Status Quo verspürt, haben Sie sich hoffentlich als vertrauenswürdiger Mentor etabliert und wissen, wo er Hilfe holen kann.
Helfen Sie Ihrem Unternehmen? Bedroht die aktuelle Situation das Endergebnis? Sind Fristen gefährdet? Steigert das obere Management seine Hitze? Wenn nicht, dann gib es auf. (Dies ist im Wesentlichen der Punkt, den Jimmy Hoffa in seinem Kommentar zu Ihrem ursprünglichen Beitrag angesprochen hat.) Wenn jedoch die aktuelle Situation tatsächlich ein inakzeptables Risiko für Ihre Abteilung / Ihr Unternehmen darstellt, ist eine Änderung des Prozesses angezeigt. In diesem Fall würde ich vorschlagen, dass Sie sich hinsetzen und eine andere skizzierenArbeitsteilung. Der Schlüssel hier ist zu erklären, dass die Zeit, die Sie mit der Umgestaltung des Codes Ihres Chefs verbringen, besser mit dem Schreiben von neuem Code verbracht wird. Sie sagen, Sie haben keine Zeit, alles selbst zu schreiben, aber das schlage ich nicht vor. Sie müssen herausfinden, wie Sie Ihre jeweiligen Stärken maximieren können. Hören Sie auf, ihn als Mort zu betrachten, und denken Sie an ihn als Junior-Entwickler mit überlegenen Domain-Kenntnissen. Das ist eine sehr gemeinsame Arbeitsanordnung in der Industrie, und es wäre gut beraten , Sie lernen , wie man in ihnen gedeihen. Stellen Sie beispielsweise sicher, dass er weiß, dass Sie wissen, wie wichtig sein Fachwissen ist (wiederholen Sie diesen Schritt häufig), und dannSchlagen Sie demütig die folgende Strategie (oder etwas Ähnliches) vor, um sein Wissen schneller auf den Markt zu bringen: (a) Teilen Sie die Arbeit in "agile" Sprints auf, (b) arbeiten Sie im Vorfeld intensiv zusammen (in jedem Sprint), um den Over zu definieren -alle Anforderungen und Architektur. (c) Lassen Sie ihn los und bauen Sie den Prototyp, um alle algorithmischen Entscheidungen zu treffen, während Sie die Infrastruktur aufbauen, auf die Sie sich im vorherigen Schritt geeinigt haben. (d) Implementieren Sie seine Algorithmen in Ihre Struktur, während er Tests erstellt, um dies zu überprüfen. (e) Führen Sie Ihre V & V gemeinsam in einer Peer-Programmierumgebung durch. (zB "Dieser Test ist fehlgeschlagen; warum? Fehler in der algorithmischen Logik oder Codierungsfehler?"; hier wiederholen).
Bedienen Sie sich? Sei hier ehrlich. Wenn Sie sich nur darüber beschweren, dass Sie Ihren Job nicht mögen, sollten Sie sich mehr Gedanken über Nummer 2 machen. Wenn Sie sich nicht für das Unternehmen interessieren UND Sie Ihre Arbeit nicht mögen, beginnen Sie, Ihren Lebenslauf zu verteilen. Wenn Sie sich für Ihr Unternehmen interessieren, aber keinen Spaß an Ihrer Arbeit haben, sollte die Konzentration auf Nummer 2 bei BEIDEN Konten helfen. In diesem Fall ist es jedoch nur dann ein Gewinn, wenn allen klar ist, dass Ihre Leidenschaft wirklich auf dem Wunsch beruht, dem Team zu helfen, und nicht nur auf einer egozentrischen Frustration in Ihrem Auftrag.
quelle
Ich bin mir nicht sicher, ob ich dieser Diskussion etwas hinzufügen werde, aber nachdem ich in ähnlichen Szenarien gearbeitet habe, in denen eine Zugriffsverletzung auf eine Zeile mit
ShowMessage('Hello');
oder ähnlich trifft , muss ich feststellen, dass dieselbe Zeile mehr Code enthält Recht,Ich glaube, dass Sie zwei grundlegende Optionen haben:
quelle