Dienstag, 30. Dezember 2008

Clean Code Developer - Ein Weg zu mehr Professionalität [OOP 2009]

image Softwareentwicklung ist zwar eine Profession - aber läuft sie auch immer professionell? Ich glaube - oder besser: Stefan Lieser und ich glauben, dass das leider nicht der Fall ist. Die Gründe dafür sind vielfältig.

Da ist zum einen die Jugend unserer Branche: in nur 60 Jahren hat sich bisher kaum ein Konsens herausbilden können, was denn nun wirklich professionelle Softwareentwicklung ausmacht.

Da ist zum anderen der ewige Fachkräfte-Notstand: weil soviele Softwareentwickler immer noch oder immer wieder fehlen, gibt es keine einheitliche Ausbildung. Unternehmen stellen ein, wer halt irgendwie demonstrieren kann, dass er es mit der Softwareentwicklung ernst meint.-

Und schließlich brodelt es bei den Technologien ständig so, dass es wichtiger scheint, etwas Neues zu lernen, als sich auf etwas als Branche einzuschießen. Objektorientierung und Agilität sind zwar gewisse Konstanten, doch von einem Konsens im Sinne von "So tut man es und nicht anders!" sind wir dennoch weit entfernt.

Wir meinen nun, dass solcher Konsensmangel bei allem Verständnis für seine Ursachen, immer kontraproduktiver wird. Denn da der Fachkräftemangel wieder einmal nach einer Zeit der Ruhe ganz offensichtlich ist, stellt sich ja auch die Frage ganz dringlich: Wer ist denn ein guter, ein wirklich professioneller Softwareentwickler?

image Dazu kommt die Erkenntnis, dass Ausbildungen auf einer Plattform wie .NET oder Java oder in einem Paradigma wie der Objektorientierung eben nicht zwangsläufig auch zu gutem Code oder hoher Produktivität führen.

Gelegentlich der Lektüre des Buches "Clean Code" von Robert C. Martin sind Stefan und ich deshalb auf die Idee gekommen, es als Ausgangspunkt für eine Bewegung für mehr Professionalität zu machen.

Die dortigen Empfehlungen sowie einige andere scheinen uns so grundlegend, dass sie konsensfähig sind/sein könnten. Wir trauen uns also einfach mal, eine Reihe von Prinzipien, Regeln und Praktiken zusammenzustellen, von denen wir meinen, alle - ja, alle! - Softwareentwickler können und sollen sie beherzigen. (Naja, mit Ausnahme des einen oder anderen Prinzips, das doch eher mit der Objektorientierung zu tun hat. Dem mag dann ein C-Entwickler nicht folgen. Aber das ist unerheblich.)

Den, der diese Prinzipien, Regeln und Praktiken fleißig befolgt in seiner Arbeit, den nennen wir dann Clean Code Developer (CCD) als Hommagè an Roberts Buch.

Und was gehört zu unserem Kanon? www.clean-code-developer.de gibt Auskunft. Dort haben wir in den vergangenen Wochen unser Wertesystem, wie wir es nennen, zusammengetragen. Eine Übersicht zeigt diese Seite: http://www.clean-code-developer.de/wiki/CcdWertesystem. Detailseiten führen dann aus, was wir unter den einzelnen "Werten" verstehen.

Der Trick dabei: Wir haben unser Wertesystem in "Module" verpackt. Ganz nach Manier der Budo-Sportarten definieren wir Grade, die unterschiedliche Entwicklungsstufen bei der Einarbeitung in das Wertesystem beschreiben. Damit wollen wir keine besser-schlechter, schlauer-dummer Hierarchie aufstellen, sondern nur im Sinne iterativen Lernens "Meilensteine" setzen. Dass einer das ganze Wertesystem von jetzt auf gleich einfach beherzigen kann, glauben wir nicht. Also lieber Schritt für Schritt vorgehen. Ein Grad nach dem anderen. Ganz locker und unbürokratisch. Niemand muss dafür ein Fomular ausfüllen oder eine Prüfung machen. Wir appellieren an die Ehrlichkeit des Adepten. Zumindest sie sollte ja auch zur Professionalität gehören ;-)

