Thomas Bandt

Über mich | Kontakt | Archiv

Null Erkenntnis? Ganz im Gegenteil.

Na das war ja ein turbulentes Wochenende, ich bin gespannt wie viele sich am Montag verwundert die Augen reiben werden, beim Blick auf den Kommentar-Counter unter diesem Post ;-).

Bevor ich ihn veröffentlichte habe ich kurz innegehalten und überlegt, ob ich mir das antun möchte. Denn tief im Inneren bin ich doch auch Pragmatiker und hatte seit ich mit .NET und C# entwickle, inzwischen ziemlich genau 6 Jahre, kein Problem mit der Verwendung von null. Warum also dieses Fass aufmachen?

Doch es hat mich gereizt andere Meinungen zu hören. Natürlich wollte ich mich in meiner eigenen bestätigt sehen (wer will das nicht?), aber das letztendliche Ergebnis ist doch noch viel besser: ich habe anhand der Diskussion meinen eigenen Code in einer Weise bzw. auf einem Level reflektiert, wie ich es vorher nicht getan habe, und etwas dazu gelernt.

Gleichwohl ich übrigens auch zur Kenntnis genommen habe, dass nicht alle so vehement gegen die inflationäre Verwendung von null eingetreten sind, ja viele es nicht anders halten als ich es tue (tat) und damit in der Praxis augenscheinlich nicht schlecht fahren.

Das lässt mich zu einem anderen Punkt kommen, der am Rande der Diskussion entstanden ist, der Ruf nach Regeln.

Regeln setzen implizit voraus, dass etwas als richtig oder falsch definiert wird. Ich bin der Meinung, dass man dies nicht von oben nach unten (frei interpretierbar ...) gestalten kann, sondern umgekehrt. Das heißt bevor etwas zur festen Regel wird, die beispielsweise auch als Ausbildungsinhalt Neulingen vermittelt werden kann, sollte diese Konsens unter einer kritischen Masse von Entwicklern sein.

Das ist in der realen Welt da draußen nicht anders. Dass man nicht bei Rot über die Ampel fahren darf ist als Regel nur deshalb akzeptiert, weil sich jeder Autofahrer bewusst ist, dass er ein unkalkulierbares Risiko für sich und andere darstellt, wenn er es trotzdem tut. Dass man als Fußgänger jedoch an einer roten Ampel stehen zu bleiben hat, interessiert bisweilen niemanden (wer mal in Manhattan zu Fuß unterwegs war, weiß was ich meine) – in diesem Fall nützt die Regel also nicht, weil unter Fußgängern scheinbar kein Konsens darüber herrscht, dass es Sinn macht sie zu befolgen.

Die Regeln können also nicht einfach von irgendwem festgelegt werden, es muss ein Konsens entstehen. Dieser Konsens kann meiner Meinung nach nur durch einen regen Austausch unter Entwicklern und aus ihren Reihen heraus entstehen, natürlich auch angetrieben durch (kontroverse) Meinungsäußerungen von Leuten, die vorweg gehen/denken.

Doch auch dann kann mit den durch den Konsens geschaffenen impliziten Regeln immer noch niemand von sich behaupten, die Wahrheit gepachtet zu haben. Denn die ist durchaus vielschichtig.

Ich sage das, weil ich sicher auch noch ein Stück der pragmatische Entwickler aus einer Prägung durch mein Umfeld heraus bin – ich kenne also die vielen anderen „Wahrheiten“.

Dabei muss ich jetzt aber gar keine persönlichen Geschichten erzählen, wir alle können uns am Beispiel von .NET bzw. ASP.NET praktische Beispiele an Sperrfeuer von Microsoft in Form der „0-Zeilen-Code-Demo-Wunder“ vor Augen halten, mit denen die Marketingabteilung the next big thing anpreist.

