Beginner’s Mind – Achtsamkeit und Softwareentwicklung (4/8)

Zurück zur Übersicht

Diese Attitüde geht auf eine Weisheit aus dem Zen-Buddhismus zurück:

In the beginner’s mind there are many possibilities, in the expert’s mind there are few.

Suzuki, Shunryu (1970). Zen Mind, Beginner’s Mind[i]https://archive.org/details/zenmindbeginners00suzu/page/21/mode/2up

Einen Experten-Status in etwas zu erlangen bedeutet unter Anderem, dass man schneller als ein Anfänger weiß, was in einer bestimmten Situation zu tun ist – einfach weil man ähnliche Situationen nach vielen Jahren der Berufserfahrung schon mal erlebt hat und sich intuitiv erinnert. Wenn man gewohnt ist, sich besser mit etwas auszukennen als andere, kann das aber zu einer Überheblichkeit und Beratungsresistenz führen.

„Das brauchst du mir nicht zu erklären, ich mache das hier schon seit 10 Jahren“, wäre zum Beispiel ein Satz, den der Anfänger hören könnte, wenn er dem Experten einen Vorschlag macht. „Mag sein, aber du machst es auch mit dem Kenntnisstand von vor 10 Jahren“, ist die Antwort, die der Anfänger sich zu geben nicht traut.

Natürlich ist ein Experten-Status extrem wertvoll. Ab einer gewissen Komplexität ist es einem Anfänger einfach nicht zumutbar, ein Problem ohne Erfahrung zu lösen. Ich will hier nicht sagen, dass man für gute Softwareentwicklung keine Erfahrung braucht, das widerspräche auch dem Grundsatz der Geduld. Aber man darf sich nicht auf seine Erfahrung alleine verlassen. Ich gebe dazu ein Beispiel aus meinem eigenen Arbeitsleben zum Besten:

Vor einigen Jahren habe ich mich für die Entwicklung eines Messengers sehr ausführlich mit dem Thema Push-Notifications unter iOS auseinandergesetzt. Damals (2016) verwendete Apple eine wenig intuitive Binary-Api[ii]https://web.archive.org/web/20201101010227/https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/BinaryProviderAPI.html mit proprietären Antwortstatus und nicht-standardisierten TCP-Ports. In einem Corporate Network mit Firewalls und Proxys kann so etwas durchaus eine Herausforderung darstellen. So war ich also mächtig Stolz als es dann endlich zuverlässig lief und ich de-facto der Push-Experte im Team war.

Vier Jahre später: Wieder werden für eine neue App Push-Notifications benötigt und wer könnte das besser als ich, der vor Jahren bereits viele Stunden investiert und einen seitdem erfolgreich laufenden Push-Service gebaut hat? Ich fange also direkt an und da ich es schon mal gemacht habe komme ich auch schneller voran. An einer Stelle muss ich aber doch noch mal was nachlesen und was finde ich dabei raus? Apple hat die Binary-Api zugunsten einer HTTP/2-Api abgekündigt[iii]https://developer.apple.com/news/?id=c88acm2b. Damit war mein gesamtes Expertenwissen und meine bis dahin investierte Arbeit obsolet.

Ein Anfänger hätte zunächst mal „apple push notifications how to“ gegoogelt, hätte dann den „Local and Remote Notification Programming Guide“ von Apple [iv]https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/APNSOverview.html#//apple_ref/doc/uid/TP40008194-CH8-SW1 gefunden und gewusst, wie man das im Jahr 2020 richtig macht. Und ich? Ich war mir zu fein zum Googeln und bin mit meinem soliden, aber veralteten Wissen losgeprescht und habe dadurch eine Verzögerung verursacht.

Deshalb ist es auch als Experte sinnvoll, die Ansichten des Anfängers von Zeit zu Zeit einzunehmen.

Abschließend möchte ich noch betonen, dass ich sehr froh bin, dass Apple sich entscheiden hat, die Binary-Api loszuwerden. Ja, ich hatte früher eine solide Lösung am Start und jetzt funktioniert sie nicht mehr. Aber den HTTP/2 Push Service aufzubauen ging bedeutend schneller vonstatten als damals mit der Binary-Api. Außerdem fügt sich die neue API bedeutend besser in Unternehmensnetzwerke ein, ist sicherer, einfacher zu verstehen und das Beste: keine p12 Private Certificates mehr für die Authentifizierung, die einmal im Jahr ablaufen, sondern Bearer-Tokens mit Elliptic Curve Signature (ECDSA)[v]https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_token-based_connection_to_apns

Add a comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert