Code stricken

Diesen Beitrag schrieb ich 4 Jahre und 3 Monate zuvor; die nachfolgenden Ausführungen müssen heute nicht unbedingt noch genau so funktionieren. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 6 Minuten

Was nun folgt ist ein Rant, ein Post voller Unmut – begonnen, wieder verworfen, wieder aus dem Papierkorb gefischt und zuletzt doch veröffentlicht. Ein bisschen verschwurbelt, sehr persönlich, vermutlich nie so richtig fertig – und der rote Faden hängt in Fetzen. Aber er wollte unbedingt raus, deshalb lasse ich ihm seinen Willen – gegen das geschriebene Wort bin ich ohnehin völlig machtlos :)

Ich war 5 Jahre alt, als ich das Stricken erlernte. Von meiner Oma lernte ich es, und sie war ein ziemlich strenger Lehrmeister. Ein blau-weiß gestreifter Pullover für meinen Lieblings-Teddy war mein Erstlingswerk (er trägt ihn noch heute!), und eine Leidenschaft war geweckt. Viele Jahre sind seither ins Land gegangen, und ich bewege mich auf diesem Terrain sehr sicher: üblicherweise brauche ich keine Anleitungen, weil ich weiß, wie ich es angehen will; Strickschriften für Mustersätze sind immer willkommen, aber bitte nicht „super-easy“, „kinderleicht“ und „für Anfänger geeignet“, denn die langweilen mich. Kompliziert ist gut. Wenn ich stricke, kann ich auf viele Erfahrungswerte zurückgreifen – das macht es mir leichter und ermöglicht mir eine gewisse Selbstsicherheit.

Allerdings muss meiner Meinung nach nicht jeder Mensch, der eine Strickjacke tragen möchte, in der Lage sein, diese auch selbst herzustellen: man sollte sie korrekt zu pflegen und aufzubewahren wissen, ja. Man sollte unterscheiden können zwischen behebbaren Kleinigkeiten (verzogen nach der Wäsche, also vorsichtig in Form ziehen), Schwierigkeiten, die die Jacke nur indirekt betreffen (Knopf verloren) und handfesten Problemen (Loch im Ärmel, Naht geplatzt) und die jeweils passenden Maßnahmen einleiten können. Natürlich kann auch der unbedarfte Strickjacken-Fan, der im Leben noch keine Stricknadeln in der Hand hatte, versuchen, das Loch im Ärmel selber zu fixen – irgendwie. Er würde irgend etwas tun, das ihm sinnvoll erschiene und die Maschen am Weiterfallen hindern würde. Es ist aber fraglich, ob er instinktiv einen sinnvollen Weg wählen (ordentlich festnähen, stopfen etc.) würde, oder ob er die Sache vielmehr pragmatisch mit einem Tacker anginge. Vielleicht würde er es mit Heißkleber versuchen. Bei seinem Versuch, die Jacke zu reparieren, würde er sie vielleicht völlig ruinieren. Damit ist, bei Lichte betrachtet, niemandem geholfen. Und was hat das nun mit Code zu tun? Gleich…

Klar, unser Strickjacken-Fan könnte sich Hilfe holen: er könnte sich jemanden mit viel Erfahrung suchen, um von ihm zu lernen. Dann könnte er üben – erst würde er Topflappen stricken, dann Schals, und irgendwann hätte er dann ein Strickjacken-angemessen-flicken-Level erreicht. Dabei gibt es jedoch ein Problem: er will überhaupt nicht selbst in die Materie einsteigen. Er akzeptiert, dass es ohne Stricken nicht geht, wenn man eine Strickjacke haben möchte, und er steht der Sache offen und neugierig gegenüber; das heißt aber nicht, dass er unbedingt selber stricken möchte. Dass er die Stricksachen anderer wertschätzt, vielleicht gar bewundert, steht in keinem Zusammenhang damit, es selber erlernen zu wollen. Seine Stärken liegen woanders, und auf die möchte er sich konzentrieren. (Tatsächlich wäre es wünschenswert, wenn jeder die Möglichkeit hätte das zu tun – ich bin überzeugt davon, dass die Welt dann eine bessere wäre. Aber ich schweife ab.)

