Wut über Code: Programmierer und Negativität



Ich sehe mir einen Code an. Vielleicht ist dies der schlechteste Code, den ich je getroffen habe. Um nur einen Datensatz in der Datenbank zu aktualisieren, werden alle Datensätze in der Sammlung extrahiert und anschließend eine Anforderung zum Aktualisieren jedes Datensatzes in der Datenbank gesendet, auch derjenigen, die nicht aktualisiert werden müssen. Es gibt eine Kartenfunktion, die einfach den an sie übergebenen Wert zurückgibt. Es gibt bedingte Überprüfungen von Variablen mit offensichtlich demselben Wert, die nur in verschiedenen Stilen ( firstName und first_name ) benannt sind. Für jedes UPDATE sendet der Code eine Nachricht an eine andere Warteschlange, die von einer anderen Funktion ohne Server verarbeitet wird, aber die gesamte Arbeit für eine andere Sammlung in derselben Datenbank erledigt. Ich habe nicht erwähnt, dass diese serverlose Funktion aus einer Cloud-basierten „serviceorientierten Architektur“ stammt, die mehr als 100 Funktionen in der Umgebung enthält.

Wie könnte so etwas gemacht werden? Ich bedecke mein Gesicht und schluchze durch das Lachen. Meine Kollegen fragen, was passiert ist, und ich erzähle die Worst Hits Of BulkDataImporter.js 2018 in Farbe nach. Alle nicken mir mitfühlend zu und stimmen zu: Wie können sie uns das antun?

Negativ: ein emotionales Werkzeug in der Programmiererkultur


Negativität spielt eine wichtige Rolle bei der Programmierung. Es ist in unsere Kultur eingebaut und wird verwendet, um zu teilen, was erkannt wird ("Sie werden nicht glauben, wie dieser Code aussah!"), Um Sympathie durch eine Überraschung auszudrücken ("Herr, warum tun Sie das?") im Licht („das würde ich niemals tun“), um anderen die Schuld zu geben („wir werden wegen seines Codes zur Schau gestellt, der unmöglich zu begleiten ist“) oder, wie es in den „giftigsten“ Organisationen üblich ist, um andere durch Scham zu verwalten ("Woran hast du gedacht? Richtig").



Negativität ist für Programmierer so wichtig, weil sie eine sehr effektive Möglichkeit ist, Werte zu vermitteln. Ich habe in einem Programmiercamp studiert, und die übliche Praxis, Studenten mit Gildenkultur zu impfen, bestand darin, großzügig Memes, Geschichten und Videos zur Verfügung zu stellen, von denen die beliebtesten die Enttäuschung der Programmierer ausnutzten, wenn sie von Menschen verwirrt wurden . Es ist gut, wenn Sie emotionale Werkzeuge verwenden können, um das Gute, Schlechte, Schreckliche, Niemals Tun, Niemals zu bezeichnen. Anfänger müssen darauf vorbereitet werden, dass ihre Kollegen, weit entfernt von der IT, sie wahrscheinlich falsch verstehen. Dass ihre Freunde anfangen werden, ihnen Ideen für Anwendungen "in einer Million" voranzutreiben. Was sie in den endlosen Labyrinthen veralteten Codes mit ein paar Minotauren um die Ecke wandern müssen.

Wenn wir zum ersten Mal anfangen, Programmieren zu lernen, basiert unser Verständnis der Tiefe der „Programmiererfahrung“ auf Beobachtungen der emotionalen Reaktionen anderer Menschen. Dies zeigt sich deutlich in den Beiträgen im ProgrammerHumor-Subwoofer , in denen sich viele neue Programmierer aufhalten. Viele humorvolle Beiträge sind bis zu dem einen oder anderen Grad mit verschiedenen Negativtönen gefärbt: Enttäuschung, Pessimismus, Ressentiments, Nachsicht und andere. Und wenn Ihnen das nicht genug erscheint, lesen Sie die Kommentare.



Mir ist aufgefallen, dass Programmierer mit der Anhäufung von Erfahrungen immer negativer werden. Anfänger, die sich der Schwierigkeiten, die sie erwarten, nicht bewusst sind, beginnen mit Begeisterung und der Bereitschaft zu glauben, dass der Grund für diese Schwierigkeiten einfach ein Mangel an Erfahrung und Wissen ist. und am Ende werden sie sich dem wirklichen Zustand der Dinge stellen.

