Folien zum Vortrag von Stefan Zörner (embarc GmbH) auf der JAX 2014 in Mainz.
Abstract: Mitunter gelingt ein Entwicklungsvorhaben, und alle sind zufrieden. Oder es scheitert am Ende kläglich. Manchmal auch irgendwas dazwischen. Alles nur Zufall? Der Begriff "Zufällige Architektur" (engl. Accidental Architecture) ist als Anti-Pattern durchaus gebräuchlich, der Ausspruch "Historisch gewachsen" passt ebenfalls prima in diesen Kontext. Wie kann Softwarearchitektur zum Erfolg beitragen? Was genau macht eine gute Architektur aus? Wie erreicht oder erkennt man sie? Müssen am Ende alle glücklich sein? Oder sind Kompromisse sogar zwingend erforderlich? Dieser Vortrag ordnet Projektsituationen zwischen zufälliger und wirkungsvoller Softwarearchitektur ein. Er stellt bewährte Praktiken zum Kurs setzen vor und gibt konkrete Tipps rund um Entwurf und Bewertung für Ihr eigenes Vorgehen. Werfen Sie Ballast ab und erhöhen Sie gleichzeitig die Wirksamkeit der Architekturarbeit in ihrem Projekt.
WJAX 2014: Pah, ArchitekturDoku, darauf habe ich keine Lust!Matthias Bohlen
"Chef, Sie wollen schon wieder Doku von mir? Warum sollte ich die schreiben? Meine Teamkollegen und ich wissen schließlich auch ohne Doku, wie das System funktioniert und wo wir etwas ändern müssen. Doku hält mich nur vom Arbeiten ab! Und ... seien Sie mal ehrlich: Sie ist noch jedesmal runterpriorisiert worden, wenn es zeitlich eng wurde, also kann sie ja wohl nicht wichtig sein." -- Wollten Sie schon einmal solch einen Brief an Ihren Chef schreiben? Und haben dann doch zähneknirschend Ihr Word geöffnet? Lassen Sie sich in dieser praxisorientierten Session zeigen, wie Sie Architekturdokumentation mit Lust und minimalem Aufwand gestalten können (Gerüchte besagen, dass Markdown darin eine Rolle spielen wird).
Test Driven Development ist eines der wichtigsten Methoden aus dem Extreme Programming um hohe Softwarequalität zu garantieren und agil auf Änderungen reagieren zu können. Es hält sich allerdings sehr hartnäckig die Legende, dass man TDD für die Entwicklung von Benutzeroberlächen nicht anwenden kann. In diesem Vortrag werden Architekturansätze und Techniken vorgestellt, die es erlauben testbare Benutzeroberflächen zu schreiben.
Folien zum Vortrag von Stefan Zörner (embarc GmbH) auf der JAX 2014 in Mainz.
Abstract: Mitunter gelingt ein Entwicklungsvorhaben, und alle sind zufrieden. Oder es scheitert am Ende kläglich. Manchmal auch irgendwas dazwischen. Alles nur Zufall? Der Begriff "Zufällige Architektur" (engl. Accidental Architecture) ist als Anti-Pattern durchaus gebräuchlich, der Ausspruch "Historisch gewachsen" passt ebenfalls prima in diesen Kontext. Wie kann Softwarearchitektur zum Erfolg beitragen? Was genau macht eine gute Architektur aus? Wie erreicht oder erkennt man sie? Müssen am Ende alle glücklich sein? Oder sind Kompromisse sogar zwingend erforderlich? Dieser Vortrag ordnet Projektsituationen zwischen zufälliger und wirkungsvoller Softwarearchitektur ein. Er stellt bewährte Praktiken zum Kurs setzen vor und gibt konkrete Tipps rund um Entwurf und Bewertung für Ihr eigenes Vorgehen. Werfen Sie Ballast ab und erhöhen Sie gleichzeitig die Wirksamkeit der Architekturarbeit in ihrem Projekt.
WJAX 2014: Pah, ArchitekturDoku, darauf habe ich keine Lust!Matthias Bohlen
"Chef, Sie wollen schon wieder Doku von mir? Warum sollte ich die schreiben? Meine Teamkollegen und ich wissen schließlich auch ohne Doku, wie das System funktioniert und wo wir etwas ändern müssen. Doku hält mich nur vom Arbeiten ab! Und ... seien Sie mal ehrlich: Sie ist noch jedesmal runterpriorisiert worden, wenn es zeitlich eng wurde, also kann sie ja wohl nicht wichtig sein." -- Wollten Sie schon einmal solch einen Brief an Ihren Chef schreiben? Und haben dann doch zähneknirschend Ihr Word geöffnet? Lassen Sie sich in dieser praxisorientierten Session zeigen, wie Sie Architekturdokumentation mit Lust und minimalem Aufwand gestalten können (Gerüchte besagen, dass Markdown darin eine Rolle spielen wird).
Test Driven Development ist eines der wichtigsten Methoden aus dem Extreme Programming um hohe Softwarequalität zu garantieren und agil auf Änderungen reagieren zu können. Es hält sich allerdings sehr hartnäckig die Legende, dass man TDD für die Entwicklung von Benutzeroberlächen nicht anwenden kann. In diesem Vortrag werden Architekturansätze und Techniken vorgestellt, die es erlauben testbare Benutzeroberflächen zu schreiben.
Jerome Bruner
(Jerome Seymour Bruner; Nueva York, 1915) Psicólogo y pedagogo estadounidense. Ejerció su cátedra de Psicología Cognitiva en la Universidad de Harvard y, junto con G. Miller, fundó el Center for Cognitive Studies, considerado el primer centro de psicología cognitiva. Jerome Bruner fue director de este centro, ubicado en la misma universidad de Harvard, donde B. F. Skinner impartía su teoría del aprendizaje operante. Posteriormente se trasladó a Inglaterra, donde dictaría clases en la Universidad de Oxford.
El interés de Bruner por la evolución de las habilidades cognitivas del niño y por la necesidad de estructurar adecuadamente los contenidos educativos le llevó a desarrollar una teoría que, en ciertos aspectos, se parece a las de Piaget y Ausubel. Al igual que Piaget, observó que la maduración y el medio ambiente influían en el desarrollo intelectual, aunque Bruner centró su atención en el ambiente de enseñanza. Al igual que Ausubel, advirtió la importancia de la estructura, si bien se concentró de forma más especial en las responsabilidades del profesor que en las del estudiante. Bruner concibe el desarrollo cognitivo como una serie de esfuerzos seguidos de períodos de consolidación. Al igual que Piaget, cree que estos "esfuerzos del desarrollo se organizan en torno a la aparición de determinadas capacidades'' y que la persona que aprende tiene que dominar determinados componentes de una acción o de un cuerpo de conocimientos antes de poder dominar los demás.
Pero en lugar de los cuatro estadios del desarrollo de Piaget, Jerome Bruner habla de tres modelos de aprendizaje: enactivo, icónico y simbólico. En el modelo enactivo de aprendizaje se aprende haciendo cosas, actuando, imitando y manipulando objetos. Es este el modelo que usan con mayor frecuencia los niños pequeños. A decir verdad, es prácticamente la única forma en que un niño puede aprender en el estadio senso-motor. No obstante, también los adultos suelen usar este modelo cuando intentan aprender tareas psicomotoras complejas u otros procesos complejos. No cabe duda de que el arte del ballet, el dominio de los procedimientos parlamentarios o la práctica en la dirección de un coro se facilitarán si se hace lo mismo que otras personas que se dedican a estas actividades. Los profesores pueden inducir a los estudiantes a usar este modelo de aprendizaje proporcionándoles demostraciones y ofreciéndoles materiales pertinentes, así como actividades de representación de roles, modelos y ejemplos de conductas.
El modelo icónico de aprendizaje implica el uso de imágenes o dibujos. Adquiere una importancia creciente a medida que el niño crece y se le insta a aprender conceptos y principios no demostrables fácilmente. Así, por ejemplo, los conocimientos sobre países extranjeros, las vidas de personajes famosos y la literatura dramática no se aprenden normalmente por medio del modelo enactivo.
Jerome Bruner
(Jerome Seymour Bruner; Nueva York, 1915) Psicólogo y pedagogo estadounidense. Ejerció su cátedra de Psicología Cognitiva en la Universidad de Harvard y, junto con G. Miller, fundó el Center for Cognitive Studies, considerado el primer centro de psicología cognitiva. Jerome Bruner fue director de este centro, ubicado en la misma universidad de Harvard, donde B. F. Skinner impartía su teoría del aprendizaje operante. Posteriormente se trasladó a Inglaterra, donde dictaría clases en la Universidad de Oxford.
El interés de Bruner por la evolución de las habilidades cognitivas del niño y por la necesidad de estructurar adecuadamente los contenidos educativos le llevó a desarrollar una teoría que, en ciertos aspectos, se parece a las de Piaget y Ausubel. Al igual que Piaget, observó que la maduración y el medio ambiente influían en el desarrollo intelectual, aunque Bruner centró su atención en el ambiente de enseñanza. Al igual que Ausubel, advirtió la importancia de la estructura, si bien se concentró de forma más especial en las responsabilidades del profesor que en las del estudiante. Bruner concibe el desarrollo cognitivo como una serie de esfuerzos seguidos de períodos de consolidación. Al igual que Piaget, cree que estos "esfuerzos del desarrollo se organizan en torno a la aparición de determinadas capacidades'' y que la persona que aprende tiene que dominar determinados componentes de una acción o de un cuerpo de conocimientos antes de poder dominar los demás.
Pero en lugar de los cuatro estadios del desarrollo de Piaget, Jerome Bruner habla de tres modelos de aprendizaje: enactivo, icónico y simbólico. En el modelo enactivo de aprendizaje se aprende haciendo cosas, actuando, imitando y manipulando objetos. Es este el modelo que usan con mayor frecuencia los niños pequeños. A decir verdad, es prácticamente la única forma en que un niño puede aprender en el estadio senso-motor. No obstante, también los adultos suelen usar este modelo cuando intentan aprender tareas psicomotoras complejas u otros procesos complejos. No cabe duda de que el arte del ballet, el dominio de los procedimientos parlamentarios o la práctica en la dirección de un coro se facilitarán si se hace lo mismo que otras personas que se dedican a estas actividades. Los profesores pueden inducir a los estudiantes a usar este modelo de aprendizaje proporcionándoles demostraciones y ofreciéndoles materiales pertinentes, así como actividades de representación de roles, modelos y ejemplos de conductas.
El modelo icónico de aprendizaje implica el uso de imágenes o dibujos. Adquiere una importancia creciente a medida que el niño crece y se le insta a aprender conceptos y principios no demostrables fácilmente. Así, por ejemplo, los conocimientos sobre países extranjeros, las vidas de personajes famosos y la literatura dramática no se aprenden normalmente por medio del modelo enactivo.
Machine Learning ist eine Art von Software-Entwicklung, bei der man nicht direkt Code schreibt, sondern ein Modell anhand von Daten trainiert. Das kann in Situationen von Vorteil sein, in denen man keinen passenden Code schreiben kann oder dieser extrem komplex werden würde. TensorFlow ist das bekannteste Framework im Bereich Neuronaler Netzwerke mit dem man solche Modell erzeugen und nutzen kann. TensorFlow.js (https://js.tensorflow.org/api/latest/) implementiert die volle API von TensorFlow mit JavaScript und erlaubt sowohl die Ausführung, als auch das Training von Neuronalen Netzwerken auf jeder GPU.
Im ersten Teil des Workshops werden wir ein Modell zur Bilderkennung in einer grafischen Webanwendung trainieren und in einer eigenen Anwendung zum Laufen bringen. Hier geht es um die Grundlagen von Machine Learning und den Teil der TensorFlow.js API zum Ausführen eines Modells.
Im zweiten Teil werden wir ein eigenes Modell mit der TensorFlow.js API trainieren und als Teil einer JS-Anwendung integrieren.
Es sind keine Vorkenntnisse nötig und zur Teilnahme wird lediglich eine beliebige IDE zur Entwicklung von JavaScript benötigt.
Die Aufgabe eines Product Owners ist es, Product-Backlog-Einträge klar zu formulieren und sicherzustellen, dass das Umsetzungsteam dieser Einträge, meist User Stories, im erforderlichen Maße versteht.
Wie kann eine User Story in diesen Zeiten noch immer als „eine Einladung zum Gespräch“ angesehen werden? Muss gerade jetzt genauer denn je auf die Qualität der Product-Backlog-Einträge geachtet werden, um weniger kommunizieren zu müssen? Und wie geht man als PO damit um, dass Informationen durch das verteilte Arbeiten nicht alle aus dem Umsetzungsteam gleichzeitig erreichen?
Diese und eure weiteren Fragen wollen wir in diesem online Treffen gemeinsam beantworten.
Was Sie zu Lessons Learned und Retrospektiven wissen müssen –der KVP im Proje...AnnaPauels
Lessons Learned unterstützen im klassischen Projektmanagement Projektleiter und PMO dabei, aus
vergangenen Projekten für die Zukunft zu lernen. Sie helfen Fehler zu vermeiden, Risiken zu verringern, Chancen zu nutzen und letztlich die Projektqualität zu steigern. Im agilen Umfeld heißt dieses Vorgehen Retrospektive und ist ein Meeting von Teammitgliedern, Scrum Master sowie Product Owner am Ende eines Sprints.
In diesem Webinar lernen Sie, wie Sie Lessons Learned und Retrospektiven erfolgreich durchführen. Was sind die Stolperfallen? Wie vermeiden Sie diese? Wie gewinnen Sie den optimalen Nutzen der Erkenntnisse für die Zukunft? Welche Rolle kann das PMO bei der Verbesserung der Prozesse spielen?
Ein Webinar für PMO, Projektmanager, Entscheider, Scrum Master und Product Owner, die ihr Projektmanagement professionalisieren und so Projekte künftig erfolgreicher abschließen wollen.
Design Pattern Libraries, Aufzucht und PflegeWolf Brüning
Die Präsentation als Artikel: http://www.produktbezogen.de/bauanleitung-pattern-library-1/
An english version is available here: http://de.slideshare.net/WolfBruening/how-to-build-the-perfect-pattern-libraryy
Bottom-up anstatt Top-down: Wie man eine einheitliche Architektur bei vielfäl...Stephan Volmer
Ein bekanntes Szenario in IT-Abteilungen größerer Unternehmen ist die Entwicklung vieler fachlich unterschiedlicher Applikationen auf einer gemeinsamen technischen Basis. Im Lebenszyklus dieser Applikationen sind oft unterschiedliche Teams für Entwicklung und Wartung zuständig. Um dennoch eine effiziente Arbeit gewährleisten zu können, werden die Applikationen gerne auf ein Framework aufgesetzt, das vor Beginn der eigentlichen Applikationsentwicklung in einem eigenen Projekt erstellt wird. Solche Projekte sind teuer und zeitaufwändig. Sie erzeugen keinen direkten Mehrwert für das Geschäft des Unternehmens. Außerdem besteht die Gefahr, dass sie den tatsächlichen Anforderungen bei der Entwicklung der eigentlichen Applikationen nicht gerecht werden.
Ein anderer Ansatz ist es, aus der Entwicklung einer oder mehrerer Geschäftsapplikationen inkrementell-iterativ wiederverwendbare Artefakte in Form eines Architektur-Baukastens zu erzeugen. Der Vortrag zeigt, wie sich mit dieser Vorgehensweise die Ramp-Up-Zeit für neue Projekte von fünf Monaten auf fünf Minuten verkürzen lässt. Sie wissen nach dem Vortrag wie das geht!
Diese Präsentation leitet ein Coding-Dojo ein.
Die Folien dienen der Motivation und der Einordnung der Bedeutung des Testens in der Softwareentwicklung.
Die Präsentation beschreibt ein pragmatisches Vorgehen für Usability-Tests. Es werden praktische Hinweise gegeben, wie einfache Usability-Tests inhaus durchgeführt werden können
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!Benjamin Schmid
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
Eine süffisante, praxisnahe Reise durch die Fallstricke der Softwareentwicklung
Wie können Workshops in Zeiten von COVID-19 stattfinden?
Diese Frage ist mir die letzten Tage häufiger begegnet. Ich habe ein paar meiner Gendanken aufgeschrieben. Freue mich über weitere Anregungen.
www.opitz-consulting.com
Zu einem guten Gericht gehören gute Zutaten. So ist es auch mit einer Continuous-Delivery-Umgebung.
Was macht eine gute Developer Experience aus? Aus welchen Zutaten bestehen moderne Continuous-Delivery-Umgebungen? Wir schauen uns an, welche Zutaten man braucht und durch welche Produkte sich diese abdecken lassen.
An welchen Qualitätsattributen müssen sich CD-Plattformarchitekturen messen lassen?
So wie man aus den gleichen Zutaten Gerichte für die unterschiedlichen Geschmäcker bauen kann, so kann man auch unterschiedliche Entwicklerkulturen bedienen.
Lernen Sie, wie Sie das Rezept für ihren Lieblingsstack finden können.
Slides from the Softwerkskammer Chemnitz meetup on Tuesday, 14th of September on
- chaos engineering
- software resilience
- resilience patterns
- execution of chaos experiments
- creation of chaos backlog
- finding weaknesses in your service landscape
- dark debt
- grey failure
Was Software-Entwickler von der Raumfahrt lernen könnenRamon Anger
Das ist das Slidedeck aus dem Meetup der Softwerkskammer Chemnitz vom 12.01.2021 zum Thema "Was Software-Entwickler von der Raumfahrt lernen können". Die Slides setzen sich mit Software-, Prozess- und Bedienfehlern in der Raumfahrt auseinander und zeigen Berührungspunkte zur Software-Entwicklung auf.
Mob Programming - Ein ErfahrungsberichtRamon Anger
Slides der ersten Meetup Session der Softwerkskammer Chemnitz am 17.03.2020.
In der Session erfahrt ihr einiges über Mob Programming, Remote Mob Programming, wie ihr den Flow beim Mobben aufrecht erhalten könnt, wie ihr eure Chefs davon überzeugen könnt, Mob Programming durchzuführen und wie im Idealfall euer Arbeitsplatz für gemeinsame Mobbing Sessions aussehen sollte.
Where are all transactions gone? Was in_der_cloud_alles_verboten_istRamon Anger
Mein Vortrag auf der OOP 2015
Where all the transactions gone?
Was in der Cloud alles verboten ist.
Gegenstand des Vortrags sind neun Dinge, die in der Cloud im Gegensatz zu inhouse-Anwendungen grundlegend anders sind. Darüber hinaus geht der Vortrag kurz auf DevOps für die Cloud und Organisation für die Cloud ein.
Ursprünglich hat mein Kollege Marc Bauer den Vorschlag eingereicht, hatte dann aber leider keine Möglichkeit, den Vortrag selbst zu halten.
Slidedeck meines Vortrags auf den Berlin Days of Softwareengineering am 07.10.2014
Slidedeck of my talk at Berlin Days of Softwareengineering on 2014.10.07
Teaching and Learning Experience Design – der Ruf nach besserer Lehre: aber wie?Isa Jahnke
Der Ruf danach, dass es bessere Lehre geben muss oder das Lehre verbessert werden sollte, ist nicht neu. Es gibt auch schon seit längerer Zeit Rufe danach, dass Lehre der Forschung in Universitäten gleichgestellt werden soll. (Und in den letzten Jahren ist in Deutschland auch einiges an positiven Entwicklungen geschehen, z.B. durch die Aktivitäten des Stifterverbands). Wie kann die Verbesserung der Lehre weitergehen? Fehlt etwas in dieser Entwicklung? Ja, sagt dieser Beitrag, der zum Nachdenken und Diskutieren anregen soll. In diesem Beitrag wird ein forschungsbasierter Ansatz zur Diskussion gestellt. Es wird argumentiert, dass Lehre nur dann besser wird, wenn es mit den Prinzipen der Wissenschaft und Forschung angegangen wird (d.h. gestalten, Daten erheben, auswerten, verbessern). Es benötigt neue Verhaltensregeln oder -prinzipien bei der Gestaltung von Lehrveranstaltungen. Das bedeutet zum Beispiel das Prinzipien der Evidenzbasierung und wissenschaftliche Herangehensweisen im Lehr-Lerndesign als zentrales Fundament etabliert werden sollte. Evidenzbasierung hier meint, folgt man der Logik der Forschung, dass Lehrveranstaltungen als Intervention verstanden werden. Mit dieser Intervention werden Studierende befähigt, bestimmte vorab festgelegte Kompetenzen zu entwickeln. Und die Frage, die sich bei jeder Lehr-Lernveranstaltung dann stellt, ist, ob diese Objectives bzw. Learning Outcomes auch erreicht wurden. Klar ist, dass die subjektive Lehrevaluation der Studierenden oder auch die Notengebnung nicht ausreichen, um diese Frage zu beantworten. Hierfür gibt es eine Reihe von Methoden, die genutzt werden können, z.B. aus dem Bereich des User- / Learning Experience Design. Diese Methoden umfassen unter anderem Usability-Tests, Learner Experience Studies, Pre-/Post-Tests, und Follow-up Interviews. Diese können zur Gestaltung und Erfassung von effektiven, effizienten und ansprechenden digitalen Lerndesigns verwendet (Reigeluth 1983, Honebein & Reigeluth, 2022).
Der Beitrag will die Entwicklung zur Verbesserung von Lehre weiter pushen. Neue Ideen in die Bewegung bringen. Als Gründungsvizepräsidentin der UTN hab ich die Chance, hier ein neues Fundament für eine gesamte Uni zu legen. Wird das Gelingen? Ist dieser Ansatz, den ich hier vorstelle, eine erfolgsversprechende Option dafür? Hier können sich die TeilnehmerInnen an dieser Entwicklung beteiligen.
2. Facilitator
Ramon Anger
• Technischer Architekt und
Agiler Coach bei Capgemini
• Berufserfahrung seit 1997 bei
debis Systemhaus, T-Systems,
TomTom, Materna und Capgemini
• Diplominformatiker (FH),
Master of Computer Science,
Doktorand
• Schneeberg (Erzgebirge)
3. Mythen über Entwickler
• Arbeiten gern allein
• Verlassen nie ihre Komfortzone
• Fokussieren sich nur auf die tägliche Arbeit
• Vernachlässigen Tests
• Haben keine Zeit, Dinge auszuprobieren
• Sind nicht bereit, neue Praktiken zu erlernen
• Denken nicht über Design nach
• Konzentrieren sich darauf, Dinge abzuschließen
• Neigen zu Over-Engineering
• Refaktorisieren nie
Bildquelle: Lisa Spreckelmeyer / pixelio.de
4. In der Realität müssen Entwickler ihre
Fähigkeiten verbessern
• Was bedeutet Praxis für einen Entwickler?
1. Ausprobieren
2. Feedback einholen/geben
3. Wiederholen
• Wieder und wieder und wieder … ganz ohne Druck.
• Aufgaben nicht um jeden Preis abschließen, sondern
verstehen und meistern.
Bildquelle: uschi dreiucker / pixelio.de
5. Coderetreat heißt
• Lernen durch Pair Programming
• Verlassen der Komfortzone
• Ohne Druck der täglichen Arbeit
• Experimentieren
• Neue Praktiken erlernen
• Über Design nachdenken
• Dinge einfach gestalten
• Entwickeln, wenn notwendig
• Refaktorisieren
• Perfekten Code schreiben
Bildquelle: Echino / pixelio.de
6. Coderetreat heißt
• 1 Tag entwickeln
• 6 X 45 Minuten Sessions
• Pair Programming
• Test Driven Development
• Neue Partner in jeder Session
• Verschiedene Bedingungen in jeder Session
• Code löschen
• Jede Sprache mit Testframework ist erlaubt
• Spaß haben
Bildquelle: Echino / pixelio.de
8. Session Ablauf
Warum immer wieder
wiederholen?
• Der Code ist nicht wichtig.
Fokussiere auf den
Schwerpunkt der einzelnen
Sessions
• Wichtig ist, über das Design
nachzudenken
• Konzentriere dich auf TDD
und benenne die Testfälle
richtig
45 Minuten Coding
10 Minuten
Retrospektive
5 Minuten Pause
Bildquelle: Karl-Heinz Laube / pixelio.de
9. Pair Programming
• Warum im Paar entwickeln?
• gemeinsam am Code arbeiten
• beide sollen gleichermaßen lernen
• gut kommunizieren
• weniger Fehler
• kleinere Programme
• disziplinierteres Arbeiten
• Pilot & Navigator
Pilot: Mouse & Tastatur
• Navigator: Vorgehen & Tipps
• Wechsel der Rollen nach jeder Methode
Bildquelle: gabriele Planthaber / pixelio.de
10. Coderetreat Regeln – Test Driven Design
“TDD doesn't drive good design. TDD
gives you immediate feedback about
what is likely to be bad design. If a
test is hard to write, if a test is
non-deterministic, if a test is slow,
then something is wrong with the
design.”
Kent Beck
• Schreibe nur neuen Code, wenn ein
automatisierter Test fehlgeschlagen
ist
• Beseitige Duplikate
Bildquelle: https://commons.wikimedia.org/wiki/File:Living_Crash_Test_Dummies_2.jpeg
11. Coderetreat Regeln – Einfaches Design
Das Team passt das Design der
Lösung exakt an die beabsichtigte
Funktionalität des Systems an.
1.Alle Tests sind erfolgreich
2.Es gibt keine Duplikate im Code
3.Code tut, was er ausdrückt
4.So wenig Code wie möglich
In dieser Reihenfolge.
Bildquelle: Rainer Sturm / pixelio.de
12. Session Regeln – Neue Partner in jeder
Session
• Warum sollen die Paare tauschen?
• voneinander lernen – neue Sicht- und Arbeitsweisen
und Lösungswege
• mit veränderten, ungewohnten Rahmenbedingungen
umgehen lernen
• aufeinander einstellen
Bildquelle: Matthias Preisinger / pixelio.de
13. Session Regeln - Code löschen
• Warum soll ich den Code löschen?
• Es geht um dich, aber Du bist nicht dein Code
• Du sollst Erfahrung sammeln, nicht die Aufgabe
abschließen
• Versuche langsam zu arbeiten und dich darauf zu
konzentrieren, besser zu werden
Bildquelle: Dirk Kruse / pixelio.de
14. Coderetreat – Historie
• Die Idee wurde auf der CodeMash Conference 2009 das erste Mal verbreitet.
• Idee zum Coderetreat kam von
• Gary Bernhardt
• Patrick Welsh
• Nayan Hajratwala
• Corey Haines
• Fokus
• Wiederholbar
• Intensiver ganzer Tag
• Grundlagen der Programmierung praktizieren
15. Game of Life
• Game of Life ist ein zellulärer Automat
• der 1970 vom Mathematiker John Conway entwickelt wurde.
• Game of Life wird ohne Spieler gespielt.
• Man erzeugt einen initialen Zustand
• und beobachtet, wie er sich entwickelt.
16. Game of Life - Realität
• Die Realität des Game of Life ist ein unendlich großes zweidimensionales Feld
quadratischer Zellen. Jede Zelle hat zwei mögliche Zustände – tot oder lebendig.
17. Game of Life – Regeln
• In jeder Generation interagiert jede Zelle nach den folgenden drei Regeln mit
ihren acht Nachbarzellen.
18. Game of Life – Regel eins
• Eine tote Zelle mit genau drei lebendigen Nachbarn wird lebendig.
19. Game of Life – Regel zwei
• Eine lebendige Zelle mit zwei oder drei lebendigen Nachbarn bleibt in der
nächsten Generation lebendig
20. Game of Life – Regel drei
• In allen anderen Situationen stirbt die Zelle an Einsamkeit oder Einengung.
21. Game of Life – Regeln
• Eine lebendige Zelle mit zwei oder drei lebendigen Nachbarn bleibt in der
nächsten Generation lebendig
• Eine tote Zelle mit genau drei lebendigen Nachbarn wird lebendig.
• In allen anderen Situationen stirbt die Zelle an Einsamkeit oder Einengung.
22. Game of Life - Hintergrund
• Game of Life ist ein Beispiel für veränderndes Verhalten.
• Das Verhalten des Systems als Ganzes kann nur mit einem Blick auf das Verhalten
einzelner Zellen des Systems nicht vorhergesagt werden.
Quelle: http://en.wikipedia.org/wiki/File:Gospers_glider_gun.gif
23. Coderetreat – Ziel
• Das Ziel eines Coderetreat ist es nicht, das Game of Life
vollständig zu implementieren, sondern die mit den
Sessions verbundenen Praktiken so gut und so einfach
wie möglich umzusetzen …
• … und Spaß haben
Bildquelle: Dirk Kruse / pixelio.de
24. Coderetreat – Bei Fragen
bitte fragen
Bildquelle: http://farm5.staticflickr.com/4125/5159595678_7ff93e58b3_z.jpg
25. Session 1 – Warm-up Session
– Conways Game of Life
• kennenlernen, verstehen und ausprobieren
• Spiel und Regeln kennenlernen
• TDD, Pair Programming und einfaches Design praktizieren
Bildquelle: NicoLeHe / pixelio.de
26. Retrospektive – Wie gut ist die erste
Session gelaufen?
• Wie gut ist das Hineindenken in das Game of Life gelungen?
• Wie leicht ist die Nutzung von TDD gefallen?
• Wie leicht ist es, zuerst den Testfall und dann den Code zu schreiben?
• Welchen Eindruck hat Pair Programming hinterlassen?
• Wie leicht fällt es, einfaches Design zu nutzen?
• Wie effektiv war die erste Session?
• Wie einfach war es, verständlichen Code zu schreiben?
• Was hätte besser/einfacher sein können?
• Was soll in der zweiten Session anders laufen?
Bildquelle: http://commons.wikimedia.org/wiki/File:Bugs_January_2007-1.jpg
27. Session 2 – Keine Methode hat einen
Rückgabewert
• Keine der verwendeten Methoden darf einen Rückgabewert haben
• Testfälle müssen den inneren Zustand einer Klasse prüfen
• Diese Praktik ist ein Anti-Pattern für Objektorientierte Programmierung
• Sie soll Teilnehmern bewusst machen, dass diese Vorgehensweise die
Testbarkeit von Code behindert
Bildquelle: Rainer Sturm / pixelio.de
28. Session 3 – Evil muted Coder
• Der erste Kollege schreibt einen Test
• Der zweite Kollege schreibt Code, der den Test gerade so erfüllt
• Der erste Kollege passt den Test so an, dass der zweite den Code verbessern
muss …
• Wechselspiel so lange, bis der Testfall gut genug ist, dass er wirklich die
erwartete Funktionalität testet
• Viele Tests in der Realität testen nichts
• Die Session soll verdeutlichen, wie schwer es ist, gute, aussagekräftige Tests
zu schreiben
Bildquelle: Rainer Sturm / pixelio.de
30. Session 4 – Spielfeld mit Grenze
• Conways Game of Life geht von einem zwei-dimensionalen Spielfeld ohne
Abgrenzung aus
• In dieser Praktik werden Grenzen und das Verhalten der Zellen an diesen
Grenzen berücksichtigt
• Die Begrenzung des Spielfelds führt zu einem veränderten Verhalten des
Systems und einer damit verbundenen veränderten Testmethodik
Bildquelle: Marc Holzapfel / pixelio.de
31. Session 5 – Statusbasiertes Testen
• Mit Fokus auf einzelne Objekte oder Methoden wird geprüft, ob
angenommene Eingangsparameter zu erwarteten Ausgangsparametern
führen
• Unit-Tests werden häufig statusbasiert durchgeführt und vernachlässigen den
übergreifenden Zusammenhang des Codes
• Mit dieser Praktik sollen den Teilnehmern die Grenzen dieses Ansatzes
bewusst gemacht werden
Bildquelle: Dieter Schütz / pixelio.de
32. Session 6 – Interaktionsbasiertes Testen
• Fokus ist Interaktion von Objekten miteinander
• Die Granularität der Tests ist gröber als beim Statusbasierten Testen und
kann als eine einfache Form des Integrationstests interpretiert werden
• Der Fokus liegt weniger auf der einzelnen Methode
• Unit-Tests werden für Integrations- bzw. Akzeptanztests verwendet
Bildquelle: Karl-Heinz Laube / pixelio.de
33. Retrospektive / Abschluss
• Was hast du heute gelernt?
• Was hat dich heute überrascht?
• Was wirst du ab morgen anders/besser machen?
Bildquelle: wobigrafie / pixelio.de