Wer sich solcher Mühe unterzieht, soll natürlich auch stolz darauf sein. Deshalb haben wir uns - auch angeregt durch Robert C. Martin - überlegt, dass wir Armbänder tragen könnten. Sie sind in der Form Ausdruck des Willens zu mehr Professionalität und in der Farbe ein Hinweis auf den Grad, an dem ihr Träger arbeitet. Eine dezentes wie auch effektives Berufsabzeichen, wie wir finden. Aber: auch das ist kein Zwang, sondern nur Angebot. Wir fänden es allerdings toll, wenn wir bei den nächsten Entwicklerveranstaltungen eine wachsende Zahl von CCD-Armbandträgern träfen :-) (Für eine Kostenerstattung schicken wir Interessenten gern ein Armband zu; einfach hier den Bestellknopf drücken: http://www.clean-code-developer.de/wiki/CcdArmband)

Wie gesagt: Das CCD-Wertesystem ist nur ein Vorschlag. Wir hauen einfach mal einen Pflock in den Boden. Während Microsoft über zukünftige Technologien sinniert und die Ausbildungen in den vergangenen Technologien verharren, sammeln wir einfach mal, was wir für zeitlos und unverbrüchlich halten. Ganz technologieneutral und paradigmenfern. Wer meint, dass wir dabei etwas vergessen hätten oder zuviel des Guten täten, der kann das mit uns gern diskutieren. Dafür haben wir ein Clean Code Developer Forum aufgesetzt: http://groups.google.de/group/clean-code-developer.

Nach den Wochen der Ausarbeitung bin ich nun ganz gespannt, wie die Community unsere Idee aufnimmt. Gebt uns Feedback!

Aber noch besser: Fangt mal mit dem roten Grad an. Ist gar nicht schwer. Das kann eigentlich jeder .NET-Entwickler aus dem Stand. Vielleicht ist so ein Armband ja auch ein Mittel, um dem Chef mal zu vermitteln, dass zur Softwareentwicklung mehr gehört, als Kundenanforderungen irgendwie zu erfüllen?

PS: Wer nach Durchsicht des CCD-Wertesystems einen Vorschlag zur Verbesserung hat oder eine Frage oder einfach nur seine Meinung äußern möchte, der möge das am besten gleich im CCD-Diskussionsforum tun. Da ist mehr Raum, um wirklich darüber zu sprechen. Mit den Kommentaren hier ist das eher hinderlich und leistet am Ende einer Verletzung des DRY-Prinzips Vorschub ;-)

Twitter - Nur Versuch macht kluch [OOP 2009]

image Früher war Brief. Dann war Telefon. Aber noch mein Vater hatte immer einen Blick darauf, dass niemand im Haushalt zu lange telefonierte. Dann Handy, SMS, Email - oder war die Reihenfolge anders? Schließlich Instant Messaging (IM), Blog, Wiki, XING. Alles habe ich bisher mitgemacht. Manches früher, manches später. Mit allem fühle ich mich wohl. Aber Twitter? Muss das sein?

Keine Ahnung. Aber es heißt ja, dass "die jungen Leute heute" inzwischen schon Email für "old fashioned" halten. Wenn ich also nicht frühvergreisen will... dann muss ich mich wohl mal mit Twitter beschäftigen. Eine Gelegenheit, bei der ich das Motto vom "lebenslangen Lernen" endlich mal gegen meine Neigung oder ein Verständnis für den unmittelbaren Nutzen leben kann.

Also Twitter: Ein Dienst, bei dem "man" mit kurzen Nachrichten (s)einen "Zustand" veröffentlichen kann. Andere können diese Zustandsmeldungen abonnieren, "man" kann die Zustände anderer abonnieren. Hm... Wo ist der Unterschied zu anderen Medien?

Twitter ist ein asynchrones Medium. Wer publiziert, erwartet keine Antwort, ja noch nicht einmal einen Leser. Insofern ist Twittern Monologisieren. Ohne konkreten Adressaten ähnelt Twitter einem Blog. Es ist eine Broadcasting-Plattform.

Die Kürze der Nachrichten jedoch macht es ähnlich SMS oder IM. "Romane" lassen sich mit Twitter nicht veröffentlichen - zumindest nicht in der traditionellen Form. (Allerdings: Ein Autor könnte eine Figur erschaffen, der er ein Twitter-Konto gibt. Der "Roman" ließe sich dann als Folge von Twitter-Updates spinnen, in denen die Figur ihre Erlebnisse protokolliert. Bram Stokers "Dracula" war seinerzeit hochmodern, weil die Figuren leading edge technology benutzten, um ihn zu spinnen: z.B. Schreibmaschine und Telegraph. Twitter & Co für heute zeitgemäße Literatur zu benutzen, wäre also angezeigt. Einige Alternate Reality Games versuchen sich daran ja auch schon.)