Mit der Zeit sammeln sie Erfahrung und können guten Code von schlechtem Code unterscheiden. Und wenn dieser Moment kommt, sind junge Programmierer verärgert, wenn sie mit scheinbar schlechtem Code arbeiten. Und wenn sie in einem Team arbeiten (remote oder persönlich), übernehmen sie häufig die emotionalen Gewohnheiten erfahrener Kollegen. Dies führt häufig zu einer Zunahme des Negativen, da junge Menschen nun nachdenklich über den Code sprechen und ihn in schlechte und gute aufteilen können, um zu zeigen, dass sie „im Thema“ sind. Dies verstärkt das Negative noch mehr: Aufgrund von Enttäuschungen ist es einfach, sich mit Kollegen zu treffen und Teil einer Gruppe zu werden. Kritik am Bad Code erhöht Ihren Status und Ihre Professionalität in den Augen anderer: Menschen, die eine negative Meinung äußern, werden oft als intelligenter und kompetenter wahrgenommen .

Das Negative zu stärken ist nicht unbedingt eine schlechte Sache. Die Diskussion über die Programmierung konzentriert sich unter anderem stark auf die Qualität des geschriebenen Codes. Was der Code ist, bestimmt vollständig die Funktion, für die er bestimmt ist (wir verwerfen die Geräte, das Netzwerk usw.), daher ist es wichtig, Ihre Meinung zu diesem Code äußern zu können. Fast alle Diskussionen beschränken sich darauf, ob dieser Code gut genug ist und das Manifest des schlechten Codes in Ausdrücken zu verurteilen, deren emotionale Färbung die Qualität des Codes charakterisiert:

  • "Es gibt viele logische Inkonsistenzen in diesem Modul, was ein guter Kandidat für eine signifikante Leistungsoptimierung ist."
  • "Dieses Modul ist ziemlich schlecht, wir müssen es umgestalten."
  • "Dieses Modul macht keinen Sinn, es muss neu geschrieben werden."
  • "Dieses Modul ist scheiße, es muss gepatcht werden."
  • "Dies ist ein Stück RAM, kein Modul, es musste überhaupt nicht geschrieben werden, was zum Teufel dachte der Autor."

Übrigens ist es diese „emotionale Veröffentlichung“, die Entwickler dazu zwingt, den Code „sexy“ zu nennen, was selten fair ist - es sei denn, Sie arbeiten in PornHub.

Das Problem ist, dass die Menschen seltsam, beunruhigt, voller Schöpfungsgefühle sind und die Wahrnehmung und der Ausdruck von Gefühlen uns verändern: Zuerst ist es kaum wahrnehmbar, aber im Laufe der Zeit - dramatisch.

Unruhige, rutschige Spur der Negativität


Vor einigen Jahren war ich informeller Teamleiter und habe einen Entwickler interviewt. Er hat uns sehr gut gefallen: Er war schlau, stellte gute Fragen, war technisch versiert und passte perfekt in unsere Kultur. Ich war besonders beeindruckt von seiner positiven Einstellung und wie abenteuerlich er wirkte. Und ich habe ihn eingestellt.

Zu dieser Zeit arbeitete ich einige Jahre in der Firma und fand, dass die in unserem Land angenommene Kultur nicht sehr effektiv war. Wir haben zweimal, dreimal und ein paar Mal vor meiner Ankunft versucht, das Produkt auf den Markt zu bringen, was zu hohen Kosten für Nacharbeiten führte, bei denen wir nichts zu zeigen hatten, außer langen Nächten, kurzen Fristen und typarbeitenden Produkten. Und obwohl ich immer noch hart gearbeitet habe, war ich skeptisch gegenüber der letzten Frist, die uns vom Management zugewiesen wurde. Und er fluchte beiläufig, als er mit meinen Kollegen einige Aspekte des Codes diskutierte.

Es war also nichts Überraschendes an der Tatsache - obwohl ich überrascht war -, dass einige Wochen später derselbe neue Entwickler genauso negativ sprach wie ich (einschließlich Fluchen). Mir wurde klar, dass er in einem anderen Unternehmen mit einer anderen Kultur anders gehandelt hätte. Er hat sich nur an die Kultur angepasst, die ich geschaffen habe. Schuldgefühle überwältigten mich. Aufgrund meiner subjektiven Erfahrung habe ich dem Neuling, den ich als völlig anders empfand, Pessimismus eingeimpft. Auch wenn er wirklich nicht so war und nur zu zeigen schien, dass er dem Team beitreten kann, habe ich ihm meine beschissene Einstellung aufgezwungen. Und alles, was gesagt wurde, selbst als Scherz oder im Vorbeigehen, hat eine schlechte Art, das zu verändern, woran man glaubt.