Ich stecke momentan in einer Art tiefer Sinnkrise – final ausgelöst durch einen privaten Zwischenfall, der mir einmal mehr überdeutlich machte, was ich zwar theoretisch weiß, aber praktisch nicht so recht kapiere: dass die Zeit für unser Wirken begrenzt ist und alles, was wir tun (oder eben nicht tun) das Resultat unserer Priorisierung. Ich bin seit Jahren auf vielen Kanälen der Open Source-Community aktiv, mit x verschiedenen Usernamen auf x verschiedenen Foren und Trackern und Plattformen zu x verschiedenen Projekten. Ich versuche, mich meinen Fähigkeiten entsprechend einzubringen – und merke zunehmend, dass ich mir damit den Kopf einrenne, ohne dass es mich persönlich irgendwie weiterbringen würde. Jeder Bugreport kostet mich viel Zeit: weil ich teste, gegenteste; versuche, Fehler und Fehlkonfigurationen meinerseits möglichst umfassend auszuschließen; weil ich versuche, die Fehlerursache möglichst eng einzugrenzen und mich anschließend bemühe, das Ganze möglichst pointiert zu formulieren. Das Ergebnis meiner Bemühungen indes ist ernüchternd: auf die meisten meiner Anfragen erhalte ich schlicht keine Rückmeldung. Weder werden sie als Bug noch Blödsinn klassifiziert, es werden keine Rückfragen gestellt, sie sind einfach da – auf ewig offen und unbeantwortet. Über die Zeit hängen sich oft andere User an, die vor dem selben Problem stehen – mit einem +1 signalisieren sie, dass sie ebenfalls von dieser Sache betroffen sind und auf einen Lösungsansatz hoffen. Sie werden dann angekackt, weil sie +1 benutzt haben und man das nicht tut. That’s it.

Häufiger erhalte ich als Antwort, der Fehler läge vermutlich im Bereich von Funktion bla, und ich solle bitte einen Pull Request aufmachen, sobald ich ihn gefixt habe: C sei schließlich nicht schwierig zu erlernen, und mit etwas gutem Willen würde ich das schon hinkriegen. Analog erhalte ich (bzw. nicht nur ich, es zieht sich ja durch) diese Aussage für Go, Python, Java, PHP, Ruby, C#, Perl undwiesiealleheißen. Unfaires Verschieben von Verantwortlichkeiten: hätte ich eine Developer-Laufbahn einschlagen wollen, hätte ich das getan. Hab ich aber nicht. Als Systems Engineer bin ich Dienstleister gegenüber meinen Usern – ich trage die Verantwortung. Für. Den. Gesamten. Verdammten. Betrieb. Tag und Nacht. Es ist überhaupt nicht realistisch, darüber hinaus auch noch die Verantwortung für jede von mir eingesetzte Software mit zu übernehmen. Und doch wird das regelmäßig („Stell dich nicht so dran!“) erwartet.

Also: ich würde endlos viel Zeit investieren, um mich in ein mir völlig fremdes Themengebiet einzuarbeiten, das mich aber gar nicht so richtig interessiert. Und anschließend ohne jeden Erfahrungswert eine halbgare Lösung präsentieren, die „das große GanzeTM“ nicht respektiert – bestenfalls Tacker, schlimmstenfalls Heißkleber. Im Endeffekt habe ich dann sehr viel Zeit investiert in einen Pull Request, der berechtigterweise zurückgewiesen wird. Und mir erschließt sich nicht, wem damit geholfen sein soll. Ja, die Maintainer leisten tolle Arbeit, und ja, sie investieren nicht selten eine Menge Freizeit in ihre Projekte. Ich aber auch. Und das wird bei dieser Argumentation offenbar gerne vergessen. Alle Projekte rufen auf irgend eine Art zur Mitarbeit auf: aber so wird das nicht funktionieren. Nicht jetzt und schon gar nicht auf Dauer.