Kurze Statusnotifikationen in die Welt geworfen: Was kann das nützen? Ich denke, zwei Seiten sind zu unterscheiden: Twittern als Monolog und Twittern als Dialog.

  • Als monologisierender Autor könnte der unmittelbare Nutzen darin liegen, dass Twitter mir unmittelbar hilft, meinen Tag zu strukturieren und zu protokollieren. Twitternachrichten als kontinuierlich fortgeschriebenes Tagebuch. Termine im Kalender sind Planung und Blick in die Zukunft. Ein Twitterprotokoll hingegen ist Retrospektive. Indem ich bei einer "Zustandsänderung" (z.B. Tätigkeit, Ort) ein Twitterupdate schreibe, halte ich einen Moment inne. Das gibt Reflektionen raum und trägt womöglich zur Entschleunigung bei.
  • Sobald ich mich als Autor nicht mehr allein sehe, sondern als Knoten in einem Netzwerk, kommt weiterer Nutzen hinzu. Dann haben meine Twitterupdates nicht nur einen Effekt für mich. Wenn andere sie lesen, kann ich ihnen auch eine Botschaft mitgeben. Ich kann Aussagen machen (z.B. über Werkzeuge, die ich gerade benutze, oder Themen, die mich beschäftigen) oder Fragen stellen. Meine Aussagen mögen andere anregen, meine Fragen mögen mir Antworten bescheren. Einmal kann ich mich als Person oder gar Kompetenzträger darstellen, ein andermal als Hilfesuchender. Ganz zwanglos. Ohne Garantie auf "Erfolg". Aber eben auch mit quasi vernachlässigbarem Aufwand.

Twitter scheint mir damit ein Werkzeug zur Selbstorganisation wie auch zur Kommunikation. Mit Twitter können man sowohl nach innen wie nach außen gehen. Geradezu esoterisch mutet das an, denn der Strom meiner Twitternachrichten ist ja quasi ein "stream of consciousness", ein Gedankenstrom, und also ist Twitter ein Gedankenlesewerkzeug. Besser als bei der herkömmlichen Telepathie behalte ich die Veröffentlichungshoheit über meine Gedanken. Sie werden mir nicht "herausgelesen", sondern ich gebe sie freiweillig preis.

Es stellt sich also die Frage: Was kann sich alles entwickeln, wenn wir unsere Gedanken lesen können?

Wie Briefe und Telefon war Big Brother auch früher. Früher hatten viele Menschen Angst, sie würden ausgespäht. Heute hingegen muss sich niemand mehr die Mühe machen. Die Informationen über die Menschen liegen auf der Straße, weil sie sie selbst dorthin werfen. Twitter ist ein weiteres Medium dafür.

Aber ist das schlimm? Nein, ich finde, nicht. Im Gegenteil! Wer sich vor Big Brother fürchtet, macht zu. Wer sich zu macht, reduziert seine Kontaktoberfläche, seine Verbindungen. Wenn eines aber wichtig heutzutage ist, um in einer komplexen Welt fortzuschreiten, dann sind es mehr Verbindungen, einfachere Verbindungen. Dafür müssen wir aber offen sein, kontaktfreudig. Und das beginnt mit Angeboten, die wir machen. Bei der persönlichen Begegnung ist ein Lächeln ein Angebot. In der virtuellen Welt können es "Broadcasts" sein wie Blogs oder eben Gedankenströme in Twitter. (Dass dann solche Gedankenströme nicht einmal von einem Menschen, sondern von einer Software stammen können, ist womöglich zu vernachlässigen. Am Ende geht es um "Entitäten", um Informationsquellen, die für mich wertvoll und vertrauenswürdig sind. Das können auch Twitter-Bots sein, die die "Gedanken" eines Unternehmens "senden".)

image Soweit ein paar Überlegungen zu Twitter. Ob und inwiefern sie mit der Realität zu tun haben, weiß ich allerdings noch nicht. Ich muss sie versuchen zu verifizieren. Am besten im Selbstversuch. Denn nur Versuch mach kluch. Also öffne ich mal meinen Kopf und eröffne einen Blick auf meine "Zustände". Zum Glück ist das mit Twitter weniger schmerzhaft als bei früheren Trepanationen ;-)

Wer mit auf meinen Gedankenströmen schwimmen will, kann sich als "Follower" bei mir in Twitter anmelden. Mein Twitter-Konto ist: http://www.twitter.com/ralfw.