Und: so daneben liegen sie damit auch nicht immer. Viele klicken sich ihre Anwendungen wild zusammen und erreichen damit ihre Ziele. Es ist nicht so, dass der Verzicht auf Schichtentrennung und die Verwendung von SQL-DataSource unweigerlich in die Hölle führen. Auch wenn das gerne so dargestellt wird.

Und so ist es auch und vor allem auch bei weniger offensichtlich schlimmen Dingen wie der Verwendung von null. Natürlich spricht sehr, sehr viel dafür, es (fast) nicht zu nutzen (dem ich mich nun anschließe), aber wenn man es trotzdem tut: so what?

Machen wir uns nichts vor: nur weil wir versuchen es „richtig“ zu machen und „cleanen“ Code zu schreiben und „cleane“ Applikationen zu entwickeln, macht uns das auch wirklich zu besseren Entwicklern?

Ich würde sagen: it depends ...

Kommentare

  1. RalfW schrieb am Montag, 3. Mai 2010 08:52:00 Uhr:

    @Thomas: Toll, dass du dich überwunden hattest für deinen ursprünglichen Blogartikel - und das am Ende dir und uns einiges gebracht hat. Das ist Blogsphere at its best ;-)

    Zum Thema Regeln: Ob Regeln "von oben" (a priori, theoriegeleitet) oder "von unten" (a posteriori, der Praxis entspringende Muster) kommen, ist am Ende eigentlich egal. Irgendwann formuliert halt irgendwer mal eine Regel. Ob sie ihm beim Duschen oder Refaktorisieren in den Kopf gekommen ist? Egal.

    Wichtiger ist, was dann passiert! Dann geht es darum zu schauen, ob die Regel was taugt. D.h. "man" muss unter ihrer Anwendung mal anfangen zu denken/programmieren. "Man" muss sich mal darauf einlassen und sie ausprobieren. Und "man" muss drüber reden.

    Der Diskurs über eine Regel ist wichtiger als ihr Ursprung. Eine Regel ist ja nix anderes als eine Theorie/These nach dem Motto: "Wenn wir es so und so unter diesen oder jenen Umständen tun, dann wird irgendetwas besser."

    Bis zur wiederholten erfolgreichen Anwendung der Regel ist das nur eine Hypothese. Die muss auch falsifiziert und diskutiert werden können. Ergo: Wer auf eine Regel stößt, der sollte den Mund aufmachen und darüber reden.

    Zum "so what?": Am Ende kann jeder machen was er will. Eigentlich. Also tatsächlich: "so what?", wenn einer sich über jede Regel hinwegsetzt oder sie nicht mal kennt.

    Allerdings muss man immer bereit sein, die Konsequenzen zu tragen. Jammern is dann nich. Wer öfter sagt, "Egal! So what?", um damit Nachdenken oder Lernen abzukürzen, der läuft Gefahr, Schulden aufzubauen. Technical debt lauert überall. Und wer das auch noch für Geld tut, der muss sich fragen, ob er verantwortungsvoll damit umgeht.

    Regeln können mal gebrochen werden. (Und das ist wohl die einzige Regel, die nie gebrochen wird ;-) Dazu sollte man sie aber erstens kennen oder gar verstehen und zweitens das nur selten tun. Sonst wären es ja keine Regeln.

    -Ralf
  2. Christina schrieb am Dienstag, 4. Mai 2010 10:12:00 Uhr:

    Hallo Thomas,

    ich würde sagen, die Tatsache, dass wir über bestimmten Probleme so extrem nachdenken, wie es bei diesem NULL-Problem der Fall war, macht uns DEFINITIV zu einem besseren Programmierer. Und dadurch, dass es in der Öffentlichkeit passiert, kann man nicht Gefahr laufen, dass man unbemerkt den falschen Weg wählt: die anderen, die bei dieser Phase des Nachdenkens mitmachen, werden einem schon davor bewahren, den yellow brick road zu verlassen ;)

    Schöne Grüße,
    Christina


« Zurück  |  Weiter »