Wege der Negativität


Kehren wir zu unseren ehemaligen Programmieranfängern zurück, die ein wenig Weisheit und Erfahrung gesammelt haben: Sie haben die Programmierbranche näher kennengelernt und verstanden, dass schlechter Code überall ist und nicht vermieden werden kann. Es findet sich sogar in den fortschrittlichsten Unternehmen, die sich auf Qualität konzentrieren (und lassen Sie mich bemerken: Es scheint, dass die Moderne uns überhaupt nicht vor schlechtem Code bewahrt).

Gutes Drehbuch. Mit der Zeit beginnen Entwickler, sich damit abzufinden, dass schlechter Code die Realität von Software ist und dass es ihre Aufgabe ist, ihn zu verbessern. Und was ist, wenn schlechter Code nicht vermieden werden kann, dann macht es keinen Sinn, dadurch Lärm zu machen. Sie begeben sich auf den Weg des Zen und konzentrieren sich auf die Lösung von Problemen oder Aufgaben, mit denen sie konfrontiert sind. Sie lernen, wie sie die Qualität von Software auf der Grundlage ihrer langjährigen Erfahrung genau messen und an Geschäftsinhaber liefern können, schreiben perfekt begründete Schätzungen und erhalten letztendlich großzügige Belohnungen für ihren unglaublichen und unveränderlichen Wert für das Unternehmen. Sie machen ihre Arbeit so gut, dass ihnen Bonusboni in Höhe von 10 Millionen US-Dollar ausgezahlt werden, und sie ziehen sich zurück, um für den Rest ihres Lebens das zu tun, was sie wollen (bitte nehmen Sie es nicht im Glauben).



Ein anderes Szenario ist der Weg der Dunkelheit. Anstatt schlechten Code als unvermeidlich zu akzeptieren, übernehmen Entwickler die Verantwortung, all den schlechten Code in der Programmierwelt anzukündigen, damit sie ihn besiegen können. Sie weigern sich aus vielen guten Gründen, den vorhandenen schlechten Code zu verbessern: „Die Leute sollten mehr wissen und nicht so dumm sein“; "Es ist unangenehm"; "Das ist schlecht fürs Geschäft"; "Es beweist, wie schlau ich bin"; "Wenn ich Ihnen nicht sage, was für ein mieser Code das ist, wird das ganze Unternehmen in den Ozean stürzen", und so weiter.

Sicherlich nicht die Möglichkeit zu haben, die gewünschten Änderungen umzusetzen, da sich das Geschäft leider weiterentwickeln muss und keine Zeit damit verbringen kann, sich um die Qualität des Codes zu kümmern, gewinnen solche Menschen einen Ruf als Beschwerdeführer. Sie werden für hohe Kompetenz gehalten, aber in den Hinterhof des Unternehmens vertrieben, wo sie nicht viele ärgern, sondern gleichzeitig den Betrieb kritischer Systeme unterstützen. Nachdem sie den Zugang zu neuen Entwicklungsmöglichkeiten verloren haben, verlieren sie ihre Fähigkeiten und erfüllen nicht mehr die Anforderungen der Branche. Ihre Negativität verwandelt sich in heftige Bitterkeit, und infolgedessen amüsieren sie ihr Ego und streiten sich mit zwanzigjährigen Schülern über den Weg, den ihre geliebte alte Technologie beschreitet, und warum sie immer noch knackig ist. Am Ende ziehen sie sich zurück und leben im Alter, fluchen Vögel an.

Wahrscheinlich liegt die Realität irgendwo in der Mitte zwischen diesen beiden Extremen.

Einige Unternehmen haben es äußerst erfolgreich geschafft, äußerst negative, isolierte und willensstarke Kulturen zu schaffen (wie Microsoft vor seinem verlorenen Jahrzehnt ). Oft handelt es sich dabei um Unternehmen mit Produkten, die perfekt zum Markt passen und so schnell wie möglich wachsen müssen. oder Unternehmen mit einer Hierarchie von Management und Kontrolle (Apple in den besten Jahren von Jobs), in denen jeder das tut, was er befiehlt. Moderne Unternehmensforschung (und gesunder Menschenverstand) legen jedoch nahe, dass für maximalen Einfallsreichtum, der zur Innovationskraft des Unternehmens und zur hohen Produktivität des Einzelnen führt, ein geringer Stress erforderlich ist, um ein kontinuierliches kreatives und methodisches Denken aufrechtzuerhalten. Und es ist äußerst schwierig, kreative Arbeit zu leisten, die auf Diskussionen basiert, wenn Sie sich ständig Sorgen darüber machen, was Ihre Kollegen zu jeder Zeile Ihres Codes sagen werden.

