Was ist egoloses Programmieren?

12

Ich habe diesen Begriff zum ersten Mal vor ungefähr fünfzehn Jahren gehört.

Mein Verständnis ähnelt dem, das im Wikipedia-Artikel und in einem TechRepublic-Artikel beschrieben ist : Sie arbeiten mit Ihren Kollegen auf "freundliche, kollegiale Art und Weise, in der persönliche Gefühle beiseite gelegt werden". Es beinhaltet Dinge wie Peer Reviews mit gegenseitigem Respekt und dem Wunsch zu lernen und sich nicht als "eigener" Code zu fühlen. Wenn also jemand einen Vorschlag hat oder sagt, dass es einen Fehler gibt oder dass er geändert werden muss, wird man nicht defensiv es.

Ich habe auch gedacht, dass es hauptsächlich darum ging, eine Einstellung zu haben, die für gute Beziehungen zu anderen Programmierern sorgt, um den Code zu verbessern. Ich habe es also nicht als unvereinbar angesehen, stolz auf die Qualität Ihrer Arbeit zu sein oder Bedauern zu empfinden, wenn etwas, das Sie getan haben, Ihrem Kunden ein Problem verursacht hat.

Eine Antwort auf eine kürzlich gestellte Frage lässt mich jedoch denken, dass einige andere Programmierer ein anderes Verständnis von "egoloser Programmierung" haben. Also, was ist die richtige Definition? Und was bedeutet das?

Bob Murphy
quelle
7
Das Programmieren in Hülle und Fülle macht so viel mehr Spaß als das Programmieren ohne Ego.
Job
2
@Job: Ja, und wie die Mythbusters sagen, läuft mit C-4 alles besser.
Bob Murphy

Antworten:

17

Alles das oben Genannte.

Die egolose Programmierung hat hauptsächlich damit zu tun, wie viel Respekt Sie dem Programmierer entgegenbringen, der hinter Ihnen her ist, der herausfinden muss, was Sie mit Ihrem Code gemacht haben, damit er ihn warten kann, und was Sie möglicherweise verbessert haben ( Ich weiß, das scheint unvorstellbar, da der gesamte Code, den ich schreibe, bereits perfekt ist;).

Ich glaube auch, dass egolose Programmierer keine dogmatischen Positionen zu ihrer Arbeit einnehmen. Dies macht sie flexibel genug, um in Umgebungen zu arbeiten, in denen ihre idealistischen Erwartungen möglicherweise nicht immer so eifrig angenommen oder bedingungslos akzeptiert werden.

Robert Harvey
quelle
Ich stimme zu, dass es für konstruktive Beziehungen sehr wichtig ist, nicht dogmatisch zu sein - nicht nur bei der Programmierung - und ich kämpfe ständig damit.
Bob Murphy
@ Bobmurphy Ich kenne zwei effektive Möglichkeiten, um nicht dogmatisch zu sein. 1) Keine Scheiße über Ideale. 2) Setzen Sie Zeit und Energie ein, um ein Entwicklerteam aufzubauen, das gemeinsame Ideale hat. Viele Leute geben 2 auf, schreiben ein Standarddokument, das niemand liest und schieben sich langsam in die 1. Der einzige Anidot ist eine Codeüberprüfung, in der es darum geht, wie sich die Leute fühlen. Nicht darum, Regeln zu befolgen.
candied_orange
8

Der Ausdruck hat keine ISO-Standardbedeutung, daher können verschiedene Personen legitimerweise verschiedene Dinge damit meinen.

Ich glaube, es wurde von Weinburg in The Psychology of Computer Programming geprägt . Er meinte, programmieren zu müssen, ohne sein Ego an den Code zu binden, damit es nicht "dein Code" ist, sondern nur Code. Dies erleichtert die Zusammenarbeit, um den Code zu verbessern, Kritik an dem anzunehmen, was Sie geschrieben haben (weil es nicht an Sie gerichtet ist), und die allgemeine Teamarbeit.

David Thornley
quelle
Ich hätte nicht gedacht, dass es ein ISO-Standard ist. :-) Ich war nur überrascht, dass die Leute egoloses Programmieren angedeutet haben, was bedeutet, dass es unangemessen ist, sich bei den Verbrauchern meiner Software zu entschuldigen, wenn sie durch die Fehler, die ich geschrieben habe, belästigt werden. Wenn es das bedeutet, werde ich egoistisch und höflich sein.
Bob Murphy
@Bob: Ich verstehe nicht, wie egoless a la Weinburg dazu führt, sich nicht für Bugs zu entschuldigen. Das klingt für mich ziemlich egoistisch.
David Thornley
Das konnte ich nicht herausfinden.
Bob Murphy
6

