Feed Icon
.NET User Group Leipzig

Aktualisierung: ein weiterer Erfahrungsbericht steht hier
---

Am 09.01.2009 wurde zum ersten Mal ein .NET Bootcamp verbunden mit¹ dem Konzept Lernen durch Lehren von Alexander, Marcel und mir gestartet. Ein .NET Bootcamp ist so zu verstehen, dass nach der Veranstaltung Teilnehmer etwas ganz konkretes "mitgenommen" haben. Anstatt "konkretes" könnte auch "messbares" geschrieben werden. Es geht nicht um Marketing oder Vergleiche, ob das .NET Framework besser als Java ist – die Teilnehmer sind mündig genug, diese Meinung selber zu finden –, sondern um Wissenstransfer. Camps führen wir im Rahmen der .NET User Group Leipzig schon seit 2005 durch und haben dabei einige unschätzbare Erfahrung in der Organisation als auch Praktikabilität gewonnen. Das Fazit: Camps mit einer mittel bis sehr großen Teilnehmeranzahl und einer hohen Laufzeit wie 1 Woche sind eher ungeeignet, messbar Wissen zu transferieren, sondern sind für einen breiten Überblick gut. Die nächste Erkenntnis sind Fluktuationen bei den Anmeldungen. Eine Schutzgebühr von 10 bis 50 EUR hilft sie zu reduzieren, dennoch bleiben sie systembedingt vorhanden. Menschen bemessen Kostenlosem eben einen geringeren Wert zu. So melden sich genug erst einmal an, um sich den Platz zu sichern. Kostet ja nichts. Ebenso kann man während der Veranstaltung einfach eher gehen etc.; man hat ja nichts bezahlt.

Die Zeit war reif für den Systemwechsel und nicht nur eine Invariante, um für diese beiden drängendsten Fragestellungen "messbarer Wissenstransfer" (oder: Lust auf Wissen) und weniger Fluktuationen bei der Organisation sinnvolle Antworten geben zu können. Über Twitter bin ich auf Jungprofessor Christian Spannagel gestoßen, dessen Vorlesungsstil und Sichtbarkeit per Twitter etc. mir sehr zugesagt haben. "Elfenbeinturm bezeichnet einen geistigen Ort der Abgeschiedenheit und Unberührtheit von der Welt" heißt es in der Wikipedia in einem Artikel und das steht meiner Meinung nach oft doch für eine Klasse der "Schema-F-Professuren" – ohne dieses Thema breit ausrollen zu wollen. Am Institut für Mathematik und Informatik der Pädagogischen Hochschule Ludwigsburg gibt es ein "Schema F" nicht. Kein Wunder, Christian Spannagel ist an einer Pädagogischen Hochschule tätig. Das war auch der Grund für meine Mitstreiter und mich, Lernen durch Lehren oder kurz LdL einfach zu probieren. Zumal es noch genug andere .NET Bootcamps gegeben hätte, wenn LdL nicht befriedigende Antworten auf die drängenden Fragestellungen von uns gegeben hätte. Das wir im Hinterkopf den Wunsch hatten, uns von anderen Veranstaltungen abzugrenzen und erneut Neues² in Leipzig zu schaffen, war obligatorisch.

Teilnehmer des .NET Bootcamp 2009: .NET 3.5 am 09.01.2009 in Leipzig Zusammengefasst hat die Idee etwas Messbares "mitzunehmen" und davon unabhängig wiederrum das Konzept LdL gut funktioniert. Es war angenehm, nicht ständig in der Rolle "Dozent" auftreten zu müssen und die Inhalte einfach den Teilnehmern durch die Beantwortung ihrer Fragen zu überlassen; praktisch nur durch das Thema zu führen. Noch nie waren die Vorbereitungen eines .NET Camps derart entspannt, weil Teilnehmer die Inhalte vorbereiten und nicht Sprecher oder das Organisations-Team davon. Das dadruch eine detailierte Agenda ebenso entfallen ist, liegt auf der Hand. Interessant waren besonders die von Jean-Pol Martin, der treibenden Kraft hinter LdL, in Interviews mit ihm immer wieder erwähnten Unterschiede. Während der klassische Unterricht gleichschaltet, schafft LdL Unklarheiten – falsche Antworten gibt es nicht. Dabei sind Unklarheiten nicht nur vereinfachend angenommen bei den Teilnehmern entstanden, sondern auch bei Alex, Marcel und mir.

Wo genau? Bei der Formulierung der Fragen für die Teilnehmer und dann der Beantwortung dieser im Vorfeld durch uns selbst. Ein Beispiel für eine Frage war:

  • Was ist unverwalteter / verwalteter Code? Wer oder was führt ihn aus?
    Hinweis: Erklären Sie, wie aus einer Hochsprache die Intermediate Language wird (wer kompiliert, was wann) und wer diese ausführt. Gehen Sie auf Merkmale wie Typsicherheit ein. Versuchen Sie zu klären, warum beim ersten Ausführen einer .NET-Anwendung diese in der Regel "etwas Zeit" benötigt. Klären Sie dann, wo der Cache für liegt, der zukünftige Starts beschleunigt.