Negativ ist die technische Popkultur


Die Einstellung der Ingenieure wird heute mehr denn je berücksichtigt. In technischen Organisationen wird die „ No Ovuk “ -Regel immer beliebter. Auf Twitter gibt es immer mehr Witze und Geschichten über Menschen, die diesen Beruf verlassen haben, weil sie sich nicht mit Feindseligkeit und Feindseligkeit gegenüber Außenstehenden abfinden konnten (wollten). Sogar Linus Torvalds entschuldigte sich kürzlich im Laufe der Jahre für seine Feindseligkeit und Kritik an anderen Linux-Entwicklern - dies führte zu einer Diskussion über die Wirksamkeit dieses Ansatzes.

Jemand verteidigt immer noch Linus 'Recht, sehr kritisch zu sein - diejenigen, die viel über die Vor- und Nachteile der „toxischen Negativität“ wissen müssen. Ja, Korrektheit ist äußerst wichtig (sogar grundlegend), aber wenn wir die Gründe zusammenfassen, warum viele von uns zulassen, dass die Äußerung negativer Meinungen zu „Toxizität“ wird, dann sehen diese Gründe paternalistisch oder jugendlich aus: „Sie verdienen es, weil sie Idioten sind“, „er Ich muss sicher sein, dass sie es nicht wiederholen werden, "" wenn sie das nicht getan hätten, müsste er sie nicht anschreien "und so weiter. Ein Beispiel dafür, wie sich die emotionalen Reaktionen des Leiters auf die Programmierer-Community auswirken, ist die MINASWAN-Abkürzung in der Ruby-Community: „Matz ist nett, also sind wir nett“ (Matz [Schöpfer der Sprache] ist gut, also sind wir gut).

Mir ist aufgefallen, dass viele leidenschaftliche Befürworter des Ansatzes „Kill the Fool“ häufig sehr auf die Qualität und Korrektheit des Codes achten und sich mit ihrer Arbeit identifizieren. Leider verwechseln sie oft Härte mit Steifheit. Der Nachteil dieser Position ergibt sich aus einem einfachen menschlichen, aber unproduktiven Wunsch, sich anderen überlegen zu fühlen. Menschen, die in dieses Verlangen eingetaucht sind, stecken auf dem Weg der Dunkelheit fest.



Die Welt des Programmierens wächst schnell und stößt an die Grenzen ihres Containers - der Welt des Nicht-Programmierens (oder ist dies die Welt des Programmierens eines Containers für die Welt des Nicht-Programmierens? Gute Frage).

Da unsere Branche immer schneller expandiert und die Programmierung zugänglicher wird, nimmt der Abstand zwischen „Technikfreaks“ und „Normal“ rapide ab. Die Welt des Programmierens ist zunehmend der zwischenmenschlichen Kommunikation zwischen Menschen ausgesetzt, die zu Beginn des Techno-Booms in einer isolierten Kultur von „Nerds“ aufgewachsen sind, und sie werden die neue Welt des Programmierens bilden. Und unabhängig von irgendwelchen Argumenten in Bezug auf den sozialen Bereich oder die Generationen wird sich Effizienz im Namen des Kapitalismus in der Unternehmenskultur und den Einstellungsansätzen manifestieren: Die besten Unternehmen werden einfach nicht diejenigen einstellen, die nicht neutral mit anderen interagieren können, ganz zu schweigen von guten Beziehungen.

Was ich über das Negative gelernt habe


Wenn Sie zulassen, dass ein Übermaß an Negativität Ihren Geist und Ihre Kommunikation mit Menschen kontrolliert und sich in "Toxizität" verwandelt, ist dies gefährlich für Produktteams und teuer für Unternehmen. Ich habe eine Vielzahl von Projekten gesehen (und davon gehört), die auseinanderfielen und zu hohen Kosten komplett überarbeitet wurden, weil einer der vertrauenswürdigen Entwickler seine Zähne auf Technologie geschärft hat, ein anderer Entwickler oder sogar die einzige Datei, die ausgewählt wurde, um die Qualität der gesamten Codebasis darzustellen .

Negativität demoralisiert und zerstört auch Beziehungen. Ich werde nie vergessen, wie mich ein Kollege beschimpft hat, weil ich CSS in die falsche Datei gestellt habe. Das hat mich verärgert und mich mehrere Tage lang daran gehindert, meine Gedanken zu sammeln. Und in Zukunft ist es unwahrscheinlich, dass eine solche Person einem meiner Teams nahe steht (aber wer weiß, die Menschen ändern sich).