Es gibt keine korrekte Definition, da der Begriff "Ego" einer großen Interpretation unterliegt. Abhängig von Ihren psychologischen und spirituellen Überzeugungen gibt es mehr als ein paar unterschiedliche Antworten, wie man versuchen kann, das Ego aus seinem Leben zu entfernen.

Ich verstehe den Begriff so, dass es eine kollektive Eigenverantwortung gibt , sodass jede Person im Team zum Wohle aller und nicht nur für sich selbst arbeitet. " David Logan über Stammesführung " ist ein TED-Vortrag, in dem ein Stamm der Stufe 4 in gewissem Sinne derjenige egoloser Menschen ist.

JB King
quelle
1

Ich bin eine Person mittleren Alters. Ich war in vielen verschiedenen Ländern und hatte das Glück, brillante Menschen wie Astronomen und buddhistische Zen-Mönche zu treffen.

Vor ungefähr zwei Jahren nahm ich an einigen Computerkursen teil, um mein Wissen über Programmierung zu verbessern.

Eines Tages brachte mein Programmierprofessor das Puzzle "Turm von Hanoi" in die Klasse. Es gab einige Studenten, die immer mit ihrem erfolgreichen Leben als Programmierer angeben. Mein Professor gab allen Schülern das Rätsel und bat alle, das Rätsel gleichzeitig zu starten.

Alle Programmierer versuchten ihr Bestes, um zu beweisen, wie schlau sie sind. Der Student, der das Rätsel zuerst beendet, ist ein 18-jähriger chinesischer Student, der nur sehr wenig über Programmierung weiß. Die Außenseiter waren verärgert. Aber mein weiser Professor, der über 30 Jahre Programmiererfahrung verfügt (einschließlich Lisp), hatte ein Lächeln im Gesicht.

Entschuldigung für mein schlechtes Englisch. Meine Muttersprache ist Japanisch

Onkel Joe
quelle
+1: Das habe ich schon oft gesehen, nicht nur beim Programmieren.
Bob Murphy
Übrigens bin ich auch im mittleren Alter (52). Als ich Teenager und Zwanzig war, war ich mir sicher, dass ich viel über viele Dinge wusste. Ich bin sicher, ich weiß nicht viel über irgendetwas. Es ist ziemlich amüsant zuzusehen, wie mein 18-jähriger Neffe sich seiner selbst sehr sicher ist.
Bob Murphy
@ BobMurphy "Je mehr ich lerne, desto mehr weiß ich, wie wenig ich weiß"
gbjbaanb
1

Meine Meinung (und nur das) ist, dass der Begriff "egoloses Programmieren" ein Oxymoron ist.

Programmierer und Ingenieure sind von Natur aus ein egoistischer Haufen (ich selbst eingeschlossen). Am Ende des Tages, wenn Sie Code schreiben, erstellen Sie etwas. Wenn Sie stolz auf Ihre Arbeit und Ihre Ergebnisse sind, egal wie sehr Sie Ihre Kollegen respektieren und verstehen, dass in Zukunft Änderungen an Ihrer Arbeit vorgenommen werden müssen, tut dies Ihrem Ego trotzdem weh, wenn dies geschieht. Jeder Ingenieur, den ich jemals getroffen habe, hat eine sofortige, übervorsichtige Reaktion von Vater und Mutter, um seine Babys zu schützen, obwohl der Autor nach eingehender Diskussion eher bereit ist, die Tatsache zu akzeptieren, dass die Änderung vorgenommen werden muss.

Mit anderen Worten, ich glaube nicht, dass es möglich ist, rein egolose Programmierung zu haben.

Auch hier nur meine Meinung basiert auf Erfahrung. Fühlen Sie sich frei, mich darauf einzuschlagen :)

... und jetzt wurde mir klar, wie alt dieser Thread ist: P

Demian Brecht
quelle
3
Nur weil deine Kollegen Arschlöcher sind, heißt das nicht, dass du es auch sein musst! Die Idee ist, dass wenn wir egoloses Codieren fördern, die nächste Generation weniger Primadomnna-Dweebs und mehr Profis sein könnte.
gbjbaanb