Was der Sache nicht selten die Krone aufsetzt ist der Tonfall: Momente, in denen „gar keine Reaktion“ rückblickend betrachtet die bessere Option gewesen wäre. Ich weiß nicht, woher manche Maintainer sich das Recht nehmen, so mit ihren Usern zu reden – doch sie tun es und fühlen sich zumeist auch voll im Recht damit. Dabei verweisen sie sehr selbstsicher auf Dokumentation, die 1.) entweder nicht wirklich vorhanden ist („ – TODO – “), 2.) für Nicht-Developer völlig unverständlich ist oder 3.) maximal beschreibt „how it’s intended to be“. Vor allem Neueinsteiger werden nicht selten auf eine Art angegangen, die mich ungläubig den Kopf schütteln lässt. Wir haben alle mal sehr klein angefangen, habt ihr das vergessen? Und ja, auch so mancher User hat einen unmöglichen Tonfall am Kopf, keine Frage. Es ist aber dennoch die Maintainer-Seite, die hier den Takt vorgeben und auf Einhaltung der Netiquette pochen sollte. Immer. Ich bevorzuge klare Trennungen in Bezug auf Zuständigkeiten. Meine Steuererklärung zum Beispiel ist mir zutiefst zuwider; diese fiesen kleinen Quittungen und Zettelchen, die endlosen Massen an Formularen voller Beamtendeutsch und Fußnoten – meine Frisur sträubt sich spontan, wenn ich nur darüber nachdenke, dass es bald wieder so weit ist. Aus diesem Grund übergebe ich meinen sorgfältig mit allen Unterlagen gefüllten Schuhkarton pflichtbewusst an meinen Steuerberater. Er liebt, was er tut, was mir umständehalber völlig unverständlich ist, aber er liebt es wirklich: er kann mit blitzenden Augen lange, langweilige Finanzamts-Anekdoten zum besten geben, bewegt sich mühelos durch den Wust an Paragraphen und hat seinen Spaß daran. Und er macht in einem Bruchteil der Zeit, die ich (genervt, augenrollend) einsetzen würde den x-fachen Betrag dessen geltend, den ich (wütend, mich betrinkend) ermittelt hätte. Ich sehe weder Grund noch Vorteil darin, mich selbst mit dieser Sache abzuquälen, und zahle lieber einen fairen Betrag an jemanden, der sich viel besser damit auskennt. Und ab und an bringe ich seinen Rechner auf Vordermann, mal ganz davon ab. Jeder tut, was er am besten kann.

Hug me Mir wurde jedenfalls klar, dass ich so nicht weitermachen will. Und werde. Dass meine Zeit mir zu teuer ist, sie auf diese Art zu versenken – es macht mich nicht nur nicht zufrieden, es macht mich unglücklich. Hinzu kommen die unzähligen Support-Anfragen, die mich erreichen: ich bin gerne hilfsbereit, aber es sprengt meine Kapazitäten. Unhöflich mag ich aber auch nicht sein. Die Folge war eine Art Notfall-Shutdown: ich habe alle Notifications abgeschaltet, mich in allen sozialen Netzwerken und sonstigen Plattformen ausgeklinkt und verstecke mich seit knapp zwei Wochen mit dem Manuskript meines Buches unterm Schreibtisch. Ich sollte so nicht ewig weitermachen – aber im Grunde genommen fühlt es sich so gut an. Wie auch immer: ich muss mich umorientieren, meine Arbeitsabläufe anders organisieren, denn so komme ich nicht weiter. Was die große weite Open Source-Welt angeht bin ich derzeit recht desillusioniert, und wie ich mich positioniere… ich weiß es noch nicht. Keine Ahnung. Alle paar Jahre träume ich davon, die IT-Welt hinter mir zu lassen, den ganzen Mist hinzuschmeißen und mich rosenzüchtend auf einer Insel niederzulassen, auf der immer die Sonne scheint – vielleicht bin gerade wieder an diesem Punkt angelangt. Das ist wichtig und lehrreich. Und tut unfassbar weh.