Schließlich schadet Negativität buchstäblich Ihrer Gesundheit .


Es scheint mir, dass eine Meisterklasse über Lächeln so aussehen sollte.

Dies ist natürlich kein Argument dafür, glücklich zu sein, zehn Milliarden Smileys in jede Pull-Anfrage einzufügen oder mit einem Lächeln in eine Meisterklasse zu gehen (nicht, na ja, wenn Sie das wollen, dann keine Frage). Negativität ist ein äußerst wichtiger Bestandteil der Programmierung (und des menschlichen Lebens), der Qualität signalisiert und es Ihnen ermöglicht, Menschen und Brüdern Gefühle und Beileid auszudrücken. Negative Beweise für Einsicht und Vernünftigkeit, die Tiefe des Problems. Ich stelle oft fest, dass ein Entwickler ein neues Niveau erreicht hat, wenn er anfängt, Misstrauen gegenüber dem auszudrücken, was er schüchtern und unsicher war. Mit ihrer Meinung zeigen die Menschen Klugheit und Zuversicht. Man kann den Ausdruck der Negativität nicht ablehnen, er wäre im Orwellschen Stil.

Das Negative muss jedoch mit anderen wichtigen menschlichen Eigenschaften in Einklang gebracht werden: Empathie, Geduld, Verständnis und Humor. Man kann einem Menschen immer sagen, dass er es vermasselt hat, ohne zu schreien und zu fluchen. Unterschätzen Sie diesen Ansatz nicht: Wenn Sie völlig ohne Emotionen sind, sagen sie, dass Sie ernsthaft durcheinander sind, es macht wirklich Angst.

Zu dieser Zeit, vor einigen Jahren, sprach der CEO mit mir. Wir haben die aktuelle Situation des Projekts besprochen, dann hat er gefragt, wie ich mich fühle. Ich antwortete, dass alles in Ordnung sei, das Projekt sich bewege, wir langsam arbeiteten, vielleicht hatte ich etwas verpasst und musste überprüft werden. Er sagte, er habe gehört, wie ich pessimistischere Überlegungen mit Kollegen im Büro geteilt habe, und dass andere dies ebenfalls bemerkt hätten. Er erklärte, wenn ich Zweifel habe, kann ich sie der Führung gegenüber voll ausdrücken, aber nicht "sie senken". Als leitender Ingenieur muss ich mich daran erinnern, wie meine Worte andere beeinflussen, weil ich großen Einfluss habe, auch wenn ich es nicht merke. Und das alles erzählte er mir sehr freundlich und sagte am Ende, wenn ich wirklich solche Gefühle fühle, muss ich wahrscheinlich darüber nachdenken, was ich für mich und meine Karriere will. Es war eine unglaublich sanfte Unterhaltung im Stil von "Reiß dich zusammen oder geh raus". Ich dankte ihm für die Informationen darüber, wie sich meine Einstellung, die sich in den letzten sechs Monaten geändert hat, unmerklich auf andere für mich auswirkt.

Dies war ein Beispiel für ein wunderbares, effektives Management und die Kraft eines weichen Ansatzes. Mir wurde klar, dass ich nur an das Unternehmen und seine Fähigkeit, Ziele zu erreichen, glaubte, aber in Wirklichkeit sprach und kommunizierte ich auf ganz andere Weise mit anderen. Ich erkannte auch, dass ich trotz meiner Skepsis gegenüber dem Projekt, an dem ich arbeitete, meinen Kollegen nicht meine Einstellung zeigen und Pessimismus wie eine Infektion verbreiten sollte, was unsere Erfolgschancen verringert. Stattdessen könnte ich die reale Situation aggressiv an meine Führung weitergeben. Und wenn ich das Gefühl hätte, dass sie mir nicht zuhören, könnte ich meine Ablehnung des Austritts aus dem Unternehmen zum Ausdruck bringen.

Ich bekam eine neue Gelegenheit, als ich die Position des Head of Staff Assessment übernahm. Als ehemaliger Chefingenieur beobachte ich sorgfältig meine Meinung zu unserem (sich ständig verbessernden) Legacy-Code. Um die Änderung zu genehmigen, müssen Sie sich die aktuelle Situation vorstellen, aber Sie werden zu nichts kommen, wenn Sie sich in Stöhnen, Angreifen oder Ähnlichem festsetzen. , , , , , .

, , , , . (« »), . , , (?) (« , , »). , .

, : , .

Source: https://habr.com/ru/post/de448956/


All Articles