Können Sie diese Frage fachlich ganz exakt beantworten ohne ein "es müsste..."? Wenn nein, hier ist die Antwort für die Frage nach dem Cache. Diese Frage bezieht sich nicht auf irgendwelche Besonderheiten, sondern ist ein Teil eines tiefen Grundverständnisses für .NET, das viel zu häufig in Büchern, Webcasts und Veranstaltungen nicht angeschnitten wird. Dieser Effekt erneut in Form einer anderen Frage:

  • Ist das .NET Framework eigentlich nur ein "Wrapper" für das jeweilige Betriebssystem?
    Mit anderen Worten, ist der Common Intermediate Language-Code der Maschinencode oder ruft dieser Code nur letzten Endes Betriebssystem-Funktionen auf? Hinweis: Erklären Sie, was z. B. bei Console.WriteLine("Foo") passiert!

Sie kennen die Antwort? Dann wissen Sie auch, dass für dieses Grundverständnis meist eben nicht z. B. die TechTalks von Microsoft ausreichen. Da wird häufig nur gezeigt, wie einfach es ist, auf der Konsole mit einer einzigen Zeile Code etwas auszugeben. Was zwar im Sinn der eleganten Programmierung mit dieser Plattform prinzipiell schon stimmt, aber das Grundverständnis nicht adressiert. Damit haben Alex, Marcel und ich durch das Ausräumen einige Unklarheiten unsere Kenntnisse verfestigt, obwohl wir uns seit der ersten Betaversionen mit den .NET Frameworks beschäftigen und mit Fug und Recht behaupten können, dass wir uns "gut" auskennen, um nicht das hochnäsig wirkende "exzellent" benutzen zu wollen.

Teilnehmer des .NET Bootcamp 2009: .NET 3.5 am 09.01.2009 in Leipzig Wie LdL funktioniert steht natürlich in der Wikipedia, Lutz Berger bzw. Christian Spannagel³ haben es hier aber gut zusammengefasst. Für uns gilt, dass wir die Fragen zwei, drei Tage eher als jetzt schicken, zwei Tage zuvor war vielen zu knapp; haben aber sich dem widersprechend dennoch erstaunlich gute Ergebnisse hervorgebracht für Teilnehmer, die sich zum Teil noch nie mit dem .NET Framework beschäftigt haben. Und festzuhalten ist außerdem erneut: Falsche Antworten gibt es nicht, nur Unklarheiten! Das haben wir bei den Teilnehmern beachtet, jedoch in einem Fall aber bei uns selbst nicht. Der Effekt war dann, dass ich die Meinung von Alex und Marcel hingenommen habe, dass ein ~Foo() ein Finalizer ist, weil sich die beiden derart sicher waren. Ist es aber nicht, wie es das MSDN zeigt. Sie sind verwirrt? Ein Destruktor ist kein Finalizer bei .NET, sondern ein Konstrukt, der einen Finalizer aufrufen kann, aber dieses bedingt durch die Funktionsweise der Common Language Runtime bzw. Gargabe Collection nicht muss. Wenn Sie das verhindern wollen, um z. B. Ressourcen ordnungsgemäß freizugeben, lesen Sie diesen Artikel.

Sponsoren für Getränke, Kaffee, Imbiss und Pizza! ;-) haben wir für die nächsten .NET Bootcamps schon einige gefunden, Fluktuationen bei den Anmeldungen stabilisiert und arbeiten gerade mit Prof. Fähnrich vom Institut für Betriebliche Informationssysteme des Instituts für Informatik an der Organisation eines .NET Bootcamp für Studenten der Universität Leipzig im April 2009.

Ich glaube, wir haben etwas sehr, sehr gutes vollbracht...
Danke Alex, Danke Marcel und Danke an die Erfinder von LdL!

¹ Einige .NET Bootcamps werden wir ohne LdL durchführen, je nachdem, was didaktisch besser ist.
² nach der Etablierung des .NET Open Space
³ hier geht es zur Blogparade zu LdL

CEO bei GROSSWEBER, Entrepreneur, Entwickler, Finanzinvestor. Promoter von Community, Open Source und
Open Spaces.

Ich biete Consulting und Schulungen / Trainings, u. a. zu mobilen Geräten, Lync.
GROSSWEBER

Bei GROSSWEBER wird praktiziert, was gepredigt wird. Dort werden Schulungen für moderne Softwaretechnologien angeboten, wie Behavior Driven Development, Clean Code, Git oder HTML5. Their staff is fluent in a variety of languages, including English.

Categories

Calendar

<December 2014>
SunMonTueWedThuFriSat
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

Archive

My subscribed blogs

Blogs of good friends